Ответ 1
<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>
В вашем случае переменная $(bootstrapperPackagesFolder)
указывает на C :\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\
. Переменная $(cddir)
- это папка, в которой вы создаете содержимое установочного компакт-диска.
Задача GenerateBootStrapper
будет генерировать не только bootstrapper exe, но также скопировать папки DotNetFX35SP1
и WindowsInstaller3_1
в одно и то же место. Во время установки bootstrapper exe будет искать эти папки и использовать файлы там, а не загружать их.
Я не уверен, что мой пример отличается от того, что вы уже делаете; возможно, вы просто забыли указать папку DotNetFX35SP1
на установочный компакт-диск?