5

WixUIFeatureTree を使用して、インストールするアプリケーションのコンポーネントのオプションをユーザーに提供しています... 私の機能の 1 つに 2 つのオプション機能があり、プログラムが動作するには少なくとも 1 つをインストールする必要があります。ユーザーに特定のものをインストールするように強制したくありませんが、少なくとも1つを選択するように強制する方法については途方に暮れています。

現在の WXS の関連部分は次のとおりです。

    <Feature Id="Main" Title="Product Name" Level="1" Absent="disallow" Display="expand" AllowAdvertise="no"
             Description="This is the application, and is a required component"
             >
        <ComponentRef Id="Baseline" />
        <ComponentRef Id="Shortcuts" />
        <Feature Id="Option1" Title="Plugin #1" Level="2" Absent="allow" AllowAdvertise="no">
            <ComponentRef Id="Plugin1Component" />
        </Feature>
        <Feature Id="Option2" Title="Plugin #2" Level="3" Absent="allow" AllowAdvertise="no">
            <ComponentRef Id="Plugin2Component" />
        </Feature>
    </Feature>

いずれかがインストール用に選択されることを保証するために、シーケンスの適切なポイントに何らかのカスタム アクションを挿入する必要があると思いますが、それを行う方法や、それが正しいかどうかはわかりません。すべての助けに感謝します!

4

4 に答える 4

2

ここで実際にやりたいことは、条件が満たされるまで [次へ] ボタンが有効にならないように <Publish> 要素に条件を入れることだと思います。何かのようなもの:

<Publish Dialog="..." Control="Next" Event="NewDialog" Value="...">OptionalPkg1Selected OR OptionaloPkg2Selected</Publish>

私が知らないのは、チェックされるコンポーネントに基づいてこれらの条件を設定する方法ですが、後で適切なコンポーネントがインストールされるようにする方法が必要です...

于 2009-09-08T17:49:04.887 に答える
1

Feature の状態を条件にしてみてはいかがでしょうか。

(&Option1=2) AND (&Option2=2) のようなもの

理解を深めるためのリンクは次のとおりです。

MSI 高度なカスタム アクション

于 2009-10-09T17:08:01.523 に答える
0

今は技術テストを実行する時間がありませんが、INSTALLLEVEL プロパティの方向性を示したいだけです。これは、機能の選択に関連するかなり直感に反する概念です。基本的に、インストールの全体的な INSTALLLEVEL があり、これは 1 ~ 32,767 の数値であり、各機能には、-32,767 ~ 32,767 の数値である Install Level プロパティがあります。機能のインストール レベル値が製品の INSTALLLEVEL プロパティ以下の場合、機能は有効になります: http://kb.acresso.com/selfservice/viewContent.do?externalID=Q103232

通常、これを使用して、デフォルトの機能状態を設定し、機能がサポートされていないオペレーティング システムで非表示の機能を無効にします。ただし、これらのプロパティを、ダイアログの次のボタン イベントで実行されるカスタム アクションと共に使用して、少なくとも 1 つの機能の選択を強制することができる場合があります。

はい、MSI ダイアログは一般的に意味がなく、操作が複雑です。場合によっては、シーケンス内の単一のダイアログを通常の Windows exe ダイアログに置き換えて、MSI GUI コンセプト全体の制限を回避しました。

もっと簡単にできる方法があれば考えてみます。ただし、これは非常に緊急のように思えます。そのため、展開コミュニティを確認して、いくつかの最適な展開サイトを熟読することをお勧めします。

于 2009-09-15T02:41:12.660 に答える