Передача параметров из начальной загрузки в пакет 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.

Другие вопросы по тегам