3

私はここに提示された解決策を見ていました:

WiX Burn - すでにインストールされているアイテムを特定する

しかし、これが「変更」書き込み画面 (誰かが特定の .msi を削除することを決定したとき) でどのように機能するかわかりません。

アンインストール/変更ページが表示されたら、Burn .log を確認します (チェック ボックスがオンになっているかどうかを示す変数を、'Checkbox1' から 'Checkbox6' まで呼び出しました):

[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox1' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox2' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox3' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox4' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox5' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox6' to value '1'

(等。)

[171C:1034][2013-04-23T11:49:24]i100: Detect begin, 3 packages
[171C:1034][2013-04-23T11:49:24]i000: Setting string variable 'NETFRAMEWORK40' to value '1'
[171C:1034][2013-04-23T11:49:24]i052: Condition 'NETFRAMEWORK40' evaluates to true.
[171C:1034][2013-04-23T11:49:24]i101: Detected package: NetFx40Redist, state: Present, cached: None
[171C:1034][2013-04-23T11:49:24]i101: Detected package: Setup, state: Present, cached: Complete
[171C:1034][2013-04-23T11:49:24]i101: Detected package: Setup1, state: Present, cached: Complete
[171C:1034][2013-04-23T11:49:24]i199: Detect complete, result: 0x0

では、さまざまな .msi の「検出」の結果はどこに保存されているのでしょうか。チェックボックスがチェックされているかどうかに関係なく、後でチェックボックスの値を設定するために使用する独自の変数「Checkbox1」にそれらを保存できないのはなぜですか?

より基本的な質問として、Burn のこの使用パターンは、標準 UI で十分にサポートされるべき主要な使用パターンの 1 つではないでしょうか...

4

1 に答える 1

7

InstallConditionパッケージの属性を設定することで、パッケージをインストールするかどうかを制御できます。たとえば、インストールする必要があるCheckbox1かどうかが判断Msi1された場合、チェーンは次のようになります。

<MsiPackage Id='Msi1' InstallCondition='Checkbox1' SourceFile='path\to\msi1.msi' />

おそらく、Checkbox1値が永続化されるように変数を定義する必要があります。

<Variable Name='Checkbox1` Value='1' Persisted='yes' />

注:Msi1値がデフォルトで に設定されているため、これはデフォルトで をインストールする必要があると想定しています'1'

残っている唯一のことはCheckbox1、wixstdba で UI に結び付けることです。これを行うには、テーマ ファイルをオーバーライドし、コントロールのとしてOptions使用するチェックボックスをページに追加します。Checkbox1@Id

于 2013-04-24T04:53:33.943 に答える