1
votes

I use a program called MSICREATE to generate msi packages for a piece of software. I then use orca to transform the msi package. Things work ok but users must delete the existing product before installing an update. I'd like to modify the msi package so the installer recognizes a newer or different version is being installed and removes the current version and then installs the new msi package.

What property table entries are needed?

=========

The answer given below has helped me get beyond my original problem and I thank Ciprian for his help. My major upgrade msi now deletes the existing product BUT does not completely re-install the product. My product consists of some text files, a help file, and a .exe file. The .exe file is not re-installed.

For whatever it's worth, I added answer below which summarizes what I added to my msi using orce.

2
Create an installation log for more details: stackoverflow.com/questions/7126077/create-an-msi-log-fileCiprian
@ciprian: I may not have changed the PackageCode. Is that required? I will try again later this afternoon.Mike D
No it is not required. PackageCode uniquely identifies a MSI file so it should differ, but it does't affect the upgrade process.Ciprian
I created a new msi as described above, assigned it a new packagecode and put a new valid productcode in the property table. When I run directly or using msiexec, I see only the delete and repair options. The new files do not get installed. The log file is here mywebspace.wisc.edu/mdorl/msilog/log.log IMHO, msiexec seems to have determined the software ok and identified the old and new msi packages.Mike D
I'm beginning to get the idea that the only way to do an update is through use of msiexec with the proper remove parameters. Is that right? Or is it possible to do a major update using only the .msi file? I'm reluctant to release an update in the form of setup.exe and accompanying .ini and .msi file since that seems to invite the user to meddle.Mike D

2 Answers

2
votes

I don't know how MSICREATE handles the upgrade scenario. However you could achieve this using ORCA. Here is a detailed upgrade example from MSDN.

Long story short both your packages must share the UpgradeCode. Also you must author an entry in the Upgrade table of the second package.

0
votes

Here are the things I added to my msi using orca to effect a major upgrade. As I said above I still have a problem in that my .exe file is not reinstalled on a major upgrade. The .exe is added if one does a repair.

InstallExecuteSequence Table

  • added FindRelatedProducts with sequence 400
  • added RemoveExistingProducts with sequence 1450

InstallUISequence Table

  • added FindRelatedProducts with sequence 200

PropertyTable

  • added RemovePreviousVersions TRUE
  • added SECURECUSTOMPROPERTIES SOLARUPGRADE
  • had a existing UpgradeCode with guid created by MSICREATE
  • had a existing ProductVersion 12.2.12.0 created my MSICREATE

Added a Upgrade Table

  • UpgradeCode same value as Upgrade in Property Table
  • VersionMin null
  • VersionMax 99.12.31
  • Attributes 1
  • ActionProperty SOLARUPGRADE (same value as SECURECUSTOMPROPERTIES in Property Table)

I also assigned a new PackageCode and a new ProductCode so the new msi had different values of PackageCode, ProductCode, and ProductVersion than the previously installed product.