My company has decided to swap our product's installer from InstallAware to Advanced Installer. For the most part, I have enjoyed my time with Advanced Installer despite having to start from scratch--indeed, the support given by the employees on this board has been instrumental to the rate of progress I have sustained for this project.
However, I have two questions about Advanced Installer behavior that is not clear from either the User Guide or from forum posts I have read.
1st Question: We want to exclude the product version from the Windows Installer Registry Key for the Uninstall String. How can we do this?
Details:
We use our own service to automatically detect and upgrade when a user's product version is out of date. In InstallAware, our Uninstall String could be found under:
Code: Select all
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\[Product Name]\UninstallString
Code: Select all
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\[Product Name][Product Version]\UninstallString
The behavior we desire is to place the UninstallString in the previous location so that we do not need to update our update service's code with every new release. That location, for clarity, is:
Code: Select all
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\[Product Name]\UninstallString
2nd Question: How can we silently uninstall our application's previous version that uses an .EXE installer from a non-Advanced Installer installation program?
Details:
In the guide for uninstalling another application ( https://www.advancedinstaller.com/user- ... oduct.html ), there is a section labeled "The old package is created with another tool and it is not MSI-based". This is the case for our old InstallAware application: it is an .EXE-based installer. Specifically, the guide says to create a custom action to uninstall the old application after the "Preparation" step:
For full clarity, I used a "Launch EXE with working directory" custom action to launch the .EXE installer using the UninstallString from the registry. When I attempted to follow the steps in this guide, however, both the installation of the new version and the uninstallation of the old version would attempt to run concurrently, which caused both to hang because Windows only allows one installation/uninstallation to occur at a time. I found a workaround by placing the custom action that uninstalls the previous version after "User Selection" in the "Wizard Dialogs Stage," but this has unfortunate side effect of causing the uninstall step not to execute during a silent installation from the Advanced Installer installation. Since most of our installations are performed silently via our automatic upgrade service, this is a major problem because we effectively cannot silently uninstall the old application. How can we silently run the previous version's uninstaller without causing the installation process to hang?Since the old product should be removed before the new installation takes place, the custom action can use the condition NOT Installed and be scheduled straight under the "Preparing" action group.
For clarity, here is a picture of my current installation steps setup: