mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
252 lines
11 KiB
Plaintext
252 lines
11 KiB
Plaintext
#define AppName "ScummVM"
|
|
|
|
[Setup]
|
|
AppCopyright=2017
|
|
AppName={#AppName}
|
|
AppVersion=@VERSION@
|
|
AppVerName={#AppName} @VERSION@
|
|
AppPublisher=The ScummVM Team
|
|
AppPublisherURL=http://www.scummvm.org/
|
|
AppSupportURL=http://www.scummvm.org/
|
|
AppUpdatesURL=http://www.scummvm.org/
|
|
DefaultDirName={pf}\{#AppName}
|
|
DefaultGroupName={#AppName}
|
|
AllowNoIcons=true
|
|
AlwaysUsePersonalGroup=false
|
|
EnableDirDoesntExistWarning=false
|
|
Compression=lzma
|
|
OutputDir=C:\{#AppName}
|
|
OutputBaseFilename=scummvm-win32
|
|
DisableStartupPrompt=true
|
|
AppendDefaultDirName=false
|
|
SolidCompression=true
|
|
DirExistsWarning=no
|
|
SetupIconFile=graphics\scummvm-install.ico
|
|
WizardImageFile=graphics\left.bmp
|
|
ShowLanguageDialog=yes
|
|
LanguageDetectionMethod=uilanguage
|
|
PrivilegesRequired=none
|
|
|
|
; This privilege escalation code comes from
|
|
; https://stackoverflow.com/a/35435534/252087
|
|
|
|
#define InnoSetupReg \
|
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\" + AppName + "_is1"
|
|
#define InnoSetupAppPathReg "Inno Setup: App Path"
|
|
|
|
[Code]
|
|
function IsWinVista: Boolean;
|
|
begin
|
|
Result := (GetWindowsVersion >= $06000000);
|
|
end;
|
|
|
|
function IsElevated: Boolean;
|
|
begin
|
|
Result := IsAdminLoggedOn or IsPowerUserLoggedOn;
|
|
end;
|
|
|
|
function HaveWriteAccessToApp: Boolean;
|
|
var
|
|
FileName: string;
|
|
begin
|
|
FileName := AddBackslash(WizardDirValue) + 'writetest.tmp';
|
|
Result := SaveStringToFile(FileName, 'test', False);
|
|
if Result then
|
|
begin
|
|
Log(Format(
|
|
'Have write access to the last installation path [%s]', [WizardDirValue]));
|
|
DeleteFile(FileName);
|
|
end
|
|
else
|
|
begin
|
|
Log(Format('Does not have write access to the last installation path [%s]', [
|
|
WizardDirValue]));
|
|
end;
|
|
end;
|
|
|
|
procedure ExitProcess(uExitCode: UINT);
|
|
external 'ExitProcess@kernel32.dll stdcall';
|
|
function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string;
|
|
lpParameters: string; lpDirectory: string; nShowCmd: Integer): THandle;
|
|
external 'ShellExecuteW@shell32.dll stdcall';
|
|
|
|
function Elevate: Boolean;
|
|
var
|
|
I: Integer;
|
|
RetVal: Integer;
|
|
Params: string;
|
|
S: string;
|
|
begin
|
|
{ Collect current instance parameters }
|
|
for I := 1 to ParamCount do
|
|
begin
|
|
S := ParamStr(I);
|
|
{ Unique log file name for the elevated instance }
|
|
if CompareText(Copy(S, 1, 5), '/LOG=') = 0 then
|
|
begin
|
|
S := S + '-elevated';
|
|
end;
|
|
{ Do not pass our /SL5 switch }
|
|
if CompareText(Copy(S, 1, 5), '/SL5=') <> 0 then
|
|
begin
|
|
Params := Params + AddQuotes(S) + ' ';
|
|
end;
|
|
end;
|
|
|
|
{ ... and add selected language }
|
|
Params := Params + '/LANG=' + ActiveLanguage;
|
|
|
|
Log(Format('Elevating setup with parameters [%s]', [Params]));
|
|
RetVal := ShellExecute(0, 'runas', ExpandConstant('{srcexe}'), Params, '', SW_SHOW);
|
|
Log(Format('Running elevated setup returned [%d]', [RetVal]));
|
|
Result := (RetVal > 32);
|
|
{ if elevated executing of this setup succeeded, then... }
|
|
if Result then
|
|
begin
|
|
Log('Elevation succeeded');
|
|
{ exit this non-elevated setup instance }
|
|
ExitProcess(0);
|
|
end
|
|
else
|
|
begin
|
|
Log(Format('Elevation failed [%s]', [SysErrorMessage(RetVal)]));
|
|
end;
|
|
end;
|
|
|
|
procedure InitializeWizard;
|
|
var
|
|
S: string;
|
|
Upgrade: Boolean;
|
|
begin
|
|
Upgrade :=
|
|
RegQueryStringValue(HKLM, '{#InnoSetupReg}', '{#InnoSetupAppPathReg}', S) or
|
|
RegQueryStringValue(HKCU, '{#InnoSetupReg}', '{#InnoSetupAppPathReg}', S);
|
|
|
|
{ elevate }
|
|
|
|
if not IsWinVista then
|
|
begin
|
|
Log(Format('This version of Windows [%x] does not support elevation', [
|
|
GetWindowsVersion]));
|
|
end
|
|
else
|
|
if IsElevated then
|
|
begin
|
|
Log('Running elevated');
|
|
end
|
|
else
|
|
begin
|
|
Log('Running non-elevated');
|
|
if Upgrade then
|
|
begin
|
|
if not HaveWriteAccessToApp then
|
|
begin
|
|
Elevate;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
if not Elevate then
|
|
begin
|
|
WizardForm.DirEdit.Text := ExpandConstant('{localappdata}\{#AppName}');
|
|
Log(Format('Falling back to local application user folder [%s]', [
|
|
WizardForm.DirEdit.Text]));
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
[Languages]
|
|
Name: en; MessagesFile: compiler:Default.isl
|
|
Name: br; MessagesFile: compiler:Languages\BrazilianPortuguese.isl
|
|
Name: ca; MessagesFile: compiler:Languages\Catalan.isl
|
|
Name: cz; MessagesFile: compiler:Languages\Czech.isl
|
|
Name: da; MessagesFile: compiler:Languages\Danish.isl
|
|
Name: fr; MessagesFile: compiler:Languages\French.isl
|
|
Name: de; MessagesFile: compiler:Languages\German.isl
|
|
Name: hu; MessagesFile: compiler:Languages\Hungarian.isl
|
|
Name: it; MessagesFile: compiler:Languages\Italian.isl
|
|
Name: nb; MessagesFile: compiler:Languages\Norwegian.isl
|
|
Name: pl; MessagesFile: compiler:Languages\Polish.isl
|
|
Name: ru; MessagesFile: compiler:Languages\Russian.isl
|
|
Name: es; MessagesFile: compiler:Languages\Spanish.isl
|
|
Name: se; MessagesFile: compiler:Languages\Swedish.isl
|
|
|
|
[Icons]
|
|
Name: {group}\{cm:UninstallProgram, ScummVM}; Filename: {uninstallexe}
|
|
Name: {group}\ScummVM; Filename: {app}\scummvm.exe; WorkingDir: {app}; Comment: scummvm; Flags: createonlyiffileexists; IconIndex: 0
|
|
Name: {group}\ScummVM (noconsole); Filename: {app}\scummvm.exe; Parameters: "--no-console"; WorkingDir: {app}; Comment: scummvm; Flags: createonlyiffileexists; IconIndex: 0; Languages: not de
|
|
Name: {group}\ScummVM (ohne Konsolenfenster); Filename: {app}\scummvm.exe; Parameters: "--no-console"; WorkingDir: {app}; Comment: scummvm; Flags: createonlyiffileexists; IconIndex:0; Languages: de
|
|
Name: {group}\Authors; Filename: {app}\AUTHORS.txt; WorkingDir: {app}; Comment: AUTHORS; Flags: createonlyiffileexists; Languages: not de
|
|
Name: {group}\Mitwirkende; Filename: {app}\AUTHORS.txt; WorkingDir: {app}; Comment: AUTHORS; Flags: createonlyiffileexists; Languages: de
|
|
Name: {group}\Copying; Filename: {app}\COPYING.txt; WorkingDir: {app}; Comment: COPYING; Flags: createonlyiffileexists
|
|
Name: {group}\Copying.BSD; Filename: {app}\COPYING.BSD.txt; WorkingDir: {app}; Comment: COPYING.BSD; Flags: createonlyiffileexists
|
|
Name: {group}\Copying.FREEFONT; Filename: {app}\COPYING.FREEFONT.txt; WorkingDir: {app}; Comment: COPYING.FREEFONT; Flags: createonlyiffileexists
|
|
Name: {group}\Copying.LGPL; Filename: {app}\COPYING.LGPL.txt; WorkingDir: {app}; Comment: COPYING.LGPL; Flags: createonlyiffileexists
|
|
Name: {group}\Copyright; Filename: {app}\COPYRIGHT.txt; WorkingDir: {app}; Comment: COPYRIGHT; Flags: createonlyiffileexists
|
|
;NEWS
|
|
Name: {group}\News; Filename: {app}\NEWS.txt; WorkingDir: {app}; Comment: NEWS; Flags: createonlyiffileexists; Languages: not de
|
|
Name: {group}\Neues; Filename: {app}\NEUES.txt; WorkingDir: {app}; Comment: NEUES; Flags: createonlyiffileexists; Languages: de
|
|
;QUICKSTART
|
|
Name: {group}\Schnellstart; Filename: {app}\Schnellstart.txt; WorkingDir: {app}; Comment: Schnellstart; Flags: createonlyiffileexists; Languages: de
|
|
Name: {group}\InicioRapido; Filename: {app}\InicioRapido.txt; WorkingDir: {app}; Comment: InicioRapido; Flags: createonlyiffileexists; Languages: es
|
|
Name: {group}\DemarrageRapide; Filename: {app}\DemarrageRapide.txt; WorkingDir: {app}; Comment: DemarrageRapide; Flags: createonlyiffileexists; Languages: fr
|
|
Name: {group}\GuidaRapida; Filename: {app}\GuidaRapida.txt; WorkingDir: {app}; Comment: GuidaRapida; Flags: createonlyiffileexists; Languages: it
|
|
Name: {group}\HurtigStart; Filename: {app}\HurtigStart.txt; WorkingDir: {app}; Comment: HurtigStart; Flags: createonlyiffileexists; Languages: nb
|
|
Name: {group}\Snabbstart; Filename: {app}\Snabbstart.txt; WorkingDir: {app}; Comment: Snabbstart; Flags: createonlyiffileexists; Languages: se
|
|
;README
|
|
Name: {group}\Readme; Filename: {app}\README.txt; WorkingDir: {app}; Comment: README; Flags: createonlyiffileexists; Languages: not (cz or de or se)
|
|
Name: {group}\PrectiMe; Filename: {app}\PrectiMe.txt; WorkingDir: {app}; Comment: PrectiMe; Flags: createonlyiffileexists; Languages: cz
|
|
Name: {group}\Liesmich; Filename: {app}\LIESMICH.txt; WorkingDir: {app}; Comment: LIESMICH; Flags: createonlyiffileexists; Languages: de
|
|
Name: {group}\LasMig; Filename: {app}\LasMig.txt; WorkingDir: {app}; Comment: LasMig; Flags: createonlyiffileexists; Languages: se
|
|
|
|
Name: {group}\Saved Games\Migrate Saved Games; Filename: {app}\migration.bat; WorkingDir: {app}; Comment: Migrate Saved Games; IconIndex: 0; MinVersion: 0, 1; Languages: not de
|
|
Name: {group}\Spielstände\Spielstände migrieren; Filename: {app}\migration.bat; WorkingDir: {app}; Comment: Spielstände migrieren; IconIndex: 0; MinVersion: 0, 1; Languages: de
|
|
Name: {group}\Saved Games\Saved Games (old default); Filename: {app}; WorkingDir: {app}; Comment: Saved Games (old default); IconIndex: 0; MinVersion: 0, 1; Languages: not de
|
|
Name: {group}\Spielstände\Spielstände (alter Standard); Filename: {app}; WorkingDir: {app}; Comment: Spielstände (alter Standard); IconIndex: 0; MinVersion: 0, 1; Languages: de
|
|
Name: {group}\Saved Games\Saved Games (new default); Filename: {userappdata}\ScummVM\Saved Games; WorkingDir: {userappdata}\ScummVM\Saved Games; Comment: Saved Games (new default); IconIndex: 0; MinVersion: 0, 1; Languages: not de
|
|
Name: {group}\Spielstände\Spielstände; Filename: {userappdata}\ScummVM\Saved Games; WorkingDir: {userappdata}\ScummVM\Saved Games; Comment: Spielstände; IconIndex: 0; MinVersion: 0, 1; Languages: de
|
|
|
|
[Run]
|
|
Filename: {app}\ScummVM.exe; Flags: nowait skipifdoesntexist postinstall skipifsilent
|
|
;Creates a symbolic link for standard save games area, under Windows Vista/7
|
|
Filename: {cmd}; Parameters: "/c ""mklink /d ""%userprofile%\Saved Games\ScummVM"" ""%appdata%\ScummVM\Saved games"" "" "; MinVersion: 0, 6.1
|
|
|
|
[UninstallDelete]
|
|
Type: files; Name: {app}\ISTool.url
|
|
|
|
[Dirs]
|
|
Name: "{userappdata}\ScummVM"; MinVersion: 0, 1
|
|
Name: "{userappdata}\ScummVM\Saved Games"; MinVersion: 0, 1
|
|
|
|
[Files]
|
|
Source: AUTHORS.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: COPYING.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: COPYING.BSD.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: COPYING.FREEFONT.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: COPYING.LGPL.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: COPYRIGHT.txt; DestDir: {app}; Flags: ignoreversion
|
|
;NEWS
|
|
Source: NEWS.txt; DestDir: {app}; Flags: ignoreversion; Languages: not de
|
|
Source: doc/de/NEUES.txt; DestDir: {app}; Flags: ignoreversion; Languages: de
|
|
;QUICKSTART
|
|
Source: doc/de/Schnellstart.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: de
|
|
Source: doc/es/InicioRapido.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: es
|
|
Source: doc/fr/DemarrageRapide.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: fr
|
|
Source: doc/it/GuidaRapida.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: it
|
|
Source: doc/no-nb/HurtigStart.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: nb
|
|
Source: doc/se/Snabbstart.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: se
|
|
;README
|
|
Source: README.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: not (cz or de or se)
|
|
Source: doc/cz/PrectiMe.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: cz
|
|
Source: doc/de/LIESMICH.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: de
|
|
Source: doc/se/LasMig.txt; DestDir: {app}; Flags: ignoreversion isreadme; Languages: se
|
|
Source: README-SDL.txt; DestDir: {app}; Flags: ignoreversion
|
|
Source: scummvm.exe; DestDir: {app}; Flags: ignoreversion
|
|
Source: SDL2.dll; DestDir: {app}; Flags: replacesameversion
|
|
;Source: SDL2_net.dll; DestDir: {app}; Flags: replacesameversion
|
|
;Source: WinSparkle.dll; DestDir: {app}; Flags: replacesameversion
|
|
;Migration script for saved games in Windows NT4 onwards
|
|
Source: migration.bat; DestDir: {app}; Flags: ignoreversion; MinVersion: 0, 1
|
|
Source: migration.txt; DestDir: {app}; Flags: ignoreversion; MinVersion: 0, 1
|