Передача параметров из пакета bootstrapper в пакет 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?
Ответы
Ответ 1
В настоящее время это не доступно в стандартном загрузочном файле: WixStdBa не делает доступными свойства командной строки - ID: 3489809
Вы можете реализовать такую функциональность, если вы создаете собственное приложение для загрузки.
EDIT:
Несмотря на то, что вы не можете передать параметры своему загрузчику через командную строку, вы все равно можете собрать информацию в своем загрузочном устройстве различными способами:
ex: установка переменной
<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" />
ex: поиск реестра
<util:RegistrySearch Root="HKLM" Key="Software\SomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/>
Ответ 2
Это было реализовано и доступно в продаже начиная с версии 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.