Комплект WiX для установки .NET
Я пытаюсь создать пакет для установки .NET Framework 4.0, если он должен быть установлен. Я понимаю, что есть похожие вопросы, но все ответы - это просто фрагменты и не описывают, в какой файл они входят, и как они импортируются в файл .wxs.
Это то, что у меня есть в файле Bundle.wxs. Я получаю предупреждения компилятора о нескольких разделах ввода.
Ошибка 2 Найдено несколько разделов ввода {CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4} 'и' {0D1EE60A-FC4F-4083-8B1E-311E75A67B4C} '. В одной цели может присутствовать только одна секция ввода.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle UpgradeCode="{C6FF478E-C3DA-4D78-929D-24C3F3307356}" Version="4.0">
<Chain>
<PackageGroupRef Id="NetFx40Redist"/>
</Chain>
</Bundle>
</Wix>
Большинство ссылок на странице WiX сломаны и ничего не упоминают об атрибутах, которые нужно использовать в теге Bundle, и, по-видимому, меняют пакет/продукт. Я не мог найти упоминания на страницах Wix об установке GUID для Bundles. Это что-то новое для Wix 3.7?
http://wix.sourceforge.net/manual-wix3/install_dotnet.htm
- Как использовать предопределенный .NET 4.0 PackageGroupRef/PayloadGroupRef
- Должно ли это быть в Bundle.wxs? Где он импортируется в мой основной Product.wxs?
Ответы
Ответ 1
Эта ошибка указывает, что ваш проект строится с файлами, которые содержат более одного из этих элементов: Product
, Module
, Patch
, PatchCreation
, Bundle
. В вашем случае кажется, что вы добавили файл с элементом Bundle
в проект, у которого уже был элемент Product
. Это не поддерживается в наборе инструментов WiX сегодня. Вы должны поместить элемент Bundle
в отдельный проект.
Таким образом, при создании bootstrapper и MSI у вас будет два файла .wixproj. Первый .wixproj будет содержать вашу информацию Product
. Второй .wixproj будет содержать вашу информацию Bundle
и иметь ссылку на проект на первый .wixproj, чтобы порядок сборки был правильным.
Ответ 2
Элемент Wix/Bundle
является корнем проекта Bootstrapper. Он не входит в тот же проект, что и ваш Product.wxs. В Visual Studio существует шаблон для новых проектов Wix Bootstrapper. Вероятно, вы его еще не создали.
Тогда в вашей цепочке пакетов вам понадобится .NET и ваше приложение MSI, как в примере. Чтобы использовать NetFx40Web, вам нужно ссылаться на WixNetfxExtension. Проекты Wix, которые ссылаются на другие проекты Wix, имеют предопределенные переменные, поэтому вы можете использовать их свойства, такие как TargetPath. В примере предполагается, что этот проект Bootstrapper ссылается на проект установки под названием MyApplicationSetup.
<Chain>
<PackageGroupRef Id="NetFx40Web"/>
<MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>