mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 09:27:59 +00:00
Build MSI installers for Arm Windows.
I expected this to be nightmarish because WiX 3 doesn't know about the Windows on Arm platform at all. Fortunately, it turns out that it doesn't have to: testing on a borrowed machine I find that Windows on Arm's msiexec.exe is quite happy to take MSIs whose platform field in the _SummaryInformation table says "Intel". In fact, that seemed to be _all_ that my test machine would accept: I tried taking the MSI apart with msidump, putting some other value in there (e.g. "Arm64" or "Arm") and rebuilding it with msibuild, and all I got was messages from msiexec saying "This installation package is not supported by this processor type." So in fact I just give WiX the same -arch x86 option that I give it for the real 32-bit x86 Windows installer, but then I point it at the Arm binaries, and that seems to produce a viable MSI. There is the unfortunate effect that msiexec forcibly sets the default install location to 'Program Files (x86)' no matter how I strive to make it set it any other way, but that's only cosmetic: the programs _run_ just fine no matter which Program Files directory they're installed into (and I know this won't be the first piece of software that installs itself into the wrong one). Perhaps some day we can find a way to do that part better. On general principles of caution (and of not really wanting to force Arm machines to emulate x86 code at all), the Arm versions of the installers have the new DllOk=no flag, so they're pure MSI with no embedded DLLs.
This commit is contained in:
parent
23698d6164
commit
ec850f4d98
12
Buildscr
12
Buildscr
@ -88,6 +88,8 @@ ifneq "$(SNAPSHOT)" "" set Isuffix $(Date)-installer
|
||||
ifeq "$(RELEASE)$(PRERELEASE)$(SNAPSHOT)" "" set Isuffix custom-$(Date)-installer
|
||||
set Ifilename32 putty-$(Isuffix)
|
||||
set Ifilename64 putty-64bit-$(Isuffix)
|
||||
set Ifilenamea32 putty-arm32-$(Isuffix)
|
||||
set Ifilenamea64 putty-arm64-$(Isuffix)
|
||||
|
||||
# Set up the version string for the Windows installer.
|
||||
ifneq "$(RELEASE)" "" set Iversion $(RELEASE)
|
||||
@ -195,11 +197,13 @@ in putty/windows do make -f Makefile.clangcl BUILDDIR=buildold/ cleantestprogs
|
||||
ifneq "$(cross_winsigncode)" "" in putty/windows do $(cross_winsigncode) -N -i https://www.chiark.greenend.org.uk/~sgtatham/putty/ build*/*.exe abuild*/*.exe
|
||||
|
||||
# Build a WiX MSI installer, for each of build32 and build64.
|
||||
in putty/windows with wixonlinux do candle -arch x86 -dWin64=no -dDllOk=yes -dBuilddir=build32/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installer32.msi -spdb
|
||||
in putty/windows with wixonlinux do candle -arch x64 -dWin64=yes -dDllOk=yes -dBuilddir=build64/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installer64.msi -spdb
|
||||
in putty/windows with wixonlinux do candle -arch x86 -dRealPlatform=x86 -dDllOk=yes -dBuilddir=build32/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installer32.msi -spdb
|
||||
in putty/windows with wixonlinux do candle -arch x64 -dRealPlatform=x64 -dDllOk=yes -dBuilddir=build64/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installer64.msi -spdb
|
||||
in putty/windows with wixonlinux do candle -arch x86 -dRealPlatform=Arm -dDllOk=no -dBuilddir=abuild32/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installera32.msi -spdb
|
||||
in putty/windows with wixonlinux do candle -arch x86 -dRealPlatform=Arm64 -dDllOk=no -dBuilddir=abuild64/ -dWinver="$(Winver)" -dPuttytextver="$(Puttytextver)" installer.wxs && light -ext WixUIExtension -ext WixUtilExtension -sval installer.wixobj -o installera64.msi -spdb
|
||||
|
||||
# Sign the Windows installers.
|
||||
ifneq "$(cross_winsigncode)" "" in putty/windows do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/putty/ -n "PuTTY Installer" installer32.msi installer64.msi
|
||||
ifneq "$(cross_winsigncode)" "" in putty/windows do $(cross_winsigncode) -i https://www.chiark.greenend.org.uk/~sgtatham/putty/ -n "PuTTY Installer" installer32.msi installer64.msi installera32.msi installera64.msi
|
||||
|
||||
in putty/doc do make mostlyclean
|
||||
in putty/doc do make $(Docmakever) -j$(nproc)
|
||||
@ -219,6 +223,8 @@ deliver putty/windows/build64/*.exe putty/w64/$@
|
||||
deliver putty/windows/build64/putty.zip putty/w64/$@
|
||||
deliver putty/windows/installer32.msi putty/w32/$(Ifilename32).msi
|
||||
deliver putty/windows/installer64.msi putty/w64/$(Ifilename64).msi
|
||||
deliver putty/windows/installera32.msi putty/wa32/$(Ifilenamea32).msi
|
||||
deliver putty/windows/installera64.msi putty/wa64/$(Ifilenamea64).msi
|
||||
deliver putty/windows/abuild32/*.exe putty/wa32/$@
|
||||
deliver putty/windows/abuild32/putty.zip putty/wa32/$@
|
||||
deliver putty/windows/abuild64/*.exe putty/wa64/$@
|
||||
|
@ -2,11 +2,24 @@
|
||||
|
||||
<!-- WiX source code for the PuTTY installer. -->
|
||||
|
||||
<?if $(var.Win64) = yes ?>
|
||||
<?if $(var.RealPlatform) = x64 ?>
|
||||
<?define Bitness = " (64-bit)" ?>
|
||||
<?define RegKeyPathLocation = "Software\SimonTatham\PuTTY64" ?>
|
||||
<?define InstallerVersion = "200" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
|
||||
<?else ?>
|
||||
<?define Bitness = "" ?>
|
||||
<?define RegKeyPathLocation = "Software\SimonTatham\PuTTY" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
||||
<?endif ?>
|
||||
|
||||
<?if $(var.RealPlatform) = x86 ?>
|
||||
<?define InstallerVersion = "100" ?>
|
||||
<?else ?>
|
||||
<?define InstallerVersion = "200" ?>
|
||||
<?endif ?>
|
||||
|
||||
<?if $(var.RealPlatform) = x64 ?>
|
||||
<?define ProductNameSuffix = " (64-bit)" ?>
|
||||
<?define UpgradeCode_GUID = "C9EAA861-2B72-4FAF-9FEE-EEB1AD5FD15E" ?>
|
||||
<?define PuTTY_Component_GUID = "C673C970-25AE-4659-9621-A1FE0598E9DC" ?>
|
||||
<?define Pageant_Component_GUID = "BA37328A-9A9C-4912-B84D-9C4A21B4E79A" ?>
|
||||
@ -22,11 +35,8 @@
|
||||
<?define Path_Component_GUID = "A0CFC986-489D-452B-8A8F-F9DBEF6916F4" ?>
|
||||
<?define ProgramMenuDir_GUID = "3B2B7A2B-25F1-4EC4-987F-75BFD038632E" ?>
|
||||
<?define Desktop_Shortcut_Component_GUID = "0A715416-EA6E-4A1C-8670-838307083EE5" ?>
|
||||
<?else ?>
|
||||
<?define Bitness = "" ?>
|
||||
<?define RegKeyPathLocation = "Software\SimonTatham\PuTTY" ?>
|
||||
<?define InstallerVersion = "100" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
||||
<?elseif $(var.RealPlatform) = x86 ?>
|
||||
<?define ProductNameSuffix = "" ?>
|
||||
<?define UpgradeCode_GUID = "DCE70C63-8808-4646-B16B-A677BD298385" ?>
|
||||
<?define PuTTY_Component_GUID = "07ACF511-6DF6-4883-AABA-33BC14901324" ?>
|
||||
<?define Pageant_Component_GUID = "649F963E-21C4-4755-8CE4-D80598DCEE6D" ?>
|
||||
@ -42,6 +52,40 @@
|
||||
<?define Path_Component_GUID = "D1F68AAA-D20D-4047-828F-D0AC443FAF64" ?>
|
||||
<?define ProgramMenuDir_GUID = "C12C3BB3-EC24-4883-8349-4AC8017C9E6A" ?>
|
||||
<?define Desktop_Shortcut_Component_GUID = "D039E3D1-CE42-488D-96CC-90E1DE3796F8" ?>
|
||||
<?elseif $(var.RealPlatform) = Arm ?>
|
||||
<?define ProductNameSuffix = " (32-bit Arm)" ?>
|
||||
<?define UpgradeCode_GUID = "B8E49D4D-7C56-400D-85B4-DF953C227207" ?>
|
||||
<?define PuTTY_Component_GUID = "207B46FA-0554-4DB4-AA87-F85464FA065E" ?>
|
||||
<?define Pageant_Component_GUID = "F20A76A8-C4D5-4447-A345-C52F437BDEDC" ?>
|
||||
<?define PSFTP_Component_GUID = "F868395D-2135-419B-AB97-B782D7FBA468" ?>
|
||||
<?define PuTTYgen_Component_GUID = "FC558E64-D17D-4297-8694-92F5284965FF" ?>
|
||||
<?define Plink_Component_GUID = "E2ECE65F-4D41-4B17-AF24-A90B6649E732" ?>
|
||||
<?define PSCP_Component_GUID = "5C6A332C-9D9C-4097-94DB-995994B29B51" ?>
|
||||
<?define HelpFile_Component_GUID = "9C666B10-5F6F-41D3-AFF3-F746DB785CF5" ?>
|
||||
<?define Website_Component_GUID = "C520868B-9EC8-4CEC-B740-40D947F23928" ?>
|
||||
<?define LICENCE_Component_GUID = "14A5A99F-C347-4D6B-8E3F-2B7297D94C64" ?>
|
||||
<?define README_Component_GUID = "E1C9357C-7524-4B8B-A2AE-6FB9A1B4AE0B" ?>
|
||||
<?define PPK_Assoc_Component_GUID = "8A1E556E-8E39-465E-BAE5-9E112F7DCBFD" ?>
|
||||
<?define Path_Component_GUID = "425860FA-B31E-440E-99AD-C2CCFC195092" ?>
|
||||
<?define ProgramMenuDir_GUID = "0F2F67F1-FB69-4D0F-8A7F-A6BA2CD79F00" ?>
|
||||
<?define Desktop_Shortcut_Component_GUID = "63CA2A72-4B56-4207-9E2B-1FC4E3C883AE" ?>
|
||||
<?elseif $(var.RealPlatform) = Arm64 ?>
|
||||
<?define ProductNameSuffix = " (64-bit Arm)" ?>
|
||||
<?define UpgradeCode_GUID = "2125AD39-A960-4377-AD41-99E50D842AE5" ?>
|
||||
<?define PuTTY_Component_GUID = "43A61725-EC31-4F8C-8BF3-3C988E53185B" ?>
|
||||
<?define Pageant_Component_GUID = "8D36F326-F1BC-42E4-AC42-925449782B5A" ?>
|
||||
<?define PSFTP_Component_GUID = "E3C7B364-35F9-4B25-A0FB-B86B4E4949EE" ?>
|
||||
<?define PuTTYgen_Component_GUID = "BE5F4873-152E-477B-B8F8-2F7FDD6186BC" ?>
|
||||
<?define Plink_Component_GUID = "46382105-49C3-4B59-B250-C889F03BD73E" ?>
|
||||
<?define PSCP_Component_GUID = "CB738CC0-7F19-457B-9B32-A3665E0E46CB" ?>
|
||||
<?define HelpFile_Component_GUID = "F5170725-418F-448B-A9F2-C484E43E1C56" ?>
|
||||
<?define Website_Component_GUID = "87D4BA0A-0DDC-4D82-A58A-F32B4E9B898F" ?>
|
||||
<?define LICENCE_Component_GUID = "AAD0A8B0-FAB0-4712-87F9-336FEF2629BF" ?>
|
||||
<?define README_Component_GUID = "9D20B714-5E8A-40A3-AE65-DFE21C2270C9" ?>
|
||||
<?define PPK_Assoc_Component_GUID = "B967F31F-25C6-4586-B042-DA7E448BA773" ?>
|
||||
<?define Path_Component_GUID = "12E0B4AA-C8AF-4917-AFB5-DD8143A1A784" ?>
|
||||
<?define ProgramMenuDir_GUID = "A9C3DFD6-682F-4B9F-B6AE-B2FFA8050CB5" ?>
|
||||
<?define Desktop_Shortcut_Component_GUID = "8999BBE1-F99E-4301-B7A6-480C19DE13B9" ?>
|
||||
<?endif ?>
|
||||
|
||||
<?define ProgramName = "PuTTY$(var.Bitness)" ?>
|
||||
@ -63,7 +107,7 @@
|
||||
Buildscr.
|
||||
-->
|
||||
<Product
|
||||
Name="$(var.Puttytextver)$(var.Bitness)"
|
||||
Name="$(var.Puttytextver)$(var.ProductNameSuffix)"
|
||||
Manufacturer="Simon Tatham"
|
||||
Id="*"
|
||||
UpgradeCode="$(var.UpgradeCode_GUID)"
|
||||
|
Loading…
Reference in New Issue
Block a user