cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Jim_Spiller
Level 2

Use QuickPatch and Retain Registry Settings

We want to use QuickPatch but only to copy updated files and NOT update the Registry.

In the original installation we set some Registry entries. The user will most likely customize the behavior of our software that is then saved back to the Registry. When using Quickpatch it only allows you to Delete, Modify, Rename or Revert each Registry entry but not simply leave it alone!

Seems like a simple and basic request: Update the files using Quickpatch but leave the Registry alone. How can we achieve this?
Labels (1)
0 Kudos

(2) Replies
cornerg
Level 3

I don’t remember having this problem last time I build a patch but perhaps I am mistaken as I can see no way that this would have worked in the past.
Task:
To produce a patch to our product to correct a minor problem. InstallShield QuickPatch is the obvious answer.
Mechanics:
InstallShield takes the full details of the original msi package and using its graphical interface allows existing files within the package to be replaced with an updated version. Other more complicated actions are possible but replacing a single file – in this case an .exe file is a basic and simple requirement.
Even if a single file is specified InstallShield appears to always reset any specific Registry settings which are created/maintained by the original package. In our case the value of “SerialKey” held in our particular area of HKEY_LOCAL_MACHINE/SOFTWARE/…. Is “maintained” by the QuickPatch.
Issue:
As SerialKey is modified post installation, the application of the QuickPatch resets it to the value upon installation. The product will therefore not run (the product checks for a valid value of SerialKey before it will operate!!).
I (and many others) cannot find a way to configure the QuickPatch within InstallShield to modify this behaviour.
Answer:
Firstly create the QuickPatch in the normal way, but in the Build Settings / Common tab uncheck the Create Update.exe option. The output from the build of the QuickPatch will therefore be an .msp file.
Transmit the file PatchPackage.msp to the installation location.
From the command line:-

msiexec /p C:\....\PatchPackage.msp REINSTALL=ALL REINSTALLMODE=ous

The key is that InstallShield will effectively call this with the default for REINSTALLMODE which is omus. The exclusion of m means that registry items already in HKEY_LOCAL_MACHINE will NOT be altered.
0 Kudos
drabelink
Level 3

So a bump.

I did find this topic about avoiding the registry settings to be reverted to defaults.

The solution given (using msp file instead of exe) and installing the patch with command line arguments works ok.

 

But we have found out that we do not need to use the commabd line arguments at all.

When we start the msp file and install the patch, the registry vaues are also not reverted.

 

So my question is:

When using Update.exe, we see the registry values are reverted.

When using

msiexec /p C:\....\PatchPackage.msp REINSTALL=ALL REINSTALLMODE=ous

The registry is not reverted.

When running PatchPackage.msp, it also not reverts the registry.

So is this a feature of msp files in general? Does running them not touch the registry?

Did something change between the time of the original topic here and now concerning how msp files work?

 

0 Kudos