7

1 つの機能と 2 つのサブ機能を含む WIX をインストールしています。この機能を必須にし、2 つのサブ機能をオプションとして、デフォルトではインストールしないようにしたいと考えています。ここに私の機能ツリーがあります:

<Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install" 
         InstallDefault="local" Absent="disallow" >
  <Feature Id="A1" Level="1" AllowAdvertise="no" />
  <Feature Id="A2" Level="1" AllowAdvertise="no" />
</Feature>

追加すると思いました:

<Property Id="INSTALLLEVEL" Value=3 />

メイン機能をインストールするように設定し、サブ機能をインストールしないように設定します。そうではありません。すべての機能がデフォルトでインストールされます。

WixUI_FeatureTreeを使用しています。それがINSTALLLEVEL プロパティをめちゃくちゃにしているのだろうか。

それで、私が試みていることは可能ですか?デフォルトで 2 つのサブ機能を無効にするにはどうすればよいですか?

編集:興味深い。設定INSTALLLEVEL=1000してもう一度試してみましたが、すべての機能はまだインストールするように設定されていました。WixUI_FeatureTree が壊れている可能性はありINSTALLLEVELますか?

4

3 に答える 3

12

INSTALLLEVEL プロパティは最高水準点のようなものです。1000 に設定し、デフォルトで機能を選択したくない場合は、機能のレベルを 1001 以上に設定する必要があります。デフォルトでインストールされるのは、レベル以下のすべてです。

MSDN から:

INSTALLLEVEL プロパティは、デフォルトで機能がインストール用に「オン」に選択される初期レベルです。Feature テーブルの Level フィールドの値が現在の INSTALLLEVEL 値以下の場合にのみ、機能がインストールされます。インストールのインストール レベルは、INSTALLLEVEL プロパティによって指定され、1 から 32,767 までの整数になります。インストール レベルの詳細については、Feature Tableを参照してください。

于 2012-09-19T22:56:52.220 に答える
4

もう1つの観察であり、おそらくもっと重要です。

サブ機能には Level="1" があり、有効な INSTALLLEVEL に対してとにかくインストールされます。デフォルトで無効にする必要がある場合は、レベルを高く設定する必要があります。このような:

<Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install" 
         InstallDefault="local" Absent="disallow" >
  <Feature Id="A1" Level="10" AllowAdvertise="no" />
  <Feature Id="A2" Level="10" AllowAdvertise="no" />
</Feature>
于 2012-09-20T11:24:37.907 に答える
2

あなたの問題は、UISequence の実行中に INSTALLLEVEL プロパティの値を上書きすることにあると思います。コードの追加

<Property Id="INSTALLLEVEL" Value=3 />

インストールプロセスの最初にプロパティ値を初期化します。ただし、ダイアログからダイアログに移動すると、FeathreTree ダイアログが表示される前に INSTALLLEVEL プロパティが変更される場合があります。「Propery value changed」の詳細なログ エントリと、ログ ファイルの最後にある INSTALLLEVEL プロパティの最終的な値を確認してください。INSTALLLEVEL を必要な値に設定するには、カスタム アクションを作成する必要がある場合があります。例は WIX ソースにあります: SetupType ダイアログはまさにこれを行います:

<Control Id="TypicalButton" Type="PushButton" X="40" Y="65" Width="80" 
         Height="17" ToolTip="!(loc.SetupTypeDlgTypicalButtonTooltip)" 
         Default="yes" Text="!(loc.SetupTypeDlgTypicalButton)">
  <Publish Property="WixUI_InstallMode" Value="InstallTypical">1</Publish>
  <Publish Event="SetInstallLevel" Value="3">1</Publish>
</Control>
于 2012-09-20T11:12:01.063 に答える