Как сделать установщик WiX с полностью автономным установщиком .NET 3.5 sp1?

Мне нужно включить полный установщик .NET 3.5 sp1 в мой установщик, который находится в WiX.

Мне нужен этот ускоритель, чтобы быть полностью автономным, без доступа к веб-сайту. Для этого установщика просто не требуется использование Интернета; у нас есть клиенты во внешней Монголии (я серьезно, не просто используя название места, потому что он удален), которому мы отправляем компакт-диски, потому что у них нет доступа к интернету вообще.

В учебнике по WiX указано:

<Target Name="AfterBuild">
    <GenerateBootstrapper ApplicationFile="$(TargetFileName)" 
                      ApplicationName="My Application Name"
                      BootstrapperItems="@(BootstrapperFile)"
                      ComponentsLocation="Relative"
                      CopyComponents="True"
                      OutputPath="$(OutputPath)"
                      Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/>
</Target>

Вышеупомянутый загрузочный загрузчик требует наличия сети. Как сделать установщик, который этого не делает?

Ответ 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 на установочный компакт-диск?

Ответ 2

Вы можете проверить этот пример кода Microsoft, дело в том, что WiX не обеспечивает загрузчик/цепочку - это не будет до тех пор, пока WiX 3.5 как инструмент "Запись".

Я не уверен, что вы используете в своем первоначальном примере, я предполагаю msbuild или что-то еще, что не является компонентом WiX.