无法在链中卸载exe

时间:2014-08-06 17:03:37

标签: wix burn

我正在构建一个将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>

1 个答案:

答案 0 :(得分:4)

Burn引擎不会尝试卸载程序包,除非检测到它存在。由于您的包中没有util:RegistrySearchRef,因为片段中的util:RegistrySearch,它没有编译到您的包中而且没有运行,这导致您的包永远不会被检测到