Wix Burn, how do I allow a downgrade?

So, I have a fairly simple installer for recording, primarily to enable .net updates, or sometimes for the driver package for the equipment with which we need to communicate.

At MSI, we are creating support for upgrades or downgrades.

<?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> <Bundle Name="My App Name" Manufacturer="Company Name" Version="!(bind.packageVersion.MyAPP_MSI)" IconSourceFile="MyIcon.ico" DisableModify="yes" DisableRemove="yes" UpgradeCode="{15E598EF-89CE-470B-8CEF-E32C8983DA33}" > <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" > <bal:WixStandardBootstrapperApplication LogoFile="$(var.CoreComponents.TargetDir)InstallerGraphics\Bootstrapper_Logo.png" LicenseFile="$(var.CoreComponents.TargetDir)AppRoot\App License.rtf" SuppressOptionsUI="yes" /> </BootstrapperApplicationRef> <Chain> <PackageGroupRef Id="NetFx451Web"/> <MsiPackage DisplayName="My full Application Name" Id="MyAPP_MSI" SourceFile="$(var.Installer_MyAppMSI_TargetPath)" DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" /> <MsiPackage DisplayName="My Hardware Driver" Id="Installer_MSI_Driver" SourceFile="$(var.Installer_Driver.TargetPath)" DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" /> </Chain> </Bundle> </Wix> 

Usually we have beta versions, and when a user wants to switch from beta to our stable releases, they cannot just execute the old EXE installer. They must uninstall the previous package from Add or Remove Programs explicitly in order to install the older Burn EXE.

This is not a problem with installing MSI. How do we get back to this functionality?

Journal

 [0CB8:067C][2014-06-23T11:10:04]i001: Burn v3.8.1128.0, Windows v6.1(Build 7601: Service Pack 1), path:\\iop-filesvr\IOP\Builds\Main\8.1.240\IO Practiceware Client Setup.exe, cmdline: '-burn.unelevated BurnPipe.{197B8193-6EFC-4ED0-AF90-DE7205F13E65} {CD23A8AB-520B-4F5D-BCB9-98998C5A1EC0} 2216' [0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\jeff\AppData\Local\Temp\IO_Practiceware_Client_8.1.240.0_20140623111004.log' [0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable'WixBundleOriginalSource' to value '\\iop-filesvr\IOP\Builds\Main\8.1.240\IO Practiceware ClientSetup.exe' [0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable 'WixBundleName' to value 'IO Practiceware Client 8.1.240.0' [0CB8:067C][2014-06-23T11:10:05]i100: Detect begin, 2 packages [0CB8:067C][2014-06-23T11:10:05]i000: Setting string variable 'PrerequisitesVersion' to value '1.0.0.0' [0CB8:067C][2014-06-23T11:10:05]i102: Detected related bundle: {8d398d25-606f-419a-9b29-e3434aeb2485}, type: Upgrade, scope: PerUser, version: 8.1.241.0, operation: Downgrade [0CB8:067C][2014-06-23T11:10:05]i103: Detected related package: {7EA877FF-CE7A-49CE-8F76-D5A11EA7DD7A}, scope: PerMachine, version: 1.0.0.0, language: 0 operation: MajorUpgrade [0CB8:067C][2014-06-23T11:10:05]i103: Detected related package: {8E8A7689-FB1C-4FE5-AF7C-95D499A342DE}, scope: PerUser, version: 8.1.241.0, language: 0 operation: MajorUpgrade [0CB8:067C][2014-06-23T11:10:05]i101: Detected package: PrerequisitesMsi, state: Absent, cached: None [0CB8:067C][2014-06-23T11:10:05]i101: Detected package: ClientMsi, state: Absent, cached: None [0CB8:067C][2014-06-23T11:10:05]i199:Detect complete, result: 0x0 [0CB8:076C][2014-06-23T11:10:16]i000: Setting numeric variable 'EulaAcceptCheckbox' to value 0 [0CB8:076C][2014-06-23T11:10:16]e000: Error 0x80070666: Cannot install a product when a newer version is installed. 
+6
source share
3 answers

This worked for me:

 <MajorUpgrade Schedule="afterInstallInitialize" AllowDowngrades="yes" /> 

See WIX Documents for the MajorUpgrade Element .

+1
source

Try adding <Property Id="REINSTALLMODE" Value="amus" /> to the product.wxs file. The REINSTALLMODE property is a set of parameters that determines the behavior of a new installation with a different / same version. For more details, you can check the REINSTALLMODE property as a link.

0
source

Treat beta versions as releases leading to stable (RC or market) releases. The file / assembly version always moves up, so the installation is an update.

Take this release sequence:

  • 1.2.3.4567 Beta li>
  • 1.2.3.4568 Market entry
  • 1.2.4.4569 Next beta

Determine the version that the client sees depending on the release of the (stable) version or beta.

Check "AssemblyInformationalVersion".

 [assembly: AssemblyVersion("1.0.0.1234")] [assembly: AssemblyFileVersion("1.0.0.1234")] [assembly: AssemblyInformationalVersion("1.0")] 

Always update.

0
source

All Articles