Как пропустить подкаталог на основе условия в WIX? - PullRequest
0 голосов
/ 02 января 2012

Я использую приведенный ниже код,

<Directory Id="dir2" Name="Folder">
   <Component Id="comp_one" Guid="{0D827414-5629-48A0-9DC1-9344C5C6EBFC}">
       <Condition>INSTALLSAMPLES</Condition>
       <File Id="file_one" Source="..\..\..\fileone.exe" />
   </Component>
</Directory>

Вышеприведенный код работает нормально и пропускает Folder, если условие ложно.

Но в приведенном ниже коде Folder и SubFolder создаются, если Condition равно false.Есть ли какое-либо решение для пропуска каталога в зависимости от условия?

<Directory Id="dir1" DiskId="3" Name="Folder">
   <Directory Id="dir2" Name="SubFolder">
      <Component Id="comp_one" Guid="{0D827414-5629-48A0-9DC1-9344C5C6EBFC}">
         <Condition>INSTALLSAMPLES</Condition>
         <File Id="file_one" Source="..\..\..\fileone.exe" />
      </Component> 
   </Directory>
</Directory>

Пожалуйста, помогите мне решить проблему.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Из большого опыта я могу предположить, что условия компонентов не очень хорошо масштабируются. Они действительно предназначены для таких вещей, как VersionNT и Not VersionNT, где, возможно, вам нужно установить одну DLL / EXE на Win 9X и другой взаимоисключающий файл на NT / 2K / XP и др.

Вместо этого вы должны связать эти компоненты с функцией и позволить пользователю включить / отключить функцию с помощью диалогового окна «Выборочная установка». Более сложные абстракции могут быть сделаны с помощью Условий объектов и / или AddLocal / Remove событий управления.

Тот факт, что вы использовали свойство INSTALLSAMPLES, на самом деле говорит мне, что у вас должна быть функция SAMPLES.

0 голосов
/ 10 февраля 2013

Его целевая папка является частью «удостоверения» компонента MSI. Невозможно условно «плавать» один компонент среди нескольких целевых папок. Однако вы всегда можете определить больше, чем компонент, каждый из которых нацелен на отдельную папку, но получен из одного и того же файла, и условно установить один или другой (или оба!).

Но мистер Пейнтер знает, о чем говорит (практически по любому вопросу установки). Наилучшая практика заключается в подготовке компонентов (наборов компонентов), а не компонентов напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...