I've defined the following MSIPackage in a chain (Burn 3.6).
<!-- DacFramework x86-->
<MsiPackage
Id="msi_DacFramework"
SourceFile="..\..\External References\MSI\Microsoft\SSDT\DacFramework\11.1.2825.1.May2013\x86\DACFramework.msi"
InstallCondition="(VersionNT64) OR (NOT VersionNT64)"
DownloadUrl="http://ourURL.com/updates/x86/DACFramework.msi"
Compressed="no"
Vital="yes"
Permanent="yes"
SuppressSignatureVerification="yes"
Visible="yes"/>
To my understanding, making it Vital and Permanent should mean it keeps installs on an upgrade to our product - the MSI in question is an SQL Server component that comes from Microsoft, so we're not going to be changing it. The InstallCondition should also return True.
As you can guess from the title however, it IS being uninstalled when our product gets upgraded. From the log, it seems as if it is being asked to.. (REMOVE=ALL)
MSI (s) (D0:18) [17:03:04:781]: Command Line: MSIFASTINSTALL=7 REBOOT=ReallySuppress IGNOREDEPENDENCIES=ALL REMOVE=ALL CURRENTDIRECTORY=C:\Program Files\CompanyName\Product CLIENTUILEVEL=3 CLIENTPROCESSID=4004
...
MSI (s) (D0:18) [17:03:04:781]: PROPERTY CHANGE: Adding REMOVE property. Its value is 'ALL'.
What have I missed in the MSIPackage definition in order to think it's being asked to REMOVE?