Condition 追加情報

WiX tutorial Lesson 3 Events and actions 3.1 Queueing up にあるように、Condition が 求めている様には 行かない事があります。
よって、ここの英語をよく読んで下さい。

 

 

 

・・・とは言いながら、説明します。

これをセットして、

<Property Id="INSTALLDIR">
  <RegistrySearch Id='AcmeFoobarRegistry' Type='raw'
    Root='HKLM' Key='Software\Acme\Foobar 1.0' Name='InstallDir' />
</Property>
この様にしても アプリケーションのインストールチェックがうまく行きません。
<Condition Message='This module can only be installed if Acme Foobar 1.0 has been installed first.'>
  INSTALLDIR
</Condition>

シーケンステーブルの使用 ( Using a Sequence Table ) からリンクされている Suggested InstallExecuteSequence にあるように、シーケンス番号順に実行されて LaunchConditions が AppSearch より先に実行される為です。
よって Action Sequence をカスタマイズします。

これら4つのうち Admin- から始まるものは、管理インストール用です。社内ネットワークからの インストール用セットアップ などで 使用されます。
残り2つで、InstallExecuteSequence は Action を決める為に インストーラーによって 常に調べられ、InstallUISequence は UI モードの時にだけ 考慮されます。

よって、例えばこの様に カスタマイズすれば良いそうです。

<InstallExecuteSequence>
  <LaunchConditions After='AppSearch' />
  <RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>
LaunchConditions Action にも 入れ替えて良いって書いてありますね。