123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- ; OpenMPT Install script
- ; https://openmpt.org/
- #define BuildFolder "release\vs2019-win10-static"
- #define BuildFolderLegacyx86 "release\vs2019-win7-static"
- #define BuildFolderLegacyamd64 "release\vs2019-win7-static"
- #define DefaultArchName "x86"
- #define GetAppVersion GetFileProductVersion("..\bin\" + BuildFolder + "\" + DefaultArchName + "\OpenMPT.exe")
- #define GetAppVersionMedium Copy(GetAppVersion, 1, 7)
- #define GetAppVersionShort Copy(GetAppVersion, 1, 4)
- [Setup]
- AlwaysShowComponentsList=no
- AppId={{40c97d3e-7763-4b88-8c6a-0901befee4af}
- AppVerName=OpenMPT {#GetAppVersion}
- AppVersion={#GetAppVersion}
- AppName=OpenMPT
- AppPublisher=OpenMPT
- AppPublisherURL=https://openmpt.org/
- AppSupportURL=https://forum.openmpt.org/
- AppUpdatesURL=https://openmpt.org/
- ArchitecturesInstallIn64BitMode=x64 arm64 ia64
- ChangesAssociations=yes
- Compression=lzma2/ultra64
- ;DefaultDirName={autopf}\OpenMPT
- DefaultDirName={code:CodeGetDefaultDirName|}
- DefaultGroupName=OpenMPT
- DirExistsWarning=auto
- DisableDirPage=auto
- AlwaysShowDirOnReadyPage=yes
- DisableProgramGroupPage=yes
- DisableReadyMemo=no
- DisableWelcomePage=no
- MinVersion=6.1sp1
- OutputDir=.\
- OutputBaseFilename=OpenMPT-{#GetAppVersion}-Setup
- PrivilegesRequired=admin
- PrivilegesRequiredOverridesAllowed=commandline dialog
- SetupIconFile=..\mptrack\res\MPTRACK.ICO
- SolidCompression=yes
- TimeStampsInUTC=yes
- UninstallDisplayIcon={app}\OpenMPT App Icon.ico
- VersionInfoCopyright=Copyright © 2004-2022 OpenMPT Project Developers and Contributors, Copyright © 1997-2003 Olivier Lapicque
- VersionInfoProductTextVersion={#GetAppVersion}
- VersionInfoProductVersion={#GetAppVersion}
- VersionInfoTextVersion={#GetAppVersion}
- VersionInfoVersion={#GetAppVersion}
- WizardImageFile=install-big.bmp
- WizardSmallImageFile=install-small.bmp
- WizardStyle=modern
- [Types]
- Name: "default"; Description: "Default installation"; Flags: iscustom
- [Components]
- Name: "archx86"; Description: "OpenMPT x86"; Types: default; Flags: fixed disablenouninstallwarning
- Name: "archamd64"; Description: "OpenMPT amd64"; Types: default; Flags: fixed disablenouninstallwarning
- Name: "archarm"; Description: "OpenMPT arm"; Types: default; Flags: fixed disablenouninstallwarning
- Name: "archarm64"; Description: "OpenMPT arm64"; Types: default; Flags: fixed disablenouninstallwarning
- [Languages]
- Name: en; MessagesFile: compiler:Default.isl
- [Files]
- ; note: packageTemplate\ contains files specific for the "install package".
- ; for files that are common with the "zip package", use ..\packageTemplate\
- Source: ..\bin\{#BuildFolder}\x86\OpenMPT.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\x86\PluginBridge-x86.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\x86\PluginBridgeLegacy-x86.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\x86\openmpt-lame.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\x86\openmpt-mpg123.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\x86\openmpt-soundtouch.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; MinVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\OpenMPT.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\PluginBridge-x86.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\PluginBridgeLegacy-x86.exe; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\openmpt-lame.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\openmpt-mpg123.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyx86}\x86\openmpt-soundtouch.dll; DestDir: {app}\bin\x86; Flags: ignoreversion; Components: archx86; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\OpenMPT.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\PluginBridge-amd64.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\PluginBridgeLegacy-amd64.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\openmpt-lame.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\openmpt-mpg123.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolder}\amd64\openmpt-soundtouch.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; MinVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\OpenMPT.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\PluginBridge-amd64.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\PluginBridgeLegacy-amd64.exe; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\openmpt-lame.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\openmpt-mpg123.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolderLegacyamd64}\amd64\openmpt-soundtouch.dll; DestDir: {app}\bin\amd64; Flags: ignoreversion; Components: archamd64; OnlyBelowVersion: 10.0
- Source: ..\bin\{#BuildFolder}\arm\OpenMPT.exe; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm\PluginBridge-arm.exe; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm\PluginBridgeLegacy-arm.exe; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm\openmpt-lame.dll; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm\openmpt-mpg123.dll; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm\openmpt-soundtouch.dll; DestDir: {app}\bin\arm; Flags: ignoreversion; Components: archarm
- Source: ..\bin\{#BuildFolder}\arm64\OpenMPT.exe; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: ..\bin\{#BuildFolder}\arm64\PluginBridge-arm64.exe; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: ..\bin\{#BuildFolder}\arm64\PluginBridgeLegacy-arm64.exe; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: ..\bin\{#BuildFolder}\arm64\openmpt-lame.dll; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: ..\bin\{#BuildFolder}\arm64\openmpt-mpg123.dll; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: ..\bin\{#BuildFolder}\arm64\openmpt-soundtouch.dll; DestDir: {app}\bin\arm64; Flags: ignoreversion; Components: archarm64
- Source: "..\mptrack\res\MPTRACK.ICO"; DestName: "OpenMPT App Icon.ico"; DestDir: "{app}"; Flags: ignoreversion
- Source: "..\packageTemplate\OpenMPT File Icon.ico"; DestName: "OpenMPT File Icon.ico"; DestDir: "{app}"; Flags: ignoreversion
- Source: ..\bin\{#BuildFolder}\{#DefaultArchName}\openmpt-wine-support.zip; DestDir: {app}; Flags: ignoreversion
- ; todo: use proper folder
- Source: ..\packageTemplate\ExampleSongs\*.*; DestDir: {app}\ExampleSongs\; Flags: ignoreversion recursesubdirs
- Source: packageTemplate\readme.txt; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\History.txt; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\OpenMPT Manual.chm; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\ReleaseNotesImages\*.*; DestDir: {app}\ReleaseNotesImages\; Flags: ignoreversion
- Source: ..\packageTemplate\Release Notes.html; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\OpenMPT Support and Community Forum.url; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\OpenMPT Issue Tracker.url; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\License.txt; DestDir: {app}; Flags: ignoreversion
- Source: ..\packageTemplate\Licenses\*.*; DestDir: {app}\Licenses; Flags: ignoreversion
- Source: ..\packageTemplate\ExtraKeymaps\*.*; DestDir: {app}\ExtraKeymaps; Flags: ignoreversion
- [Icons]
- Name: {autodesktop}\OpenMPT; Filename: {app}\bin\x86\OpenMPT.exe; Check: CheckDefaultArch('x86')
- Name: {autodesktop}\OpenMPT; Filename: {app}\bin\amd64\OpenMPT.exe; Check: CheckDefaultArch('amd64')
- Name: {autodesktop}\OpenMPT; Filename: {app}\bin\arm\OpenMPT.exe; Check: CheckDefaultArch('arm')
- Name: {autodesktop}\OpenMPT; Filename: {app}\bin\arm64\OpenMPT.exe; Check: CheckDefaultArch('arm64')
- Name: {group}\OpenMPT; Filename: {app}\bin\x86\OpenMPT.exe; Check: CheckDefaultArch('x86')
- Name: {group}\OpenMPT; Filename: {app}\bin\amd64\OpenMPT.exe; Check: CheckDefaultArch('amd64')
- Name: {group}\OpenMPT; Filename: {app}\bin\arm\OpenMPT.exe; Check: CheckDefaultArch('arm')
- Name: {group}\OpenMPT; Filename: {app}\bin\arm64\OpenMPT.exe; Check: CheckDefaultArch('arm64')
- Name: {group}\OpenMPT (x86); Filename: {app}\bin\x86\OpenMPT.exe; Components: archx86
- Name: {group}\OpenMPT (amd64); Filename: {app}\bin\amd64\OpenMPT.exe; Components: archamd64
- Name: {group}\OpenMPT (arm); Filename: {app}\bin\arm\OpenMPT.exe; Components: archarm
- Name: {group}\OpenMPT (arm64); Filename: {app}\bin\arm64\OpenMPT.exe; Components: archarm64
- Name: {group}\Manual; Filename: {app}\OpenMPT Manual.chm
- Name: {group}\Support and Community Forum; Filename: {app}\OpenMPT Support and Community Forum.url
- [Registry]
- #include "filetypes-multi-arch.iss"
- [Run]
- Filename: "{app}\Release Notes.html"; Description: "View Release Notes"; Flags: runasoriginaluser shellexec nowait postinstall skipifsilent
- Filename: {app}\bin\x86\OpenMPT.exe; Parameters: """{code:RandomExampleFile}"""; Description: {cm:LaunchProgram,OpenMPT}; Flags: runasoriginaluser nowait postinstall skipifsilent; Check: CheckDefaultArch('x86')
- Filename: {app}\bin\amd64\OpenMPT.exe; Parameters: """{code:RandomExampleFile}"""; Description: {cm:LaunchProgram,OpenMPT}; Flags: runasoriginaluser nowait postinstall skipifsilent; Check: CheckDefaultArch('amd64')
- Filename: {app}\bin\arm\OpenMPT.exe; Parameters: """{code:RandomExampleFile}"""; Description: {cm:LaunchProgram,OpenMPT}; Flags: runasoriginaluser nowait postinstall skipifsilent; Check: CheckDefaultArch('arm')
- Filename: {app}\bin\arm64\OpenMPT.exe; Parameters: """{code:RandomExampleFile}"""; Description: {cm:LaunchProgram,OpenMPT}; Flags: runasoriginaluser nowait postinstall skipifsilent; Check: CheckDefaultArch('arm64')
- [InstallDelete]
- ; as recommended by Inno Setup manual on [Components]
- Type: files; Name: {app}\bin\x86\OpenMPT.exe
- Type: files; Name: {app}\bin\x86\PluginBridge-x86.exe
- Type: files; Name: {app}\bin\x86\PluginBridgeLegacy-x86.exe
- Type: files; Name: {app}\bin\x86\openmpt-lame.dll
- Type: files; Name: {app}\bin\x86\openmpt-mpg123.dll
- Type: files; Name: {app}\bin\x86\openmpt-soundtouch.dll
- Type: files; Name: {app}\bin\amd64\OpenMPT.exe
- Type: files; Name: {app}\bin\amd64\PluginBridge-amd64.exe
- Type: files; Name: {app}\bin\amd64\PluginBridgeLegacy-amd64.exe
- Type: files; Name: {app}\bin\amd64\openmpt-lame.dll
- Type: files; Name: {app}\bin\amd64\openmpt-mpg123.dll
- Type: files; Name: {app}\bin\amd64\openmpt-soundtouch.dll
- Type: files; Name: {app}\bin\arm\OpenMPT.exe
- Type: files; Name: {app}\bin\arm\PluginBridge-arm.exe
- Type: files; Name: {app}\bin\arm\PluginBridgeLegacy-arm.exe
- Type: files; Name: {app}\bin\arm\openmpt-lame.dll
- Type: files; Name: {app}\bin\arm\openmpt-mpg123.dll
- Type: files; Name: {app}\bin\arm\openmpt-soundtouch.dll
- Type: files; Name: {app}\bin\arm64\OpenMPT.exe
- Type: files; Name: {app}\bin\arm64\PluginBridge-arm64.exe
- Type: files; Name: {app}\bin\arm64\PluginBridgeLegacy-arm64.exe
- Type: files; Name: {app}\bin\arm64\openmpt-lame.dll
- Type: files; Name: {app}\bin\arm64\openmpt-mpg123.dll
- Type: files; Name: {app}\bin\arm64\openmpt-soundtouch.dll
- #include "uninstall-single-arch.iss"
- [Code]
- procedure InitializeWizard();
- begin
- WizardSelectComponents('archx86,!archamd64,!archarm,!archarm64');
- case ProcessorArchitecture() of
- paUnknown:
- begin
- WizardSelectComponents('archx86,!archamd64,!archarm,!archarm64');
- end;
- paX86:
- begin
- WizardSelectComponents('archx86,!archamd64,!archarm,!archarm64');
- end;
- paX64:
- begin
- WizardSelectComponents('archx86,archamd64,!archarm,!archarm64');
- end;
- paIA64:
- begin
- WizardSelectComponents('archx86,!archamd64,!archarm,!archarm64');
- end;
- paARM64:
- begin
- WizardSelectComponents('archx86,archamd64,archarm,archarm64');
- end;
- end;
- end;
- function GetDefaultArch(): String;
- begin
- Result := 'x86';
- case ProcessorArchitecture() of
- paUnknown:
- begin
- Result := 'x86';
- end;
- paX86:
- begin
- Result := 'x86';
- end;
- paX64:
- begin
- Result := 'amd64';
- end;
- paIA64:
- begin
- Result := 'x86';
- end;
- paARM64:
- begin
- Result := 'arm64';
- end;
- end;
- end;
- function CodeGetDefaultArch(Param: String): String;
- begin
- Result := GetDefaultArch();
- end;
- function CheckDefaultArch(Arch: String): Boolean;
- begin
- Result := Arch = GetDefaultArch();
- end;
- function ShouldSkipPage(PageID: Integer): Boolean;
- begin
- Result := False;
- case PageID of
- wpSelectDir:
- begin
- Result := IsAdmin() and HasPreviousSingleArchInstallPath();
- end;
- end;
- case PageID of
- wpSelectComponents:
- begin
- Result := True;
- end;
- end;
- end;
- procedure CurStepChanged(CurStep: TSetupStep);
- begin
- case CurStep of
- ssInstall:
- begin
- if not UninstallSingleArch() then
- begin
- RaiseException('Uninstallation of previous OpenMPT installation failed. Please uninstall manually.');
- end;
- end;
- end;
- end;
- // Picks a random example song file to play
- Function RandomExampleFile(Dummy: String): String;
- var
- Files: TstringList;
- FindRec: TFindRec;
- begin
- Result := '';
- if FindFirst(ExpandConstant('{app}\ExampleSongs\*'), FindRec) then
- try
- Files := TstringList.Create;
- repeat
- if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
- Files.Add(FindRec.Name);
- until not FindNext(FindRec);
- Result := ExpandConstant('{app}\ExampleSongs\') + Files[Random(Files.Count)];
- finally
- FindClose(FindRec);
- end;
- end;
- function CodeGetDefaultDirName(Param: String): String;
- begin
- if IsAdmin() and HasPreviousSingleArchInstallPath() then
- begin
- Result := GetPreviousSingleArchInstallPath();
- end
- else
- begin
- Result := ExpandConstant('{autopf}\OpenMPT');
- end;
- end;
|