Paul Hunt
Paul Hunt

Reputation: 3575

How to include .NET framework package in a WiX bootstrapped installer for clients without an internet connection

I am writing a WiX installer that has a .NET 4 full pre-req and so I am using Burn to include generate a bootstrapped installer. This is working fine except that instead of downloading the .NET installer from the internet during installation, I want to include it in the installer itself so that clients without an internet connection will be able to use it.

I found this post which suggests it's possible but I have created a redist folder with the .NET installer (dotNetFx40_Full_setup.exe) underneath my Bundle.wxs file and yet it doesn't pick it up when I compile.

Bundle.wxs:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="MyProduct" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="96088bf4-1776-42d0-9ab9-ba3fa9dc7ec3" IconSourceFile="..\MyProduct.ico" SplashScreenSourceFile="..\MyProduct.bmp">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />    

        <Chain>
      <PackageGroupRef Id="NetFx40Redist"/>
      <MsiPackage DisplayInternalUI="yes" SourceFile="..\bin\$(var.Configuration)\setup.msi" />
        </Chain>
    </Bundle>
</Wix>

Build log:

------ Build started: Project: MyProductSetup.CustomActions, Configuration: Debug x86 ------
  All packages listed in packages.config are already installed.
  MyProductSetup.CustomActions -> C:\Development\Boris\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\MyProductSetup.CustomActions.dll
------ Build started: Project: MyProductSetup, Configuration: Debug x86 ------
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Heat.exe dir "C:\Deployed Boris\API" -cg APIComponents -dr APIFOLDER -sreg -srd -var var.APISourceDir -ag -sfrag -out AutoGenerated\APIFiles.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Heat.exe dir "C:\Deployed Boris\SSO" -cg SSOComponents -dr SSOFOLDER -sreg -srd -var var.SSOSourceDir -ag -sfrag -out AutoGenerated\SSOFiles.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Heat.exe dir "C:\Deployed Boris\Website" -cg WebsiteComponents -dr WEBSITEFOLDER -sreg -srd -var var.WebsiteSourceDir -ag -sfrag -out AutoGenerated\WebsiteFiles.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Heat.exe dir "C:\Deployed Boris\Database Scripts" -cg DatabaseScriptsComponents -dr DATABASESCRIPTSFOLDER -sreg -srd -var var.DatabaseScriptsSourceDir -ag -sfrag -out AutoGenerated\DatabaseScriptsFiles.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\candle.exe -wx -dDebug -d"APISourceDir=C:\Deployed MyProduct\API" -d"SSOSourceDir=C:\Deployed MyProduct\SSO" -d"WebsiteSourceDir=C:\Deployed MyProduct\Website" -d"DatabaseScriptsSourceDir=C:\deployed MyProduct\Database Scripts" -dVersion=4.0.0 -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\\" -dSolutionDir=C:\Development\MyProduct\trunk\Applications\Installer\ -dSolutionExt=.sln -dSolutionFileName=MyProductSetup.sln -dSolutionName=MyProductSetup -dSolutionPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.sln -dConfiguration=Debug -dOutDir=bin\Debug\ -dPlatform=x86 -dProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\ -dProjectExt=.wixproj -dProjectFileName=MyProductSetup.wixproj -dProjectName=MyProductSetup -dProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\MyProductSetup.wixproj -dTargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\ -dTargetExt=.msi -dTargetFileName=MyProductSetup.msi -dTargetName=MyProductSetup -dTargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.msi -dMyProductSetup.CustomActions.Configuration=Debug -d"MyProductSetup.CustomActions.FullConfiguration=Debug|x86" -dMyProductSetup.CustomActions.Platform=x86 -dMyProductSetup.CustomActions.ProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\ -dMyProductSetup.CustomActions.ProjectExt=.csproj -dMyProductSetup.CustomActions.ProjectFileName=MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.ProjectName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.ProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.TargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\ -dMyProductSetup.CustomActions.TargetExt=.dll -dMyProductSetup.CustomActions.TargetFileName=MyProductSetup.CustomActions.dll -dMyProductSetup.CustomActions.TargetName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.TargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\MyProductSetup.CustomActions.dll -out obj\Debug\pth2D6B79CE7AF38B591B0D975BED49C71F\ -pedantic -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" AutoGenerated\APIFiles.wxs AutoGenerated\DatabaseScriptsFiles.wxs AutoGenerated\SSOFiles.wxs AutoGenerated\WebsiteFiles.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\candle.exe -wx -dDebug -d"APISourceDir=C:\Deployed MyProduct\API" -d"SSOSourceDir=C:\Deployed MyProduct\SSO" -d"WebsiteSourceDir=C:\Deployed MyProduct\Website" -d"DatabaseScriptsSourceDir=C:\deployed MyProduct\Database Scripts" -dVersion=4.0.0 -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\\" -dSolutionDir=C:\Development\MyProduct\trunk\Applications\Installer\ -dSolutionExt=.sln -dSolutionFileName=MyProductSetup.sln -dSolutionName=MyProductSetup -dSolutionPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.sln -dConfiguration=Debug -dOutDir=bin\Debug\ -dPlatform=x86 -dProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\ -dProjectExt=.wixproj -dProjectFileName=MyProductSetup.wixproj -dProjectName=MyProductSetup -dProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\MyProductSetup.wixproj -dTargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\ -dTargetExt=.msi -dTargetFileName=MyProductSetup.msi -dTargetName=MyProductSetup -dTargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.msi -dMyProductSetup.CustomActions.Configuration=Debug -d"MyProductSetup.CustomActions.FullConfiguration=Debug|x86" -dMyProductSetup.CustomActions.Platform=x86 -dMyProductSetup.CustomActions.ProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\ -dMyProductSetup.CustomActions.ProjectExt=.csproj -dMyProductSetup.CustomActions.ProjectFileName=MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.ProjectName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.ProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.TargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\ -dMyProductSetup.CustomActions.TargetExt=.dll -dMyProductSetup.CustomActions.TargetFileName=MyProductSetup.CustomActions.dll -dMyProductSetup.CustomActions.TargetName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.TargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\MyProductSetup.CustomActions.dll -out obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\ -pedantic -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" CustomPages\DatabaseServer.wxs CustomPages\EmailMode.wxs CustomPages\Registration.wxs CustomPages\WebServer.wxs CustomPages\UIFlow.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\candle.exe -wx -dDebug -d"APISourceDir=C:\Deployed MyProduct\API" -d"SSOSourceDir=C:\Deployed MyProduct\SSO" -d"WebsiteSourceDir=C:\Deployed MyProduct\Website" -d"DatabaseScriptsSourceDir=C:\deployed MyProduct\Database Scripts" -dVersion=4.0.0 -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\\" -dSolutionDir=C:\Development\MyProduct\trunk\Applications\Installer\ -dSolutionExt=.sln -dSolutionFileName=MyProductSetup.sln -dSolutionName=MyProductSetup -dSolutionPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.sln -dConfiguration=Debug -dOutDir=bin\Debug\ -dPlatform=x86 -dProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\ -dProjectExt=.wixproj -dProjectFileName=MyProductSetup.wixproj -dProjectName=MyProductSetup -dProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\MyProductSetup.wixproj -dTargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\ -dTargetExt=.msi -dTargetFileName=MyProductSetup.msi -dTargetName=MyProductSetup -dTargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.msi -dMyProductSetup.CustomActions.Configuration=Debug -d"MyProductSetup.CustomActions.FullConfiguration=Debug|x86" -dMyProductSetup.CustomActions.Platform=x86 -dMyProductSetup.CustomActions.ProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\ -dMyProductSetup.CustomActions.ProjectExt=.csproj -dMyProductSetup.CustomActions.ProjectFileName=MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.ProjectName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.ProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.TargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\ -dMyProductSetup.CustomActions.TargetExt=.dll -dMyProductSetup.CustomActions.TargetFileName=MyProductSetup.CustomActions.dll -dMyProductSetup.CustomActions.TargetName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.TargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\MyProductSetup.CustomActions.dll -out obj\Debug\pthC8EF85A2A1A4FD77C0CA016DD028CBFF\ -pedantic -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" IIS\API.wxs IIS\SSO.wxs IIS\Website.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\candle.exe -wx -dDebug -d"APISourceDir=C:\Deployed MyProduct\API" -d"SSOSourceDir=C:\Deployed MyProduct\SSO" -d"WebsiteSourceDir=C:\Deployed MyProduct\Website" -d"DatabaseScriptsSourceDir=C:\deployed MyProduct\Database Scripts" -dVersion=4.0.0 -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\\" -dSolutionDir=C:\Development\MyProduct\trunk\Applications\Installer\ -dSolutionExt=.sln -dSolutionFileName=MyProductSetup.sln -dSolutionName=MyProductSetup -dSolutionPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.sln -dConfiguration=Debug -dOutDir=bin\Debug\ -dPlatform=x86 -dProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\ -dProjectExt=.wixproj -dProjectFileName=MyProductSetup.wixproj -dProjectName=MyProductSetup -dProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\MyProductSetup.wixproj -dTargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\ -dTargetExt=.msi -dTargetFileName=MyProductSetup.msi -dTargetName=MyProductSetup -dTargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.msi -dMyProductSetup.CustomActions.Configuration=Debug -d"MyProductSetup.CustomActions.FullConfiguration=Debug|x86" -dMyProductSetup.CustomActions.Platform=x86 -dMyProductSetup.CustomActions.ProjectDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\ -dMyProductSetup.CustomActions.ProjectExt=.csproj -dMyProductSetup.CustomActions.ProjectFileName=MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.ProjectName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.ProjectPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\MyProductSetup.CustomActions.csproj -dMyProductSetup.CustomActions.TargetDir=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\ -dMyProductSetup.CustomActions.TargetExt=.dll -dMyProductSetup.CustomActions.TargetFileName=MyProductSetup.CustomActions.dll -dMyProductSetup.CustomActions.TargetName=MyProductSetup.CustomActions -dMyProductSetup.CustomActions.TargetPath=C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup.CustomActions\bin\Debug\MyProductSetup.CustomActions.dll -out obj\Debug\ -pedantic -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" Main.wxs
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Light.exe -out C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.msi -pdbout C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\bin\Debug\MyProductSetup.wixpdb -wx -cultures:null -dConfiguration=Debug -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixIIsExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixUIExtension.dll" -pedantic -contentsfile obj\Debug\MyProductSetup.wixproj.BindContentsFileListnull.txt -outputsfile obj\Debug\MyProductSetup.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj\Debug\MyProductSetup.wixproj.BindBuiltOutputsFileListnull.txt -wixprojectfile C:\Development\MyProduct\trunk\Applications\Installer\MyProductSetup\MyProductSetup.wixproj obj\Debug\pth2D6B79CE7AF38B591B0D975BED49C71F\APIFiles.wixobj obj\Debug\pth2D6B79CE7AF38B591B0D975BED49C71F\DatabaseScriptsFiles.wixobj obj\Debug\pth2D6B79CE7AF38B591B0D975BED49C71F\SSOFiles.wixobj obj\Debug\pth2D6B79CE7AF38B591B0D975BED49C71F\WebsiteFiles.wixobj obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\DatabaseServer.wixobj obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\EmailMode.wixobj obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\Registration.wixobj obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\WebServer.wixobj obj\Debug\pth8A17003C77C5FED13E7347DB7040BE89\UIFlow.wixobj obj\Debug\pthC8EF85A2A1A4FD77C0CA016DD028CBFF\API.wixobj obj\Debug\pthC8EF85A2A1A4FD77C0CA016DD028CBFF\SSO.wixobj obj\Debug\pthC8EF85A2A1A4FD77C0CA016DD028CBFF\Website.wixobj obj\Debug\Main.wixobj
------ Build started: Project: MyProductBootstrapper, Configuration: Debug x86 ------
        C:\Program Files (x86)\WiX Toolset v3.7\bin\Light.exe -out C:\Development\MyProduct\trunk\Applications\Installer\MyProductBootstrapper\bin\Debug\MyProductSetup.exe -pdbout C:\Development\MyProduct\trunk\Applications\Installer\MyProductBootstrapper\bin\Debug\MyProductSetup.wixpdb -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixNetFxExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.7\bin\\WixBalExtension.dll" -contentsfile obj\Debug\MyProductBootstrapper.wixproj.BindContentsFileList.txt -outputsfile obj\Debug\MyProductBootstrapper.wixproj.BindOutputsFileList.txt -builtoutputsfile obj\Debug\MyProductBootstrapper.wixproj.BindBuiltOutputsFileList.txt -wixprojectfile C:\Development\MyProduct\trunk\Applications\Installer\MyProductBootstrapper\MyProductBootstrapper.wixproj obj\Debug\Bundle.wixobj
========== Build: 3 succeeded or up-to-date, 0 failed, 0 skipped ==========

Upvotes: 2

Views: 1848

Answers (1)

Tom Blodget
Tom Blodget

Reputation: 20812

What the post is saying is that you can ship any payload marked as downloadable along with the burn exe and the download will be skipped.

If, instead, you want to bundle package files (inside an internal .exe container) then you have to define the package without payloads marked as downloadable. None of the .NET package definitions that ship with WiX 3.7 do that so you have to write your own.

A good way to start is to copy one that downloads the payload and customize it. That way, you'll have the same detect conditions and installation arguments.

Upvotes: 1

Related Questions