<Project ToolsVersion="3.5"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" >
<ProductName>.NET Framework 3.5 SP1</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.3.1" >
<ProductName>Windows Installer 3.1</ProductName>
</BootstrapperFile>
</ItemGroup>
<Target Name="setup">
<GenerateBootstrapper
ApplicationFile="myproduct.msi"
ApplicationName="myproduct"
BootstrapperItems="@(BootstrapperFile)"
Path="$(bootstrapperPackagesFolder)"
ComponentsLocation="Relative"
OutputPath="$(cddir)"
Culture="en"/>
</Target>
</Project>
In your case, the $(bootstrapperPackagesFolder)
variable would point to C:Program FilesMicrosoft SDKsWindowsv6.0ABootstrapper
. The $(cddir)
variable is the folder where you compose the content of your installation CD.
The GenerateBootStrapper
task will not only generate a bootstrapper exe, but will also copy a DotNetFX35SP1
and a WindowsInstaller3_1
folder to the same location. During installation, the bootstrapper exe will look for those folders and use the files in there, rather than downloading them.
I'm not sure if my example is different from what you are already doing; maybe you just forgot to include the DotNetFX35SP1
folder on the installation CD?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…