Как мне создать установщик WiX с полностью автономным установщиком .NET 3.5 sp1?
-
13-09-2019 - |
Вопрос
Мне нужно включить полный установщик .NET 3.5 sp1 в мой установщик, который находится в WiX.
Мне нужно, чтобы этот boostrapper был полностью автономным, без какого-либо доступа в Интернет вообще.Этому установщику просто не разрешается запрашивать доступ к Интернету;у нас есть клиенты во внешней Монголии (я серьезно, а не просто использую название места, потому что оно удаленное), которым мы отправляем компакт-диски, потому что у них вообще нет доступа в Интернет.
В руководстве по 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>
Для вышеупомянутого загрузчика требуется Интернет.Как мне создать установщик, который этого не делает?
Решение
<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
задача не только сгенерирует исполняемый файл загрузчика, но и скопирует DotNetFX35SP1
и еще WindowsInstaller3_1
папку в том же месте.Во время установки загрузчик exe будет искать эти папки и использовать содержащиеся в них файлы, а не загружать их.
Я не уверен, отличается ли мой пример от того, что вы уже делаете;может быть, вы просто забыли включить DotNetFX35SP1
папка на установочном компакт-диске?
Другие советы
Вы можете проверить это Пример кода Майкрософт, Дело в том, что WiX не предоставляет загрузчика/цепочки - он появится только в WiX 3.5 в качестве инструмента «Запись».
Я не уверен, что вы используете в исходном примере, я предполагаю msbuild
или что-то еще, что не является компонентом WiX.