2

I'm building a WiX installer that bundles an MSI and EXE together. The MSI is a com assembly that I'm registering to work with a printer, the EXE is the silent installer for the printer drivers.

The chain is installing properly except during uninstall. It will not uninstall the EXE even though I have provided the UninstallCommnand and set the InstallCriteira.

I've done a lot of digging and have only found solutions that suggest doing things that I'm already doing like setting perminant to no, including InstallCriteira, etc.

I've also verified by looking at the logs that the detection section of burn is finding the printer drivers OK.

I'm really struggling here, any help would be greatly appreciated.

<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>
Brian Dishaw
  • 5,767
  • 34
  • 49
  • I assume this is a simplified version? Because that RegistrySearch won't run unless you have a RegistrySearchRef in the Bundle. Please include the Detect and Plan parts of the log. – Sean Hall Aug 06 '14 at 18:48
  • Thanks for assuming that I'm didn't do something dumb, but as it turns out I did not have the RegistrySearchRef in my Bundle. /facepalm If you convert your comment to an answer, I'll accept it. Thank you very much! – Brian Dishaw Aug 07 '14 at 01:33
  • "COM assembly"? Like a serial port or [the binary interface](http://en.wikipedia.org/wiki/Component_Object_Model)? – Peter Mortensen Aug 07 '14 at 20:18

1 Answers1

4

The Burn engine won't try to uninstall a package unless it is detected as present. Since you don't have a util:RegistrySearchRef in your bundle for the util:RegistrySearch in the fragment, it's not compiled into your bundle and doesn't run, which causes your package to never be detected.

Sean Hall
  • 7,629
  • 2
  • 29
  • 44