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

Передача параметров из пакета 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?

4b9b3361

Ответ 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.