Patching Multiple Instance Installs with either In

2019-04-10 09:50发布

问题:

      I have a project built in InstallShield 12. It is a Web Application that needs to be installed multiple times, and those installations need to be patched.

I can create transforms, and patches just fine in both WiX and InstallShield.
When I try to patch a transformed install from InstallShield, I get the error:

"The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program.  Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch."

In InstallShield, I have tried adding the new Product Code from the transforms to the "List of Target Product Codes" through the Patch Design tab. Doing this will error out the patch creation with error:

"ERROR: At least one of the GUIDs '{ORIGINAL-GUID},{TRANSFORM-GUID}' defined in the ListOfTargetProductCodes property in the Properties table of the .pcp file is invalid."

In WiX (3.5), I've converted my project from InstallShield to WiX using dark.exe. I've gotten far enough that I can install a patch to a transform, but i'm getting the warning:

"Patch.wxs(11) : warning PYRO1079 : The cabinet 'Data1.cab' does not contain any files."

This is a problem, because I am trying to run an SQL script in the patch, but the patch doesn't insert my sql file into the cab.

I've also tried the .pcp method (pre WiX 3.0) through WiX, and only get as far as I've gotten in InstallShield.

I've been mostly referencing this page for my answers so far: http://ysdevlog.blogspot.com/2011/08/revisited-multiple-instance.html

TL;DR: How do I generate a patch for multiple instance installs using (preferably) InstallShield, or in WiX?

回答1:

I have resolved my own issue by entirely abandoning InstallShield. Rather than converting my InstallShield final msi into WiX, I have re-created my project in pure WiX. Doing this has allowed me to install multiple instances, and patch them as well.

It is a shame that I couldn't figure out how to get it to work through InstallShield.