I have an MSI package I maintain with Installshield 2012 Pro.
The package was created a few years again and requires periodic maintenance as new versions of the application is installs are released by our development team. This MSI has been used in many locations, on many machines without issue.
At one customer location, they've install about 20 copies of the application on 20 machines. Each machine is built exactly the same. Periodically, for an unknown reason registry entries relating to that application go missing. Not all of them, a select one or two... the same entries always go missing.
We so far have failed to track the exact root cause, however one of our support engineers noticed the MSI repair dialogue appearing when they opened the application shortcut. Following this, the registry entries went missing.
On each instance of the registry entries going missing we have removed the MSI from the c:\Windows\Installer directory. On machines we've made this change too, the registry changes so far have not disappeared again.
This leads me to think the MSI is somehow removing the selected registry entries during the repair, but I don't understand how.
- There are at least 50 registry entries under the same key as the entries that get removed. (these are created by the application not the installer)
- The MSI package doesn't insert any keys at all during install
- There are no custom actions at all
- I only have one key file set in the whole MSI, and this is for a component installed in Windows\system32
- None of the shortcuts are 'Advertised'
There appears to be a clear link between removing the MSI from the Installer directory and no further occurrences, but I fail to see what in my MSI could cause specific registry keys to disappear.
I realize the exact reason this this is subjective to my MSI or the customers systems, so as generally as possible I ask:
- Why would Windows launch the MSI repair function, considering the above
- Can an MSI alter the registry, considering the above
- Is there anyway post installation of an MSI to disable the auto repair function for this MSI?
- How should I alter the MSI to ensure auto repair doesn't occur?
Thanks