我正在构建一个将MSI和EXE捆绑在一起的WiX安装程序。 MSI是我正在注册使用打印机的com程序集,EXE是打印机驱动程序的静默安装程序。
除卸载期间外,链正在正确安装。即使我提供了UninstallCommnand并设置了InstallCriteira,它也不会卸载EXE。
我已经做了大量的挖掘工作,并且只找到了一些解决方案,这些解决方案建议我做的事情就像把perminant设置为no一样,包括InstallCriteira等。
我还通过查看刻录检测部分找到打印机驱动程序的日志进行了验证。
我真的在这里挣扎,任何帮助都会非常感激。
<Bundle Name="Name" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="D5CB951E-1068-43B1-9313-E166527C021B" DisableRepair="yes">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
ShowVersion="yes"
SuppressOptionsUI="yes"
SuppressRepair="yes"
LicenseUrl="http://www.stackoverflow.com"
/>
</BootstrapperApplicationRef>
<Chain>
<MsiPackage SourceFile="..\Assembly\bin\Release\Assembly Installer.msi" Id="AssemblyInstaller" Cache="no" Visible="no" Vital="yes" Permanent="no" />
<ExePackage Id="EpsonPrinterDriver" Cache="no" Compressed="yes" PerMachine="yes" Vital="yes" Permanent="no" SourceFile="..\Assembly\drivers\Apd4Silent.exe" DetectCondition="FindEpsonPrinterDriver" InstallCondition="NOT FindEpsonPrinterDriver" InstallCommand="/s /a" UninstallCommand="/s /uninstall" />
</Chain>
</Bundle>
<Fragment>
<util:RegistrySearch Id="FindEpsonPrinterDriver"
Variable="FindEpsonPrinterDriver"
Root="HKLM"
Key="SOFTWARE\Classes\Installer\Products\9DA28BB46FC041E4DB571CBA56C79241\ProductName" Result="exists" />
</Fragment>
答案 0 :(得分:4)
Burn引擎不会尝试卸载程序包,除非检测到它存在。由于您的包中没有util:RegistrySearchRef,因为片段中的util:RegistrySearch,它没有编译到您的包中而且没有运行,这导致您的包永远不会被检测到