mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-06-24 05:25:57 -05:00
Default to %ProgramData%\obs-studio\plugins\ on fresh installs. Restore the previously recorded install path on upgrades, so users who installed to a custom location are not silently moved.
120 lines
4.5 KiB
Plaintext
120 lines
4.5 KiB
Plaintext
#define MyAppName "@CMAKE_PROJECT_NAME@"
|
|
#define MyAppVersion "@CMAKE_PROJECT_VERSION@"
|
|
#define MyAppPublisher "@PLUGIN_AUTHOR@"
|
|
#define MyAppURL "@PLUGIN_WEBSITE@"
|
|
#define MyAppId "@UUID_APP@"
|
|
|
|
[Setup]
|
|
; NOTE: The value of AppId uniquely identifies this application.
|
|
; Do not use the same AppId value in installers for other applications.
|
|
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
|
AppId={{{#MyAppId}}
|
|
AppName={#MyAppName}
|
|
AppVersion={#MyAppVersion}
|
|
AppPublisher={#MyAppPublisher}
|
|
AppPublisherURL={#MyAppURL}
|
|
AppSupportURL={#MyAppURL}
|
|
AppUpdatesURL={#MyAppURL}
|
|
DefaultDirName={code:GetDirName}
|
|
DefaultGroupName={#MyAppName}
|
|
OutputBaseFilename={#MyAppName}-{#MyAppVersion}-Windows-Installer
|
|
Compression=lzma
|
|
SolidCompression=yes
|
|
DirExistsWarning=no
|
|
UsePreviousAppDir=no
|
|
SetupIconFile=installer.ico
|
|
UninstallDisplayIcon={code:GetUninstallIconPath}
|
|
DisableDirPage=no
|
|
|
|
[Languages]
|
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
|
|
[Files]
|
|
; Recommended layout - used when installing to %ProgramData%\obs-studio\plugins\
|
|
Source: "..\release\Package\recommended\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: IsRecommendedLayout
|
|
; Legacy layout - used when installing to the OBS installation directory
|
|
Source: "..\release\Package\legacy\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: IsLegacyLayout
|
|
Source: "..\LICENSE"; Flags: dontcopy
|
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
|
|
|
[Icons]
|
|
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
|
|
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
|
|
|
[Code]
|
|
procedure InitializeWizard();
|
|
var
|
|
GPLText: AnsiString;
|
|
Page: TOutputMsgMemoWizardPage;
|
|
begin
|
|
ExtractTemporaryFile('LICENSE');
|
|
LoadStringFromFile(ExpandConstant('{tmp}\LICENSE'), GPLText);
|
|
Page := CreateOutputMsgMemoPage(wpWelcome,
|
|
'License Information', 'Please review the license terms before installing {#MyAppName}',
|
|
'Press Page Down to see the rest of the agreement. Once you are aware of your rights, click Next to continue.',
|
|
String(GPLText)
|
|
);
|
|
end;
|
|
|
|
// Returns true when the selected install directory is under %ProgramData%,
|
|
// meaning the recommended plugin layout should be used.
|
|
function IsRecommendedLayout(): Boolean;
|
|
begin
|
|
Result := Pos(LowerCase(ExpandConstant('{commonappdata}')),
|
|
LowerCase(WizardDirValue())) = 1;
|
|
end;
|
|
|
|
function IsLegacyLayout(): Boolean;
|
|
begin
|
|
Result := not IsRecommendedLayout();
|
|
end;
|
|
|
|
function GetUninstallIconPath(Param: string): string;
|
|
begin
|
|
if IsRecommendedLayout() then
|
|
Result := ExpandConstant('{app}\advanced-scene-switcher\data\res\images\logo.ico')
|
|
else
|
|
Result := ExpandConstant('{app}\data\obs-plugins\advanced-scene-switcher\res\images\logo.ico');
|
|
end;
|
|
|
|
function GetDirName(Value: string): string;
|
|
var
|
|
PrevPath: string;
|
|
UninstallKey: string;
|
|
begin
|
|
Result := ExpandConstant('{commonappdata}\obs-studio\plugins');
|
|
UninstallKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + '{' + '{#MyAppId}' + '}_is1';
|
|
if RegQueryStringValue(HKLM, UninstallKey, 'InstallLocation', PrevPath) and (PrevPath <> '') then
|
|
Result := PrevPath;
|
|
end;
|
|
|
|
// Remove files placed by the legacy installer (obs-plugins/64bit and
|
|
// data/obs-plugins layout) so the plugin is not loaded twice by OBS.
|
|
// Only runs when upgrading from a legacy location to the recommended one.
|
|
procedure RemoveLegacyFiles();
|
|
var
|
|
OldInstallPath: string;
|
|
UninstallKey: string;
|
|
begin
|
|
if not IsRecommendedLayout() then
|
|
Exit;
|
|
UninstallKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + '{' + '{#MyAppId}' + '}_is1';
|
|
if not RegQueryStringValue(HKLM, UninstallKey, 'InstallLocation', OldInstallPath) then
|
|
Exit;
|
|
// Skip if the previous install was already in the recommended location
|
|
if Pos(LowerCase(ExpandConstant('{commonappdata}')), LowerCase(OldInstallPath)) = 1 then
|
|
Exit;
|
|
DeleteFile(OldInstallPath + '\obs-plugins\64bit\advanced-scene-switcher.dll');
|
|
DeleteFile(OldInstallPath + '\obs-plugins\64bit\advanced-scene-switcher.pdb');
|
|
DeleteFile(OldInstallPath + '\obs-plugins\64bit\advanced-scene-switcher-lib.dll');
|
|
DeleteFile(OldInstallPath + '\obs-plugins\64bit\advanced-scene-switcher-lib.pdb');
|
|
DelTree(OldInstallPath + '\obs-plugins\64bit\advanced-scene-switcher-plugins', True, True, True);
|
|
DelTree(OldInstallPath + '\data\obs-plugins\advanced-scene-switcher', True, True, True);
|
|
end;
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
begin
|
|
if CurStep = ssInstall then
|
|
RemoveLegacyFiles();
|
|
end;
|