1

選択ツリー コントロールには 3 つの機能があります。機能 2 と機能 3 を個別に選択してインストールしたいのですが、機能 1 をインストールするように選択した場合、機能 1 が依存しているため、機能 2 が自動的に選択されるようにしたいと考えています。選択ツリーが表示されると、次のように表示されます。

[-] All Features
    [x] Feature 1 (requires Feature 2)
    [x] Feature 2        
    [x] Feature 3

[-] は「ローカル ハード ドライブにインストールされます」のアイコンを表し、[x] は「すべての機能が利用できなくなります」のアイコンを表します。

インストールする機能 1 を選択すると、次のように表示されます。

[-] All Features
    [-] Feature 1 (requires Feature 2)
    [x] Feature 2
    [x] Feature 3

ただし、機能 1 を選択すると、機能 2 が自動的に選択されるようにするため、次のようになります。

[-] All Features
    [-] Feature 1 (requires Feature 2)
    [-] Feature 2
    [x] Feature 3

機能 1 では必要ないため、機能 3 を自動的に選択したくありません。これを行う方法はありますか? これは単純な問題のように思えますが、これを行う方法に関するドキュメントや例は見つかりませんでした。次のように Feature2 内で条件を使用しようとしましたが、Feature 1 のみが選択されたため、条件はテストされません。

<Feature Id="ProductFeature" Title="All Features" Display="expand" Level="1">
  <Feature Id="Feature1" ConfigurableDirectory="APPLICATIONFOLDER"
           Title="Feature 1 (requires Feature 2)" Level="2">
    <ComponentRef Id="file1.txt" />
  </Feature>
  <Feature Id="Feature2" ConfigurableDirectory="APPLICATIONFOLDER"
           Title="Feature 2" Level="2">
    <ComponentRef Id="file2.txt" />
    <Condition Level="1">MsiSelectionTreeSelectedFeature="Feature1"</Condition>
  </Feature>
  <Feature Id="Feature3" ConfigurableDirectory="APPLICATIONFOLDER"
           Title="Feature 3" Level="2">
    <ComponentRef Id="file3.txt" />
  </Feature>
</Feature>

機能 1 のみが選択されている場合、機能 2 のレベル属性を 1 に設定して、選択ツリーの機能 2 にもインストールされることを示すアイコンが表示されるように「指示」する方法はありますか? Feature2 の Level 属性を設定しようとするのが適切なアプローチではない場合、私が望む動作を達成するために使用できる別の方法はありますか?

試してみたい場合は、私の完全なプログラムを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="41788c15-290e-426f-934e-e5b3bf875013" Name="WixUI_FeatureTree" 
           Language="1033" Version="1.0.0.0" Manufacturer="WixUI_FeatureTree" 
           UpgradeCode="5f5d4f80-96f5-4060-a718-539b547d8a29">
        <Package InstallerVersion="200" Compressed="yes" />
        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
        <?define FeatureTree=1?>
    <UIRef Id="MyWixUI_FeatureTree" />

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="APPLICATIONFOLDER" Name="WixUI_FeatureTree">
                </Directory>
            </Directory>
        </Directory>

        <DirectoryRef Id="APPLICATIONFOLDER">
      <Component Id="file1.txt" Guid="FEBD6C0C-1BDF-413C-B7B1-A4E18AC7A6FA">
        <File Id="file1.txt" Source="file1.txt" KeyPath="yes" Checksum="yes"/>
      </Component>
      <Component Id="file2.txt" Guid="FEBD6C0C-1BDF-413C-B7B1-A4E18AC7A6FB">
        <File Id="file2.txt" Source="file2.txt" KeyPath="yes" Checksum="yes"/>
      </Component>
      <Component Id="file3.txt" Guid="FEBD6C0C-1BDF-413C-B7B1-A4E18AC7A6FC">
        <File Id="file3.txt" Source="file3.txt" KeyPath="yes" Checksum="yes"/>
      </Component>
        </DirectoryRef>

    <Feature Id="ProductFeature" Title="All Features" Display="expand" Level="1">
      <Feature Id="Feature1" ConfigurableDirectory="APPLICATIONFOLDER"
               Title="Feature 1 (requires Feature 2)" Level="2">
        <ComponentRef Id="file1.txt" />
      </Feature>
      <Feature Id="Feature2" ConfigurableDirectory="APPLICATIONFOLDER"
               Title="Feature 2" Level="2">
        <ComponentRef Id="file2.txt" />
        <Condition Level="1">MsiSelectionTreeSelectedFeature="Feature1"</Condition>
      </Feature>
      <Feature Id="Feature3" ConfigurableDirectory="APPLICATIONFOLDER"
               Title="Feature 3" Level="2">
        <ComponentRef Id="file3.txt" />
      </Feature>
    </Feature>

  </Product>
</Wix>
4

0 に答える 0