cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Shuttledude
Level 7

Can a Basic MSI project be used to update an InstallScript MSI project?

I have been investigating whether it would be possible to use a BasicMSI project to update an existing product that was originally installed with an InstallScript MSI project. This is because I anticipate using AdminStudio to repackage existing InstallScript msi projects into basic msi projects, for products that customers already have on their computers.

Even though I've been careful to observe all the usual upgrade rules regarding version number, product code, upgrade code, etc., a variety of errors occur when I apply the upgrade. I've experimented with major as well as minor upgrades, always using the Automatic upgrade type.

I've tried upgrading via the setup.exe wrapper as well as using the *.msi file with command-line parameters, but no luck with anything so far. I'm beginning to think the technology was never meant to support this. But I should point out that I manually converted the InstallScript msi project I'm testing; I didn't actually use AdminStudio -- so it could be developer error!

Feedback/suggestions? Am I attempting something that should be avoided, or is not a best practice?
Labels (1)
0 Kudos
(1) Reply
KathyMorey
Level 10

We've converted all of our installations to Basic MSIs and most of them started out as InstallScript MSIs. The main issue I've found in a major upgrade is that the new MSI can automatically run only the MSI uninstall, not the script engine uninstall. So if you've set anything in the script that the old uninstall needs the MSI uninstall might not run correctly, or if you made any system changes through the script in the original install (XCopyFile or RegDBSetKeyValueEx, etc.), the MSI uninstall won't remove them.

If you don't have a big concern with users running your install silently, we've had some luck with setting up a custom action in the UI sequence to run the scripted uninstall before the Execute sequence tries to run RemoveExistingProducts.

In other cases, we had to include MsiZap.exe in our support files, set up a custom action before RemoveExistingProducts to remove the Windows Installer traces of the previous installs, then use the RemoveFile and RemoveRegistry table to delete resources that the MSI couldn't or wouldn't uninstall.
0 Kudos