Our product works the same way: only major upgrades and each version can upgrade each older version.
When I got the request (years ago) to make patching available I had a look at the 2 technologies InstallShield is supporting:
1) Patch Design
Now I fairly quickly gave up on Patch Design since our installer is really complex and does several non-standard operations like e.g. "updating databases". I had too many problems. Now it was a long time ago so i do not remember exactly details but i believe Patch Design could work if your installer is only doing basic stuff (installing files, reg keys, services, ... etc).
Next, I had a look at QuickPatch and had several issues as well (an InstallShield consultant at the time warned me: never use it!). Since i did not have many other options i worked through the issues I encountered with QuickPatch by applying workarounds and reporting bugs. InstallShield development was so nice fix these bugs in the next releases and i can say now that QuickPatch is working like a charm. It's easy, it's fast and the size can be kept very small (it will be not much more than the size of the files you need to patch). Management here was thrilled and we already used it several times patching thousands of customers.
Another nice advantage of QuickPatch is that you can make "accumulating" patches.
Patch 04.71.0001 is created to patch file1 in base version 04.61.0001
Patch 04.72.0001 is created to patch both file1 and file2 in base version 04.61.0001
In stead you can configure QuickPatch to make patch 04.72.0001 target both 04.61.0001 and 04.71.0001 to install both file1 and file2 (if not already patched)
The biggest drawbacks of QuickPatch:
- you can only target 1 specific base version. So if you have 5 releases in the field and they all need the same file to be patched, you need to make 5 patches.
- you can only use/re-use custom actions that are existing in your base installation (that's why I initially created some extra custom actions in my base msi that I only schedule to run during a patch if required)
A QuickPatch is in fact an intelligent "repair" running ...
There's also a third option which i know my colleague is using (200 000 installs!): an installation that is leaving no traces.
The idea is that you just create a new installer from scratch that will do its thing (like a patch) but leaves no traces behind (no reg entries, no entry in ARP panel ...)
This link explains it a bit:
Working this way is in fact not good practice but it seems to do the job.One of the pain points i think is that using this technique the patch will not update the productversion so you would have to find a different way to know which version is patched or not. The biggest advantage is that you can do (patch) anything you want.
Hope this helps a bit ...please let me know if you have more questions ...