4
votes

I have a Wix installer and bootstrapper application to install my application and a service. As a prerequisite I need the .NET 2.0 SP2 Framework installed and tried to detect that using the following codesnippet:

    <Chain>
      <PackageGroupRef Id='Netfx2Package' />
      <MsiPackage SourceFile="..\Wix.CHL7.Dispatcher.Service.AZHF\bin\Debug\Wix.CHL7.Dispatcher.Service.AZHF.msi" Id="Wix.CHL7.Dispatcher.Service.AZHF_PackageId" Cache="yes" Visible="no">
        <MsiProperty Name="INSTALLDIR" Value="[INSTALLPATH]" />
        <MsiProperty Name="WixAppFolder" Value="[INSTALLSCOPE]"/>

      </MsiPackage>
    </Chain>
  </Bundle>

  <Fragment>
    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx2Package" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />      

    <PackageGroup Id="Netfx2Package">
      <ExePackage Id="Netfx2Exe"
                  Cache="no"
                  Compressed="no"
                  PerMachine="yes"
                  Permanent="yes"
                  Vital="yes"
                  SourceFile="C:\Installation\Wix.CHL7.Dispatcher.Service.Bootstrapper\lib\NetFx20SP2_x86.exe"
                  DownloadUrl="http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe"
                  DetectCondition="NETFRAMEWORK20"
                  InstallCondition="FALSE"/>
    </PackageGroup>
  </Fragment>

When I run the installer on a machine which has .NET 2.0 SP2 installed (checked that in the registry) my installer wants to download and install the framework.

I assume my DetectCondition is incorrect but can't seem to find a correct solution to my problem. So how do I detect if .NET 2.0 SP2 is installed in my bootstrapper?

Thanks in advance!

W

1

1 Answers

5
votes

Make sure you are referencing the NetFxExtension properly.

Source: WixNetfxExtension

Using WixNetfxExtension Properties To use the WixNetfxExtension properties in an MSI, use the following steps:

Add PropertyRef elements for items listed above that you want to use in your MSI. Add the -ext command line parameter when calling light.exe to include the WixNetfxExtension in the MSI linking process.

For example:

<PropertyRef Id="NETFRAMEWORK20" />

Also, you probably want to use the property NETFRAMEWORK20_SP_LEVEL to get the appropriate service pack level if you require SP2. When troubleshooting I'd also check the install log to see if it indicates what the property values are set to.