171 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ; Script generated by the Inno Setup Script Wizard.
 | |
| ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 | |
| 
 | |
| #define MyAppName "@PROJECT_FULL_NAME@"
 | |
| #define MyAppVersion "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@.@VERSION_TWEAK@"
 | |
| #define MyAppVersionText "@VERSION_STRING@"
 | |
| #define MyAppPublisher "Xaymars Technology Workshop"
 | |
| #define MyAppURL "https://xaymar.com/"
 | |
| #define MyAppCopyright "@PROJECT_COPYRIGHT_YEARS@ @PROJECT_AUTHORS@"
 | |
| 
 | |
| [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.)
 | |
| 
 | |
| ; Application Information
 | |
| AppId={{DE56A03A-C8A4-474B-83B0-CFD270262D38}}
 | |
| AppName={#MyAppName}
 | |
| AppVersion={#MyAppVersion}
 | |
| AppPublisher={#MyAppPublisher}
 | |
| AppPublisherURL={#MyAppURL}
 | |
| AppSupportURL={#MyAppURL}
 | |
| AppUpdatesURL={#MyAppURL}
 | |
| AppMutex={#MyAppName}
 | |
| 
 | |
| ; Versioning
 | |
| VersionInfoProductName={#MyAppName}
 | |
| VersionInfoProductVersion={#MyAppVersion}
 | |
| VersionInfoVersion={#MyAppVersion}
 | |
| VersionInfoProductTextVersion={#MyAppVersionText}
 | |
| VersionInfoTextVersion={#MyAppVersionText}
 | |
| VersionInfoCompany={#MyAppPublisher}
 | |
| VersionInfoCopyright={#MyAppCopyright}
 | |
| VersionInfoDescription={#MyAppName} Setup
 | |
| 
 | |
| ; Architecture (Platform is always Windows)
 | |
| ArchitecturesInstallIn64BitMode=x64 arm64 ia64
 | |
| ArchitecturesAllowed=@ARCH@
 | |
| 
 | |
| ; Wizard Information
 | |
| WizardStyle=modern
 | |
| WizardResizable=yes
 | |
| SetupIconFile="@PROJECT_SOURCE_DIR@/media/icon.ico"
 | |
| 
 | |
| ; Other Information
 | |
| UsePreviousAppDir=yes
 | |
| DefaultDirName={code:GetDefaultDirectory}
 | |
| DefaultGroupName={#MyAppName}
 | |
| AllowNoIcons=yes
 | |
| LicenseFile="@ISS_SOURCE_DIR@/LICENSE"
 | |
| OutputDir="@ISS_PACKAGE_DIR@"
 | |
| OutputBaseFilename=@PACKAGE_NAME@-@_PACKAGE_SUFFIX_OVERRIDE@
 | |
| Compression=lzma2/ultra64
 | |
| SolidCompression=yes
 | |
| LZMAAlgorithm=1
 | |
| 
 | |
| [Languages]
 | |
| Name: "english"; MessagesFile: "compiler:Default.isl"
 | |
| 
 | |
| [Files]
 | |
| Source: "@ISS_FILES_DIR@/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 | |
| Source: "@PROJECT_SOURCE_DIR@/templates/msvc-redist-helper.exe"; DestDir: "{app}"; DestName: "msvc-redist-helper.exe"; Flags: ignoreversion dontcopy noencryption
 | |
| ; 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]
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function FindRegistryKey(): String;
 | |
| begin
 | |
| 	Result := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting('AppId')}_is1');	
 | |
| end;
 | |
| 
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function GetDefaultDirectory(Value: String): String;
 | |
| var
 | |
| 	sInstallPath: String;
 | |
| begin
 | |
| 	// 1. Use the path we were given on call.
 | |
| 	sInstallPath := Value;
 | |
| 
 | |
| 	// 2. If that was empty, try and find it ourselves from the registry.
 | |
| 	if (sInstallPath = '') then
 | |
| 		RegQueryStringValue(HKA64, FindRegistryKey(), 'InstallLocation', sInstallPath);
 | |
| 
 | |
| 	// 2. If empty, try and find the "Local Machine" installation of OBS Studio.
 | |
| 	if (sInstallPath = '') then 
 | |
| 		RegQueryStringValue(HKLM64, 'SOFTWARE\OBS Studio', '', sInstallPath);
 | |
| 
 | |
| 	// 3. If empty, try and find the "Current User" installation of OBS Studio.
 | |
| 	if (sInstallPath = '') then 
 | |
| 		RegQueryStringValue(HKCU64, 'SOFTWARE\OBS Studio', '', sInstallPath);
 | |
| 
 | |
| 	// 4. If empty, try and find the 32-bit "Local Machine" installation of OBS Studio.
 | |
| 	if (sInstallPath = '') then 
 | |
| 		RegQueryStringValue(HKLM32, 'SOFTWARE\OBS Studio', '', sInstallPath);
 | |
| 
 | |
| 	// 5. If empty, try and find the 32-bit "Current User" installation of OBS Studio.
 | |
| 	if (sInstallPath = '') then 
 | |
| 		RegQueryStringValue(HKCU32, 'SOFTWARE\OBS Studio', '', sInstallPath);
 | |
| 
 | |
| 	// 6. If empty, just use the default path.
 | |
| 	if (sInstallPath = '') then 
 | |
| 		sInstallPath := ExpandConstant('{commonpf}\obs-studio');
 | |
| 	
 | |
| 	Result := sInstallPath
 | |
| end;
 | |
| 
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function GetUninstallerPath(): String;
 | |
| var
 | |
| 	sRegistryKey: String;
 | |
| 	sUninstallerPath: String;
 | |
| begin
 | |
| 	sRegistryKey := FindRegistryKey();
 | |
| 
 | |
| 	RegQueryStringValue(HKLM64, sRegistryKey, 'UninstallString', sUninstallerPath);
 | |
| 
 | |
| 	if (sUninstallerPath = '') then
 | |
| 		RegQueryStringValue(HKCU64, sRegistryKey, 'UninstallString', sUninstallerPath);
 | |
| 
 | |
| 	if (sUninstallerPath = '') then
 | |
| 		RegQueryStringValue(HKLM32, sRegistryKey, 'UninstallString', sUninstallerPath);
 | |
| 
 | |
| 	if (sUninstallerPath = '') then
 | |
| 		RegQueryStringValue(HKCU32, sRegistryKey, 'UninstallString', sUninstallerPath);
 | |
| 
 | |
| 	Result := sUninstallerPath;
 | |
| end;
 | |
| 
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function IsUpgrade(): Boolean;
 | |
| begin
 | |
| 	Result := (GetUninstallerPath() <> '');
 | |
| end;
 | |
| 
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function UninstallOldVersion(): Integer;
 | |
| var
 | |
| 	sUninstallerPath: String;
 | |
| 	iResultCode: Integer;
 | |
| begin
 | |
| 	Result := 0;
 | |
| 	sUninstallerPath := GetUninstallerPath();
 | |
| 	if (sUninstallerPath <> '') then begin
 | |
| 		sUninstallerPath := RemoveQuotes(sUninstallerPath);
 | |
| 		if Exec(sUninstallerPath, '/VERYSILENT /NORESTART /SUPPRESSMSGBOXES', '', SW_HIDE, ewWaitUntilTerminated, iResultCode) then begin
 | |
| 			Result := iResultCode
 | |
| 		end else begin
 | |
| 			Result := 1
 | |
| 		end;
 | |
| 	end;
 | |
| end;
 | |
| 
 | |
| // ------------------------------------------------------------------------------------------------------------------ //
 | |
| function PrepareToInstall(var NeedsRestart: Boolean): String;
 | |
| var
 | |
| 	iResultCode: Integer;
 | |
| begin
 | |
| 	// Attempt to remove old version if it exists.
 | |
| 	if (IsUpgrade()) then begin
 | |
| 		UninstallOldVersion();
 | |
| 	end;
 | |
| 
 | |
| 	// Also ensure that we have the necessary prerequisites installed to run the program.
 | |
|     ExtractTemporaryFile('msvc-redist-helper.exe');
 | |
|     Exec(ExpandConstant('{tmp}\msvc-redist-helper.exe'), '2019', '', SW_HIDE, ewWaitUntilTerminated, iResultCode);
 | |
| end;
 |