cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
westhusing
Level 6

Uninstall with chained MSIs

Hi,

I'm trying to use an Installscript MSI that uses chained MSIs. When I install all of my chained MSIs install as they should, in the correct locations with the correct files, etc.

However, when I try to uninstall my Installscript MSI, none of the chained MSIs are removed. I have to manually go back and remove each MSI one by one. Is there a solution for removing those chained MSIs without having to use Installscript?

Thanks.
Labels (1)
0 Kudos
(4) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

I don't have time to go deep, but here are some questions you can look at to perhaps find some answers.

  • Do these chained MSIs uninstall cleanly with msiexec /x {PRO-DUCT-CODE}?
  • Does the verbose uninstall log file show ISChainPackagePrepare run during uninstall and does the IS_CHAINER_POST_COMMANDLINE property include the corresponding /x{PRO-DUCT-CODE} arguments?
  • Does the verbose uninstall log file show lines like "Searching for a valid Embedded Chainer to run" and "Scheduled to run after install"?
0 Kudos
westhusing
Level 6

MichaelU wrote:
I don't have time to go deep, but here are some questions you can look at to perhaps find some answers.

  • Do these chained MSIs uninstall cleanly with msiexec /x {PRO-DUCT-CODE}?
  • Does the verbose uninstall log file show ISChainPackagePrepare run during uninstall and does the IS_CHAINER_POST_COMMANDLINE property include the corresponding /x{PRO-DUCT-CODE} arguments?
  • Does the verbose uninstall log file show lines like "Searching for a valid Embedded Chainer to run" and "Scheduled to run after install"?


1) Yes
2) Yes. No, there is not a property like that because it's indicating to me that the products are not installed.
3) No

Here is a portion of my uninstall log at the point where it's trying to uninstall the Chained packages:
(BTW, all of the chained packages are installed at this point even though the log is indicating that they are not)

[CODE]MSI (s) (60:58) [17:38:19:796]: Doing action: ISChainPackagePrepare
Action ended 17:38:19: RemoveExistingProducts. Return value 0.
MSI (s) (60:E8) [17:38:19:811]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI5D50.tmp, Entrypoint: ISChainPackages
MSI (s) (60:F4) [17:38:19:811]: Generating random cookie.
MSI (s) (60:F4) [17:38:19:811]: Created Custom Action Server with PID 2432 (0x980).
MSI (s) (60:34) [17:38:19:842]: Running as a service.
MSI (s) (60:34) [17:38:19:842]: Hello, I'm your 32bit Impersonated custom action server.
Action start 17:38:19: ISChainPackagePrepare.
InstallShield 17:38:19: Skipping chained package App removal because it is not installed
InstallShield 17:38:19: Skipping chained package CBAF_Gen removal because it is not installed
InstallShield 17:38:19: Skipping chained package HWA_Gen removal because it is not installed
InstallShield 17:38:19: Skipping chained package SDKCore removal because it is not installed
InstallShield 17:38:19: Skipping chained package SDKUWB removal because it is not installed
InstallShield 17:38:19: Skipping chained package UWBExt removal because it is not installed
MSI (s) (60:58) [17:38:19:983]: Doing action: InstallInitialize
Action ended 17:38:19: ISChainPackagePrepare. Return value 1.
MSI (s) (60:58) [17:38:19:983]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (60:58) [17:38:19:983]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (60:58) [17:38:19:983]: Embedded Chainer - Searching for a valid Embedded Chainer to run
MSI (s) (60:58) [17:38:19:983]: Embedded Chainer - Skipping chainer: ISChainPackagesPost (condition is false)
MSI (s) (60:58) [17:38:19:983]: BeginTransaction: Locking Server
MSI (s) (60:58) [17:38:19:983]: SRSetRestorePoint skipped for this transaction.
MSI (s) (60:58) [17:38:19:983]: Server not locked: locking for product {6B58524F-8BE3-4318-8B27-27FCDFDA92F9}
[/CODE]
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The check which leads to the message "Skipping chained package removal because it is not installed" is a simple MsiQueryProductState. This suggests to me that your product codes may be out of sync, and that is why they cannot be found and removed. Can you verify that the ones you can successfully use to uninstall them in (1) are the same that are in the IDE?
0 Kudos
westhusing
Level 6

That was the problem. I updated the product codes in some of my chained packages, but didn't update in the IDE. It appears as if the file location was still valid for streaming the package into the install, however the product code didn't match so that's why the uninstall didn't work.

Thank you very much for your help.
0 Kudos