我在链中定义了以下 MSIPackage ( 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"/>
据我了解,使其成为Vital和Permanent应该意味着它在升级我们的产品时保持安装 - 有问题的 MSI 是来自 Microsoft 的SQL Server组件,因此我们不会更改它。InstallCondition也应该返回 True 。
但是,正如您从标题中猜到的那样,当我们的产品升级时,它正在被卸载。从日志看来,它似乎被要求...(删除=全部)
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'.
为了认为它被要求删除,我在 MSIPackage 定义中遗漏了什么?