WIX Bootstrapper with individual upgraded msi won't uninstall - wix

I have an wix bootstrapper that installs multiple msi's via chaining. One for the main app and others for plugins for the main application. The plugins version separately and their MSI could be upgraded during an autoupdate routine. The problem I have is that the uninstall on the bundle wont uninstall the MSIs for the plugins once they have been upgraded. Is it possible to set it up so that uninstalling the bootstrapper will uninstall the plugins regardless if they were upgraded?
For reference, I am always doing a major upgrade on each MSI.

Once a chained MSI is upgraded outside of the control of the WIX bootstrapper, un-installing the WIX bootstrapper will leave the upgraded MSI behind. This is by design. See the answer to How Wix bootstrapper uninstall msi package that has been upgraded for a more detailed explanation.

Related

How to make WiX Toolset (Burn) Bootstrapper recognize an upgrade?

I'm using the WiX (Burn) Bootstrapper to wrap my MSI installer (so that I can install some prerequisite libraries with it.)
It works fine for installation and uninstallation, but I can't seem to figure out how to implement an upgrade with it? Say, if I had version 1.0.0 installed and now I run it for version 1.0.1.
PS. I made sure that UpgradeCode values in the XML markup for both MSI and bootstrapper are the same. But it didn't help. The bootstrapper still behaves like an upgrade to the next version is just a plain installation.
The upgraded bootstrapper should behave like a plain installation. If version 1.0.1 was installed successfully, everything is ok.
If you want bootstrapper to detect previous version, you should use custom bootstrapper application and DetectRelatedBundle event.

Wix bootstrapper uninstalling MSI package in silent mode

I have an msi bundled with prerequisites using Wix bootstrapper (burn.exe).
We migrated this project from Installshield to WiX.
The installation works fine.
However, during repair or uninstall the bootstrapper runs the msi-file in silent mode.
Since the last dialog (e.g. 'SetupCompleteSuccess') within the msi file contains some controls to trigger some more actions.
Is there a possibility to configure the bootstrapper so that the msi file is executed in 'UI'-mode?
In WiX v3, it is not possible. Burn explicitly shows internal UI only during initial install. WiX v4 changes how that works: https://github.com/wixtoolset/issues/issues/5616

How do I programmatically uninstall a cached Wix Burn program

I have created a Wix Burn app that I am installing two MSI's with. Works great.
The MSI files install properly
The Wix Burn app registers with ARP.
The MSI files do not register with ARP
I can do Major Upgrades
I can install and uninstall manually with a local copy of the Wix Burn app
I can programmatically execute the Wix Burn app to uninstall (using /x)
The Problem:
I know two way to uninstall using a Wix Burn app:
Click on the Uninstall button in ARP (requires user involvement)
Launch a copy of the Wix Burn app that installed the product
I see in the Wix Burn log that Windows caches my Wix Burn app install in much the same way that MSIEXEC will cache MSI files. Is there a way to programmatically ask Windows or MSI to use the cached version of the Wix Burn app to do the uninstall?
A Possibility:
Presumably I could use MsiGetProductInfo() to get a path to the cached Wix Burn app. To do that, however, I need my app's Product Code. However, Product Codes are not attributes of elements in Wix so I am not seeing how to get a Product Code for a Burn package.
You might be able to solve this by iterating through the Uninstall registry entries. The process is:
Open HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.
Iterate through the sub-keys searching for an entry where the Publisher and DisplayName matches your product.
If you find an entry, read the value of QuietUninstallString and run that as a command. For a WIX burn installer this is typically in the form C:\ProgramData\Package Cache\{GUID}\SetupProgram.exe /uninstall /quiet.
If you are using a 64 bit operating system you will also need to search HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall.

WIX Bootstrapper - Selected MSI packages uninstallation

I have created a Wix custom bootstrapper application and bundle file using Wix 3.8. Bundle file contains five MSI packages. Created a setup and installed it. All MSI packages are installed and uninstalled correctly.
Then, I have include "InstallCondition" attribute in each MSI package elements in bundle file. Installed the setup based on the selection (installed three MSI packages). Installation working fine.
Now I want to uninstall any of selected MSI packages from installed packages (three packages installed) using custom BA.
Is it possible do the above using Wix CBA? Please share any idea regarding this.
Thanks
You need to call Plan with the Modify action (or Uninstall if you want to uninstall the whole bundle). Then in the OnPlanPackageBegin callback, set the desired state of the package (Absent to uninstall). I think if the InstallCondition of a package evaluates to false during a Modify or Uninstall action, the engine would plan to uninstall it by default.

Uninstalling Installshield msi during WiX msi installation process

We have moved from InstallShield LE 2010 to WiX.
Our new WiX installer is able to uninstall previous WiX msi packages, but it does not detect the previous version of our software installed from the IS msi.
What steps should we take to make our WiX msi installer to detect the previous IS installations and uninstall them automatically?
In theory you will just need to make sure that the UpgradeCode on your product tag in wix is the same as the one in your InstallShield installer and the version number is greater in the wix project.
How you get that out of your InstallShield project that I don't know as I've never used InstallShield.
This helped me to grab the ProductCode and UpgradeCode from the old installer.
How to find the upgrade code & productCode of an installed application in Win 7
Although I am finding that InstallShield creates its own registry uninstall information along with Windows Installer information. When you uninstall something using Windows Installer (MSIEXEC) that was installed by InstallShield installer, it only wipes the Windows Installer registry nodes keeping InstallShield nodes intact. This makes the product show up in the Add/Remove Programs (Programs and Features) even though Windows Installer successfully uninstalls it.