Using WIX3.6 to Install the .NET Framework 3.5 Service Pack 1

I am trying to use Burn and WIX 3.6 to install the installer for my application. The installer should be able to install .NET 3.5 SP1 from the Microsoft website. I am working from a working WIX project created using WIX 3.5. It works if .NET 3.5 SP1 was previously installed on the target machine. The first step is to create the package, so I added the item to the Product.wxs file. When I do this, I get an error that the circuit is invalid, instead I should have it instead. Does this mean that I need to pass all product definitions into a fragment? It is unclear how I do this. Then things get complicated, because WixNetfxExtension only provides PackageRef for .NET 4.0 and 4.5. I am not ready to switch my application to this version of the framework. How can I get .NET 3.5 SP1 from a web source in my package?

Is there any working example?

+5
wix burn
source share
1 answer

In your question, where are you trying to do something incomprehensible, it is unclear, so I will start from the very beginning.

Create a new Wix Burn download project. Your dependencies will be installed here, and then your existing Wix 3.5 installer will be created.

Download the complete .net 3.5 SP1 package and note the direct URL used to download it.

Using heat.exe (in the wix 3.6 bin directory), run the following command, which will generate a WXS file with the details of the .net installer.

heat.exe payload [path_to_net_installer] -o [path_to_wxs] 

this.will will give you the following in wxs:

 <RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8" CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" Description=".NET Framework 3.5 Setup" Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" ProductName=".NET Framework 3.5" Size="242743296" Version="3.5.30729.1" /> 

Add this to the bootstrapper project as a child of ExePackage and update the element with the previously saved download URL. This will download the .net installer automatically, or you can place it next to the boot exe file and it will detect it.

Create a chain in the Bundle that contains .net ExePackage and MsiPackage for your installer. Then you will get something like (many necessary attributes, I will leave you to fill!):

  <Bundle Name="$(var.SkuName)" Copyright="$(var.Copyright)" Manufacturer="$(var.Manufacturer)" Version="$(var.ProductVersion)" UpgradeCode="$(var.UpgradeCode)"> <Chain> <ExePackage Id="dotNetFX3.5"> <RemotePayload /> </ExePackage> <MsiPackage Id="MyMsi" /> </Chain> </Bundle> 

The assembly, and then you should have a large exe with msi enabled, or if you decide not to compress it with the exe that your msi runs (it should be in the same folder).

+11
source share

All Articles