Передача параметров из начальной загрузки в пакет MSI
Я использую VS2010 и WiX 3.6 для создания пакетов MSI и их объединения в настройку Bootstrapper. Вот мой код Boostrapper.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="" Version="" Manufacturer="" UpgradeCode="">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="Package1.msi">
<MsiProperty Name="PARAM1" Value="[PARAM1]" />
<MsiProperty Name="PARAM2" Value="[PARAM2]" />
</MsiPackage>
<MsiPackage SourceFile="Package2.msi">
<MsiProperty Name="PARAM1" Value="[PARAM1]" />
<MsiProperty Name="PARAM2" Value="[PARAM2]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
Пакеты MSI должны иметь параметры, указанные для запуска. Обычно я бы позвонил "Packag21.msi PARAM1=1 PARAM2=2"
, После сборки проекта я пытаюсь передать параметры в мой Bootstrapper.exe таким же образом Bootstrapper.exe PARAM1=1 PARAM2=2
Но, похоже, они не передаются в MSI. Установки зависают при условии отсутствия параметров.
Есть ли способ передать параметры из EXE в MSI?
2 ответа
Это в настоящее время недоступно в стандартном загрузчике: WixStdBa не делает доступными свойства командной строки - ID: 3489809
Вы можете реализовать такую функциональность, если создадите свое собственное приложение начальной загрузки.
РЕДАКТИРОВАТЬ: Хотя вы не можете передать параметры в ваш загрузчик через командную строку, вы все равно можете собирать информацию в ваш загрузчик различными способами:
пример: установка переменной
<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" />
пример: поиск в реестре
<util:RegistrySearch Root="HKLM" Key="Software\SomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/>
Теперь это реализовано и доступно с релиза Wix 3.6 RC 21 мая.
Вот общее представление о том, как это работает:
<Wix>
<Bundle>
<Variable Name="CommandLineArg" bal:Overridable="yes"/>
<Chain>
<MsiPackage>
<MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
Вы должны создать переменную связки, которую можно переопределить в командной строке, а затем передать эту переменную в msi.