mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-03 22:01:39 +00:00
117 lines
3.6 KiB
Plaintext
117 lines
3.6 KiB
Plaintext
; --- 1. PREPROCESSOR DEFINITIONS ---
|
|
#define AppVersion GetEnv("GAMVERSION")
|
|
#if AppVersion == ""
|
|
#define AppVersion "7.0.0"
|
|
#endif
|
|
|
|
; Pull architecture directly from GitHub Actions environment variable
|
|
#define RunnerArch GetEnv("RUNNER_ARCH")
|
|
|
|
[Setup]
|
|
; --- 2. CORE APPLICATION INFO ---
|
|
AppId={{D86B52B2-EFE9-4F9D-8BA3-9D84B9B2D319}
|
|
AppName=GAM7
|
|
AppVersion={#AppVersion}
|
|
AppPublisher=GAM Team - google-apps-manager@googlegroups.com
|
|
DefaultDirName={sd}\GAM7
|
|
LicenseFile=dist\gam\gam7\LICENSE
|
|
PrivilegesRequired=admin
|
|
ChangesEnvironment=yes
|
|
|
|
; Tell Inno Setup to use a custom signtool defined via the command line
|
|
SignTool=gamsigntool
|
|
|
|
; --- 3. COMPRESSION & OPTIMIZATION ---
|
|
Compression=lzma2/ultra64
|
|
SolidCompression=yes
|
|
|
|
; --- 4. DYNAMIC ARCHITECTURE CONFIGURATION ---
|
|
; GitHub Actions RUNNER_ARCH is typically uppercase "ARM64" or "X64"
|
|
#if RunnerArch == "ARM64" || RunnerArch == "arm64"
|
|
ArchitecturesAllowed=arm64
|
|
ArchitecturesInstallIn64BitMode=arm64
|
|
OutputBaseFilename=gam-{#AppVersion}-windows-arm64
|
|
#else
|
|
ArchitecturesAllowed=x64compatible
|
|
ArchitecturesInstallIn64BitMode=x64compatible
|
|
OutputBaseFilename=gam-{#AppVersion}-windows-x86_64
|
|
#endif
|
|
|
|
[Messages]
|
|
; Custom error if an admin tries to run the ARM64 installer on an Intel machine
|
|
#if RunnerArch == "ARM64" || RunnerArch == "arm64"
|
|
WindowsVersionNotSupported=You downloaded the ARM64 version of GAM, but this computer has an Intel or AMD processor.%n%nPlease go back to the release page and download the x86_64 installer instead.
|
|
#endif
|
|
|
|
[Files]
|
|
; --- 5. DYNAMIC FILE INCLUSION ---
|
|
Source: "dist\gam\gam7\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
|
|
|
[Registry]
|
|
; --- 6. PATH ENVIRONMENT VARIABLE ---
|
|
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
|
|
ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; \
|
|
Check: NeedsAddPath(ExpandConstant('{app}'))
|
|
|
|
[Code]
|
|
const
|
|
ERROR_SUCCESS = 0;
|
|
|
|
function MsiEnumRelatedProducts(lpUpgradeCode: string; dwReserved: Integer; iProductIndex: Integer; lpProductBuf: string): Integer;
|
|
external 'MsiEnumRelatedProductsW@msi.dll stdcall';
|
|
|
|
function UninstallWixMSI(): Boolean;
|
|
var
|
|
UpgradeCode: string;
|
|
ProductCode: string;
|
|
ResultCode: Integer;
|
|
begin
|
|
UpgradeCode := '{D86B52B2-EFE9-4F9D-8BA3-9D84B9B2D319}';
|
|
ProductCode := StringOfChar(' ', 39);
|
|
|
|
ResultCode := MsiEnumRelatedProducts(UpgradeCode, 0, 0, ProductCode);
|
|
|
|
if ResultCode = ERROR_SUCCESS then
|
|
begin
|
|
ProductCode := Trim(ProductCode);
|
|
Exec('msiexec.exe', '/x ' + ProductCode + ' /qn /norestart', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
|
end;
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
function InitializeSetup(): Boolean;
|
|
begin
|
|
// --- Architecture Warning for Emulation ---
|
|
#if RunnerArch != "ARM64" && RunnerArch != "arm64"
|
|
if IsArm64() then
|
|
begin
|
|
if MsgBox('Notice: You are installing the Intel (x86_64) build of GAM on an ARM processor.' + #13#10#13#10 +
|
|
'While this will work via Windows emulation, it will perform worse than the native ARM64 version.' + #13#10#13#10 +
|
|
'Do you want to continue with the installation anyway?',
|
|
mbConfirmation, MB_YESNO) = idNo then
|
|
begin
|
|
Result := False;
|
|
Exit;
|
|
end;
|
|
end;
|
|
#endif
|
|
|
|
UninstallWixMSI();
|
|
Result := True;
|
|
end;
|
|
|
|
function NeedsAddPath(Param: string): boolean;
|
|
var
|
|
OrigPath: string;
|
|
begin
|
|
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
|
|
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
|
|
'Path', OrigPath)
|
|
then begin
|
|
Result := True;
|
|
exit;
|
|
end;
|
|
Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0;
|
|
end;
|