Updating an existing installation
Posted: Tue Nov 05, 2013 10:36 am
Hi,
Please would someone let me know if this reasoning is wrong, or if there is a better solution than the one I'm proposing.
We need to make small updates to existing releases of our product which have been installed using an InstallAware 12 project. I looked into doing this with a patch installer but concluded that this would first 'repair' the installation's files back to the originally-installed state, and then install any changed files in the patch. I want to avoid 'repairing' the existing installation, as this would lose any changes the customer has made to configuration files within the product since it was installed.
Instead of a patch, I have written an 'update installer' -- this is small installer, just containing those files we want to update. It has a unique product code. The user will browse to the location of the existing installation they wish to update, and install the files into it.
As far as I can see this approach has the following small disadvantages:
It will give us an unwanted instance for each unique updater, in the Programs and Features control panel. If the user tried to uninstall that, it would remove the update files, but not replace the previous versions of these files. We can warn them about that in the Welcome dialog.
As this update installer has a fresh Product Code, it won't be able to get at persistent variables of the original installer, but I suppose I could make my own arrangements via the registry.
Unless we update the Product Code for each build of the update installer, we'll also need to ensure that each successive updater contains all the files which were in its predecessor, plus any new ones.
Is this the most sensible approach, or is there a better way, with InstallAware? Really I'd like to be able to use the Product Code of the original installer, and have access to the persistent variables and target location for its previous run. But this would result in the 'Previous Version Uninstallation' dialog, which would defeat the point.
Please would someone let me know if this reasoning is wrong, or if there is a better solution than the one I'm proposing.
We need to make small updates to existing releases of our product which have been installed using an InstallAware 12 project. I looked into doing this with a patch installer but concluded that this would first 'repair' the installation's files back to the originally-installed state, and then install any changed files in the patch. I want to avoid 'repairing' the existing installation, as this would lose any changes the customer has made to configuration files within the product since it was installed.
Instead of a patch, I have written an 'update installer' -- this is small installer, just containing those files we want to update. It has a unique product code. The user will browse to the location of the existing installation they wish to update, and install the files into it.
As far as I can see this approach has the following small disadvantages:
It will give us an unwanted instance for each unique updater, in the Programs and Features control panel. If the user tried to uninstall that, it would remove the update files, but not replace the previous versions of these files. We can warn them about that in the Welcome dialog.
As this update installer has a fresh Product Code, it won't be able to get at persistent variables of the original installer, but I suppose I could make my own arrangements via the registry.
Unless we update the Product Code for each build of the update installer, we'll also need to ensure that each successive updater contains all the files which were in its predecessor, plus any new ones.
Is this the most sensible approach, or is there a better way, with InstallAware? Really I'd like to be able to use the Product Code of the original installer, and have access to the persistent variables and target location for its previous run. But this would result in the 'Previous Version Uninstallation' dialog, which would defeat the point.