5

私のダイアログの 1 つで、次のコントロールがあります。

<Control Id="EnvironmentComboBox" Type="ComboBox" Sorted="yes" ComboList="yes" Property="ENVIRONMENT" X="25" Y="110" Width="200" Height="15" />

ComboBox を次のように別の場所に入力します。

<UI>
  <ComboBox Property="ENVIRONMENT">
    <ListItem Text="Development" Value="Development" />
    <ListItem Text="SIT" Value="SIT" />
    <ListItem Text="UAT" Value="UAT" />
    <ListItem Text="Production" Value="Production" />
  </ComboBox>
</UI>

ただし、ComboBox ビットを作成していない場合でも、MSI はビルドされ、インストール中に失敗します (2205)。したがって、ENVIRONMENT という名前のプロパティを持つという要件を強制したいと思います。ダイアログに以下のような PropertyRef を追加しようとしました:

<PropertyRef Id="ENVIRONMENT" />

ただし、これは<ComboBox Proeprty="ENVIRONMENT">. 通常のプロパティ ( <Property Id="ENVIRONMENT" Value="test" />) を取得しますが、それはあまり役に立ちません。

ComboBoxaを定義する必要がある方法はありますか?

編集: 明確にするために、ダイアログを再利用できるように、コンボボックスの定義をコントロールの定義とは別に保持するつもりです。

4

3 に答える 3

1

<PropertyRef>プロパティ、つまり<Property>要素の「直接的な」定義のみを取得するように設計されていると思われます。はその<ComboBox>属性にプロパティ名を記載しているだけで、これはプロパティ定義として扱われません。

サンプルに「直接」のプロパティ定義を追加すると、動作するはずです。

<UI>
  <Property Name="ENVIRONMENT" Value="" />
  <ComboBox Property="ENVIRONMENT">
    <ListItem Text="Development" Value="Development" />
    <ListItem Text="SIT" Value="SIT" />
    <ListItem Text="UAT" Value="UAT" />
    <ListItem Text="Production" Value="Production" />
  </ComboBox>
</UI>

そして<PropertyRef>、別の場所の要素でそれを参照してください-ちょうどあなたが試した方法です。私の知る限り、そのような定義はコンボボックス部分に害を及ぼすことはなく、適切なフラグメントを含めることで安全になります。

または、要素全体<UI>を要素で参照することもできます<UIRef>- 同じ効果があるはずです。

于 2012-11-12T16:01:20.560 に答える
0

要素内でコンボボックスを定義してみませんか? このような:

<Control Id="EnvironmentComboBox" Type="ComboBox" Sorted="yes" ComboList="yes" Property="ENVIRONMENT" X="25" Y="110" Width="200" Height="15">
  <ComboBox Property="ENVIRONMENT">
    <ListItem Text="Development" Value="Development" />
    <ListItem Text="SIT" Value="SIT" />
    <ListItem Text="UAT" Value="UAT" />
    <ListItem Text="Production" Value="Production" />
  </ComboBox>
</Combobox>

この場合、コンボボックスを参照しないダイアログを参照することはできません。たぶん私はあなたが間違っていると理解していましたが、ユーザーエラーをスローするのではなく、それを回避することが論理的に見えます.

ユーザーがライブラリ ダイアログのリスト アイテムを変更できるようにする必要がある場合は、たとえば、ダイアログ アイテムにカスタム アクションを設定できます (ただし、静的な値の場合はおそらく最善の方法ではありません)。

また、WIX 要素を再利用する際に多くの問題に直面し、独自のテンプレート プロジェクトを作成し、作成するすべてのインストーラーに対して wxs ファイルの変換を使用することになりました (今のところは非常に単純ですが、必要なものは何でも実装できます)。うまく機能し、無限の柔軟性を提供します。

于 2012-11-16T12:24:43.940 に答える