Установщик Wix создает компоненты на основе параметра, переданного в msi

У меня есть два файла Component по одному для каждого приложения. Я передаю параметр MachineName в msi. (Пример: MachineName = A) Я хочу скопировать все файлы, упомянутые в Component1.wxs, и создать Directory-A, ApplicationA и AppPoolA.

Приведенный ниже код работает частично. но он создает как AppPool, так и каталоги все время. Как предотвратить создание Directory-B и AppPoolB, когда MachineName = A?

Component1.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
     <DirectoryRef Id="Dir-A">
        <Component Id="cmp04AF5786493B45809EFC4A5D12FFB07B" Guid="{6B67F4D0-81AE-47D5-9C3E-1119A560FCAE}">
          <File Id="fil04AF5786493B45809EFC4A5D12FFB07B" KeyPath="yes" Source="testA.html" />
        </Component>
      </DirectoryRef>
    </Fragment>
     <Fragment>
      <ComponentGroup Id="Dir-AFiles">
        <ComponentRef Id="cmp04AF5786493B45809EFC4A5D12FFB07B" />
      </ComponentGroup>
    </Fragment>
</Wix>

Component2.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
     <DirectoryRef Id="Dir-B">
        <Component Id="cmpEBBDC1C336C0421C9AFFF92D4F109355" Guid="{7D5AB6CC-A193-4AC2-827E-806077990149}">
          <File Id="filEBBDC1C336C0421C9AFFF92D4F109355" KeyPath="yes" Source="testB.html" />
        </Component>
      </DirectoryRef>
    </Fragment>
     <Fragment>
      <ComponentGroup Id="Dir-BFiles">
        <ComponentRef Id="cmpEBBDC1C336C0421C9AFFF92D4F109355" />
      </ComponentGroup>
    </Fragment>
</Wix>

В моем Product.wxs

<Property Id="MachineName" />

    <iis:WebSite Id="TargetWebsite" Description="Default Web Site or 80 port" xmlns="http://schemas.microsoft.com/wix/IIsExtension">
      <iis:WebAddress Id="TargetWebsite" IP="*" Port="80" />
    </iis:WebSite>
    <Feature Id="IISFeature" Title="IIs" Level="1">
      <ComponentRef Id="AppPoolComponentA"/>
      <ComponentRef Id="AppPoolComponentB"/>
    </Feature>
     <!--Do this if MachineName = "A"-->
 <Feature Id="FeatureA" Title="Feature A" Level="1">
      <Condition Level="1"><![CDATA[MachineName = "A"]]></Condition>
      <ComponentGroupRef Id="Dir-AFiles" />
      <ComponentRef Id="ComponentA"/>
  </Feature>
   <!--Do this if MachineName = "B"-->
   <Feature Id="FeatureB" Title="Feature B" Level="1">
      <Condition Level="1"><![CDATA[MachineName = "B"]]></Condition>
      <ComponentGroupRef Id="Dir-BFiles" />
      <ComponentRef Id="ComponentB"/>
  </Feature>
   <!--Do this if MachineName = "A"-->
<Component Id="AppPoolComponentA" Guid="{044A3132-C4F4-422A-836B-46BCF172D720}" Directory="TARGETDIR" Permanent="yes">
      <iis:WebAppPool Id="AppPoolA" Name="AppPoolA" ManagedRuntimeVersion="4.0" ManagedPipelineMode="integrated"/>
    </Component>
     <!--Do this if MachineName = "B"-->
    <Component Id="AppPoolComponentB" Guid="{D651DF9C-D80D-4F3E-BE7B-DB2BBA9D24C8}" Directory="TARGETDIR" Permanent="yes">
      <iis:WebAppPool Id="AppPoolB" Name="AppPoolB" ManagedRuntimeVersion="4.0" ManagedPipelineMode="integrated"/>
</Component>

   <Directory Id="TARGETDIR" Name="SourceDir">
   <!--Do this if MachineName = "A"-->
    <Directory Id="Dir-A" Name="Directory-A">
        <Component Id="ComponentA" Guid="{C25BD2E1-9539-45E3-BF9B-B4DD8FB6DB47}">
          <Condition><![CDATA[MachineName = "A"]]></Condition>
          <iis:WebVirtualDir Id="VD-A" Alias="DirectoryA" Directory="Dir-A" WebSite="TargetWebsite" xmlns="http://schemas.microsoft.com/wix/IIsExtension">
            <iis:WebApplication Id="ApplicationA" Name="DirectoryA" WebAppPool="AppPoolA"/>
          </iis:WebVirtualDir>
          <CreateFolder/>
        </Component>
      </Directory>
       <!--Do this if MachineName = "B"-->
      <Directory Id="ConsoleComponentsDir" Name="Directory-B">
        <Component Id="ComponentB" Guid="{EA11875E-87A3-41EC-B60F-D8CA2CF2CB59}">
          <Condition><![CDATA[MachineName = "B"]]></Condition>
          <iis:WebVirtualDir Id=VD-B" Alias="DirectoryB" Directory="ConsoleComponentsDir" WebSite="TargetWebsite" xmlns="http://schemas.microsoft.com/wix/IIsExtension">
            <iis:WebApplication Id="ApplicationB" Name="DirectoryB" WebAppPool="AppPoolB"/>
          </iis:WebVirtualDir>
          <CreateFolder/>
        </Component>
      </Directory>
    </Directory>

person Gokul    schedule 04.02.2015    source источник


Ответы (1)


Разделив фрагмент каталога на две части, одну для AppA, а другую для AppB, я бы создал свойство «APPASELECTED», которое будет установлено, когда вы выберете функцию, которую хотите установить.

Вы даже можете заставить его из командной строки таким образом

person CheGueVerra    schedule 04.02.2015