Как выбрать функции из MsiPackage, содержащегося в элементе Bundle?

У меня есть исполняемый файл, который я создал с помощью WiX Burn v3.8. Назовем его Bundle.exe. В этой связке у меня есть MSI с 3-мя фичами, две вложены под одну. Я хочу вызвать Bundle.exe из командной строки и передать выбранные функции в свой MSI. Я должен отметить, что у меня есть существующий пользовательский интерфейс, который позволяет пользователю выбирать, какие функции устанавливать, поэтому я не хочу использовать приложение WiX Bootstrapper.

//Fragment of my MSI.wxs

    <Feature Id="One">
      //ComponentRefs
      <Feature Id='A' >        
        //ComponentRefs
      </Feature>
      <Feature Id="B" >
        //ComponentRefs
      </Feature>
    </Feature>

//Fragment of my Bundle.wxs

    <Bundle>
      <Chain>
        //List of MsiPackages
      </Chain>
    </Bundle>

person rharrison33    schedule 24.06.2014    source источник


Ответы (1)


В загрузчике по умолчанию мы передаем аргументы из командной строки следующим образом:

<Wix>
  <Bundle> 
    <Variable Name="CommandLineArgument" bal:Overridable="yes"/>
    <Chain>
      <MsiPackage>
        <MsiProperty Name="CommandLineArgument" Value="[CommandLineArgument]"/>
      </MsiPackage>
    </Chain>
  </Bundle>
</Wix>

Запишите BAL: Overridable. Вот как я смог убедиться, что мы можем передать значение свойства из командной строки. Не забудьте добавить объявление пространства имен в элемент Wix xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" и ссылку на WixBalExtension.dll.

В вашем случае свойство MSI, которому вы должны присвоить значение [s] функции, должно быть «ADDLOCAL».

<MsiProperty Name="ADDLOCAL" Value="[CommandLineArgument]"/>

Чтобы выполнить пакет из командной строки, выполните следующие действия:

bundle.exe CommandLineArgument=One,A,B

person Isaiah4110    schedule 24.06.2014
comment
Я вижу предупреждение с этим решением: › предупреждение CNDL1149: MsiProperty «ADDLOCAL» управляется загрузчиком и не может быть создано. (Недопустимые свойства: «ACTION», «ADDLOCAL», «ADDSOURCE», «ADDDEFAULT», «ADVERTISE», «ALLUSERS», «REBOOT», «REINSTALL», «REINSTALLMODE» или «REMOVE».) Удалите свойство MsiProperty. элемент. Это ограничение будет применяться как ошибка в WiX v4.0. - person Mark Lopez; 13.07.2019