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

Chained Installer and Upgrades / repair mode

I have a Basic MSI setup.exe project that has 3 chained msi projects that are located in their own sub directories.

Main
\ProjectA
\ProjectB
\ProjectC

Everything is properly functioning on install and uninstall in terms of calling the chained installers to install or uninstall. It didn't, however, call the chained installers when the main installer was in update mode.

The projects use minor updates. It could be the primary EXE's in the main or in the sub projects that need updating.

After reading some posts pertaining to this type of setup and from info from Michael U, I've created an additional set of 3 chained installs in the main install that are identical to the other 3, changing the install conditions of the originals to install or remove=all and the new ones to the REINSTALL<>"".

When testing the install in repair mode or update mode, the main installer is now properly calling the chained installers, however I get an error when it calls the first chained installer and it then bails out.

Looking at the error log, it's similar to what a previous user posted, in that Windows installer can't find the chained installer.

What is odd, is that my paths are correct however the call to the chained installers are not passing the proper full paths to the MSIEXEC call to the chained installer. I'm basing that conclusion on the following line in the installer log:

MSI (s) (D4!6C) [17:29:54:914]: PROPERTY CHANGE: Adding IS_CHAINER_POST_COMMANDLINE property. Its value is '/l"C:\Users\me\AppData\Local\Temp\MSI3bb4c.LOG" /qb /iprojecta\projecta.msi;REINSTALL=ALL /qb /iprojectb\projectb.msi;REINSTALL=ALL /qb /iprojectc\projectc.msi;REINSTALL=ALL'.


MSI (c) (10:3C) [17:30:09:064]: Machine policy value 'Debug' is 0
MSI (c) (10:3C) [17:30:09:064]: ******* RunEngine:
******* Product: projecta\projecta.msi
******* Action:
******* CommandLine: **********
MSI (c) (10:3C) [17:30:09:064]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (10:3C) [17:30:12:074]: Failed to grab execution mutex. System error 258.
MSI (c) (10:3C) [17:30:12:074]: Cloaking enabled.
MSI (c) (10:3C) [17:30:12:074]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (10:3C) [17:30:12:074]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (D4:1C) [17:30:12:074]: Running installation inside multi-package transaction C:\KIOSKCDE\Image\KSK10INST.msi
MSI (s) (D4:1C) [17:30:12:074]: Grabbed execution mutex.
MSI (s) (D4:C4) [17:30:12:074]: Resetting cached policy values
MSI (s) (D4:C4) [17:30:12:074]: Machine policy value 'Debug' is 0
MSI (s) (D4:C4) [17:30:12:074]: ******* RunEngine:
******* Product: C:\Windows\system32\projecta\projecta.msi
******* Action:
******* CommandLine: **********
MSI (s) (D4:C4) [17:30:12:074]: Note: 1: 2203 2: C:\Windows\system32\projecta\projecta.msi 3: -2147287037
MSI (s) (D4:C4) [17:30:12:074]: MainEngineThread is returning 3
MSI (c) (10:3C) [17:30:12:199]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (10:3C) [17:30:12:215]: MainEngineThread is returning 3
=== Verbose logging stopped: 3/18/2010 17:30:12 ===

All the paths to the chained installers show appropriate paths to [SourceDir]\ProjectA\ProjectA.MSI, [SourceDir]\ProjectB\ProjectB.MSI, [SourceDir]\ProjectC\ProjectC.MSI

Any suggestions or solutions? Do I need to use a different property for [SourceDir] when in repair or update mode?

Thank you in advance for any assists.
Lance
Labels (1)
0 Kudos
(2) Replies
LanceRas
Level 7

As a followup, it appears I was able to get things to work. I thought I would share the experience.

1st, I used the [SourceDir] property for the installation path prefix to the chained MSI's. It looks like that property isn't getting set or it's being cleared when in repair / update mode. So I created a custom action after the CostFinalize that would copy the value of SourceDir to a custom property. I then changed [SourceDir] to my custom property for my chained installers.

2nd, I had to set the install properties to REINSTALLMODE=vomus REINSTALL=ALL instead of REINSTALL=ALL.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The property SourceDir is generally left blank during maintenance operations to avoid the prompts for the original source media. The typical way to populate this property is through the ResolveSource action, but your workaround may well avoid the prompts for source. One tweak I'd recommend is making a copy of the property in a custom (probably public) name; it's not exactly kosher to overwrite the standard properties.
0 Kudos