aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss')
-rw-r--r--Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss357
1 files changed, 357 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss b/Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss
new file mode 100644
index 00000000..1870f263
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/installer/install-multi-arch.iss
@@ -0,0 +1,357 @@
+; 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;
+
+