Создание пакета Bootstrapper, когда все предварительные требования не находятся в одном корневом каталоге setup.exe
Я новичок в создании пакетов Bootstrapper. В настоящее время я создал пакет Bootstrapper, в котором все необходимые компоненты (VC++, IPP, Windows Installer 3.1, application.mxi) будут находиться в одной папке, а setup.exe будет находиться снаружи. Для этого я сохранил файл product.xml, в котором есть детали кода продукта для всех предварительных условий, и папку, в которой файл package.xml находится в корневом каталоге (Bootstrapper\Packages\Dependencies). На самом деле проблема, с которой я сталкиваюсь, заключается в том, что "отображаемое имя" является общим для всех предварительных условий. Я хочу отображаемое имя для списка всех пропущенных предпосылок при установке. Если я сохраню все предварительные требования в одном корневом каталоге файла setup.exe с отдельным product.xml и папкой en для каждого предварительного требования, то он отображает отображаемое имя правильно. Но мне нужна структура папок, как будто setup.exe должен быть вне предусловий. Есть ли возможность не хранить product.xml в корневом каталоге setup.exe?
<Project DefaultTargets="DoPostBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<MSIName>Test</MSIName>
<MSIFile>$(MSIName).msi</MSIFile>
<DeploymentPath>D:\Test</DeploymentPath>
<TargetPath>$(DeploymentPath)\$(MSIName)</TargetPath>
<BootstrapperPath>D:\Bootstrapper</BootstrapperPath>
<BootstrapperPackagesPath>$(BootstrapperPath)\Packages</BootstrapperPackagesPath>
</PropertyGroup>
<Target Name="CreateTargetDirectory">
<Exec Command="rmdir $(MSIName) /s /q" WorkingDirectory="$(DeploymentPath)" />
<Exec Command="md $(MSIName)" WorkingDirectory="$(DeploymentPath)" />
</Target>
<Target Name="CopyMSI" DependsOnTargets="CreateTargetDirectory">
<copy SourceFiles=".\Test\Release\Test.msi" DestinationFiles="$(TargetPath)\$(MSIFile)" />
</Target>
<Target Name="MakeLinks" DependsOnTargets="CreateTargetDirectory">
<Exec Command="md $(TargetPath)\IPP6_0" />
<Exec WorkingDirectory="$(TargetPath)\IPP6_0" Command="mklink /H ipp_runtime_6_0_x86.msi "
$(BootstrapperPackagesPath)\IPP6_0\ipp_runtime_6_0_x86.msi"" />
<Exec Command="md $(TargetPath)\vcredist_x86_2005" />
<Exec WorkingDirectory="$(TargetPath)\vcredist_x86_2005" Command="mklink /H vcredist_x86.exe "
$(BootstrapperPackagesPath)\vcredist_x86_2005\vcredist_x86.exe"" />
</Target>
<ItemGroup>
<BootstrapperFile Include="IPP.Runtime.6.0.x86">
<ProductName>IPP 6.0</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Visual.C++.8.0.x86">
<ProductName>VC++ 2005 Runtime</ProductName>
</BootstrapperFile>
</ItemGroup>
<Target Name="BuildBootstrapper" DependsOnTargets="CopyMSI;MakeLinks">
<GenerateBootstrapper
ApplicationFile="$(MSIFile)"
ApplicationName="Test"
BootstrapperItems="@(BootstrapperFile)"
ComponentsLocation="Absolute"
ComponentsUrl="($TargetPath)"
CopyComponents="false"
Culture="en"
Path="$(BootstrapperPath)"
OutputPath="$(DeploymentPath)"/>
</Target>
<Target Name="DoPostBuild" DependsOnTargets="BuildBootstrapper" />
</Project>
}