I have been trying to get a WIX installer behaving the way I want it to for a couple of days, unfortunately I am not an MSI expert and have had a hard time understanding why things done work as I want. The installer is for an upgrade of a license key and copy protection product that I have created. Using Netsparkle the product gets automatically updated when a new version is available. I also added a checkbox to the last dialog window of the standard installer to allow the user to automatically start the installed version and this is checked by default. Unfortunately Netsparkle automatically starts the latest version when it is installed and uses the standard installer to perform the upgrade… Two instances of the application popup after an upgrade! Not want I wanted.
The problem I have been having is that the property values that I set are not being used by the installer UI. Turns out that there are multiple execution sequences going on in an installer – one UI sequence (INSTALLUISEQUENCE) and one non-UI (INSTALLEXECUTESEQUENCE). Both are run if you use a standard installer like most users do, but custom properties are not shared between them by default. I had placed all my UI updating property custom actions inside INSTALLEXECUTESEQUENCE which was why my UI wasn’t updating – those properties weren’t shared.
There are multiple solutions to this, for me I just copied my custom action execution into INSTALLUISEQUENCE and the problem was solved!