Saturday, October 17, 2009

WiX and MSXML 6 SP2

I set out to add MSXML 6 to the package we are creating with WiX 3.0. At first I looked for a merge module (MSM), but no luck. I later found this reasoning:
http://channel9.msdn.com/forums/Coffeehouse/256077-MFC-dependencies-madness/?CommentID=323942

I might have thought about extracting the DLLs, but not seriously. Just as well:
http://channel9.msdn.com/forums/Coffeehouse/256077-MFC-dependencies-madness/?CommentID=324015

So that left me needing to author a custom bootstrapper package for MSBuild. I started with this tutorial, which has a few typos/bugs, but got me what I needed:
http://msdn.microsoft.com/en-us/library/aa730839%28VS.80%29.aspx

The particular EXE used is for MSXML6 SP2, and can be found here:
http://www.microsoft.com/downloads/details.aspx?familyid=59914795-60C7-4EBE-828D-F28CB457E6E3&displaylang=en

<?xml version="1.0" encoding="utf-8"?>
<Product
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
    ProductCode="Microsoft.MSXML.6.SP2">

  <PackageFiles>
    <PackageFile Name="msxml6-KB954459-enu-x86.exe"/>
  </PackageFiles>

  <InstallChecks>
    <MsiProductCheck 
        Property="IsMsiInstalled" 
        Product="{1A528690-6A2D-4BC5-B143-8C4AE8D19D96}"/>
  </InstallChecks>

  <Commands>
    <Command PackageFile="msxml6-KB954459-enu-x86.exe" Arguments="">
      <InstallConditions>
        <BypassIf 
            Property="IsMsiInstalled" 
            Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser" 
                Compare="ValueNotEqualTo" Value="True"
                String="NotAnAdmin"/>
      </InstallConditions> 

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
      </ExitCodes>
    </Command>
  </Commands>
</Product>

No comments:

Post a Comment