2015-02-04 4 views
1

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

Приведенный ниже код работает частично. но он создает и AppPool, и создает оба каталога все время. Как предотвратить создание каталогов-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> 

ответ

0

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

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