Подтвердить что ты не робот

Настройка темы WiX Burn с дополнительными входами

Я ищу использование Burn как загрузчика для установщика, и мне нужно передать несколько аргументов в MSI.

Я знаю, что способ сделать это - использовать элементы MsiProperty, проблема, с которой я сталкиваюсь, заключается в отображении пользовательского интерфейса для захвата этих свойств. Я знаю, что я могу создать полностью настраиваемый пользовательский интерфейс через хост-приложение управляемого загрузочного узла, однако это очень много для реализации для относительно незначительной настройки для загрузчика.

Я нашел эту статью в блоге с описанием того, как выполнять основные настройки пользовательского интерфейса, и задался вопросом, возможно ли изменить интерфейс записи Burn, чтобы включить простой флажок/текстовое поле (значение которого затем используется для установки переменной Burn, чтобы я мог передать ее в MSI) аналогичным образом, или мне нужно использовать управляемый хост-приложение для загрузки только после?

4b9b3361

Ответ 1

Я не могу найти какую-либо документацию по этому поводу в любом месте, но небольшое количество экспериментов + чтение через исходный код показывает, что это довольно просто - просто установите Name элемента управления (например, флажок) на имя записи переменная (а не переменная WiX - они разные), например (см. Запись пользовательских пользовательских настроек для получения дополнительной информации о том, где это поставить)

<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox>

Если вам нравится, вы можете определить переменную записи под вашим пакетом, чтобы инициализировать ее до некоторого значения (используйте 1 для "ticked" и 0 для "unticked" с флажками)

<Variable Name="MyCheckBox" Value="1" />

Однако его не требуется - переменная будет создана автоматически для вас в любом случае. Обратите внимание, что это должно быть Variable, а не WixVariable - это разные.

Наконец, чтобы установить свойство MSI на основе этой переменной, добавьте элемент MsiProperty в качестве дочернего элемента MsiPackage, так

<MsiPackage Name="MyMsi.msi" ...>
    <MsiProperty Name="SOMEPROPERTY" Value="[MyCheckBox]" />
</MsiPackage>

Значение свойства MSI "SOMEPROPERTY" будет затем установлено на 0 или 1 в зависимости от установленного состояния вашего флажка.