2017-01-25 8 views
0

特定のレジストリキーがシステム上に存在しない限り実行されないWiXバンドルを作成する必要があります。WiXバンドルで、レジストリキーが見つからない場合は、バンドルが起動しないようにするにはどうすればよいですか?

通常のセットアッププロジェクトでは、起動条件を使用しますが、セットアッププロジェクトを作成するのではなく、トップレベルのバンドルだけを作成しています。 <Bundle>要素は、Condition属性を持っていますが、書き込みのマニュアルには書かれています:

バンドルの状態。条件が満たされない場合、バンドルは実行を拒否します。条件はブートストラップアプリケーションがロードされる前(検出前)にチェックされるため、OSのバージョンを示す変数などのビルトイン変数のみを参照できます。

だから、私は私が必要なもののために最も基本的なハイレベルのチェックが、何のためにBundle要素のCondition属性を使用し、確かではないことができないことが表示されます。

したがって、バンドルレベルでレジストリキーを確認し、キーがない場合は続行を拒否できますか?

答えて

1

あなたは確かにあなたのバンドルでレジストリ検索を行い、それらのレジストリ検索の結果に条件を付けることができます。なぜなら、私はいくつかのブートストラッププロジェクトでそれを正確に行うからです。ドキュメントが何を参照しているのか正確には分かっていませんが、古くなっているか間違っています。

私が持っている簡単な例として:

<util:RegistrySearch 
    Id="ServerInstalledCheck" 
    Root="HKLM" 
    Key="SOFTWARE\$(var.OEMRegistryRootKeyName)" 
    Value="ServerPath" 
    Result="value" 
    Variable="ServerInstalled"/> 

<bal:Condition Message="#(loc.ServerNotInstalledError)" >ServerInstalled OR WixBundleInstalled</bal:Condition> 

そして、それはServerPathキー@HKLM \ソフトウェアの\の$(var.OEMRegistryRooteKeyName)

を見つけることができなかった場合、これはインストールからあなたのバンドルを停止します私はOR WixBundleInstalledを追加しました。なぜなら、何らかの理由で顧客があなたのブートストラップに含まれているパッケージ(レジストリ検索が依存するパッケージを含む)のすべてまたは一部をアンインストールしてから、ブートストラップをアンインストールすることができなくなるレジストリキーを手動で再追加します。

関連する問題