Best way to hotfix an existing product (Patch?...)
We deliver our product using a InstallShield setup.exe
It is a fairly complicated project which has a GUI to install components, some custom scripting and registrations of COM etc etc. The setup is huge, about 1.3 Gb and contains lots of files.
We also deliver hotfixes to customers.
At this point we do this manually. So we fix defects in house and the affected files are put into a ZIP with copy instructions and sometimes extra steps to perform at customer site.
Mostly a hotfix only contains a couple of files which have to be copied to the installation folder of the product and replace the existing ones. Sometimes we need to unregister an old COM component, copy a new version of it and then register.
As this is manual work for developers here and manual work for the admins at customer sites, we would like to use InstallShield to deliver the hotfixes as a setup.exe. So make it easier for customers to apply a hotfix just by starting a setup.exe.
Goal is that the developer can easily put fixed files in the project, specify what to do with them (mostly just copy/overwrite existing files and create a setup which is small (only contains the files to be overwritten).
We do not want to see in installed programs that a patch has been installed.
So the original program (major version) is visible in installed products but the patch will not.
So there is no need to have an uninstall option for the patch. You can install the major product version (full setup) and on top of that a patch setup and be able to uninstall the major product when needed.
You could rerun the same patch setup multiple times which just does what it is instructed to, copy files.
A new hotfix (on top of the previous one) will just copy the set of files without bothering about if a previous hotfix was installed or not. Out hotfixes are cumulative, so hotfix 2 contains hotfix1.
I'm lost in all the options in InstallShield to make a good choice how to do this.
I was thinking about a simple project which just copies the files to installation folder and not registering any product changes. So what we normally do manually we let it do by InstallShield.
What are my possibilities? I would be grateful if someone has tips how to start. Thanks.
So I continued and am experimenting with QuickPatch project to update the product.
This is working fine. I am able to specify which wiles needs updating and the version number of the product can be changed or not, depending of the needs. Also uninstalling the major version (with the patch) is possible.
The only thing which does not work (yet) is to manage registering COM dll/ocx.
One dll is a .NET COM interop and the other one a "normal" COM dll.
It seems that for the .NET COM dll we need REGASM to register as the other one uses regsrv32.
This is the case:
The original installer as two dll's which must be updated with the QuickPatch.
I added them to be updated and parked them as COM in the QuickPatch settings for those files.
But after the QuickPatch is installed I get error in the application that the component is not registered.
What you do manually is:
Unregister the existing dll's
Copy over the new dll's
Register the new dll's
Should I do the same in QuickPatch?
So mark the existing files as DELETE.
Then add all dll's as new files and register?
Or should just updating the files be enough and set them to register?
Or am I able to add a new script to do this?