build: Allow MSI installer to downgrade installations

This commit is contained in:
WerWolv
2026-01-17 21:47:06 +01:00
parent 06f4d12f10
commit 753e1ceff6
3 changed files with 56 additions and 7 deletions

View File

@@ -202,12 +202,14 @@ macro(configurePackingResources)
set(CPACK_PACKAGE_NAME "ImHex")
set(CPACK_PACKAGE_VENDOR "WerWolv")
set(CPACK_WIX_VERSION 4)
set(CPACK_WIX_PRODUCT_GUID "*")
set(CPACK_WIX_UPGRADE_GUID "05000E99-9659-42FD-A1CF-05C554B39285")
set(CPACK_WIX_PRODUCT_ICON "${PROJECT_SOURCE_DIR}/resources/dist/windows/icon.ico")
set(CPACK_WIX_UI_BANNER "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_banner.png")
set(CPACK_WIX_UI_DIALOG "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_dialog.png")
set(CPACK_WIX_CULTURES "en-US;de-DE;ja-JP;it-IT;pt-BR;zh-CN;zh-TW;ru-RU")
set(CPACK_WIX_PATCH_FILE "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_patch.xml")
set(CPACK_WIX_TEMPLATE "${PROJECT_SOURCE_DIR}/resources/dist/windows/WIX.template.in")
set(CPACK_WIX_EXTENSIONS "WixToolset.UI.wixext")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ImHex")
set_property(INSTALL "$<TARGET_FILE_NAME:main>"

53
resources/dist/windows/WIX.template.in vendored Normal file
View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<?include "cpack_variables.wxi"?>
<Wix
xmlns="http://wixtoolset.org/schemas/v4/wxs"@CPACK_WIX_CUSTOM_XMLNS_EXPANDED@
>
<Package
Name="$(var.CPACK_PACKAGE_NAME)"
Version="$(var.CPACK_PACKAGE_VERSION)"
Manufacturer="$(var.CPACK_PACKAGE_VENDOR)"
UpgradeCode="$(var.CPACK_WIX_UPGRADE_GUID)"
ProductCode="$(var.CPACK_WIX_PRODUCT_GUID)"
InstallerVersion="500"
Language="1033"
Compressed="yes"
>
<?ifndef CPACK_WIX_CAB_PER_COMPONENT?>
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
<?endif?>
<MajorUpgrade
Schedule="afterInstallInitialize"
AllowDowngrades="yes"/>
<Property Id="REINSTALLMODE" Value="amus"/>
<WixVariable Id="WixUILicenseRtf" Value="$(var.CPACK_WIX_LICENSE_RTF)"/>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALL_ROOT"/>
<?ifdef CPACK_WIX_PRODUCT_ICON?>
<Property Id="ARPPRODUCTICON" Value="ProductIcon.ico" />
<Icon Id="ProductIcon.ico" SourceFile="$(var.CPACK_WIX_PRODUCT_ICON)"/>
<?endif?>
<?ifdef CPACK_WIX_UI_BANNER?>
<WixVariable Id="WixUIBannerBmp" Value="$(var.CPACK_WIX_UI_BANNER)"/>
<?endif?>
<?ifdef CPACK_WIX_UI_DIALOG?>
<WixVariable Id="WixUIDialogBmp" Value="$(var.CPACK_WIX_UI_DIALOG)"/>
<?endif?>
<FeatureRef Id="ProductFeature" />
<ui:WixUI Id="WixUI_InstallDir" />
<?include "properties.wxi"?>
<?include "product_fragment.wxi"?>
</Package>
</Wix>

View File

@@ -1,6 +0,0 @@
<CPackWiXPatch>
<CPackWiXFragment Id="#PRODUCT">
<SetProperty Id="REINSTALL" Value="ALL" After="CostFinalize" />
<SetProperty Id="REINSTALLMODE" Value="amus" After="CostFinalize" />
</CPackWiXFragment>
</CPackWiXPatch>