基本的に、特定のハードウェアがインストールされているかどうかを検出するためにdevcon.exe(Windowsハードウェアマネージャのコマンドラインバージョン)を実行できるWIX msiを構築しようとしています。インストールされている場合は、msi Aをインストールし、msi Bをインストールします(AとBはすでに別のmsiパッケージとして存在するため、ハードウェアに基づいた自動選択インストールが必要です)。選択インストールのためにWIX msiから埋め込みツールを実行しようとしています
現在、私はWIX SDKをインストールし、msiを正しく構築するWIXプロジェクトを作成しました。私はCustomActionsを実行してnotepad.exeを開くといった簡単なことができます。そのような簡単なことです。
第1の問題:ディレクトリにインストールされないファイルをインストーラにパッケージ化する方法がわかりません。私はそれへの参照を見つけましたが、それを明示する方法は明示されていません。ホストドライブにインストールされない場合は、「Directory」タグの中に入れる必要はありません。
第2の問題:devcon.exeは、私が間違っていると私に正しいことを伝えることができません。それは、それが何を見つけるかによって戻り値を変更するようです。おそらく、ハードウェアデバイスが存在するかどうかに制限されます。だから私はそれを埋め込み、それを実行することができれば、どういうふうにそれが標準出力ストリームに出力するものを取り、それから私が探している特定の値のためにそれを解析する必要があります。
私は既にパースを行うことができ、私が知る必要があることを教えてくれる環境変数を設定できるバッチファイルを持っているので、少し楽になりますが、バッチファイルを埋め込みdevcon.exeを参照するように取得し、WIXに変数を読み込ませたり、おそらくWIXで1つ(またはプロパティ)を設定してバッチファイルから設定することができますか?
おそらく、代わりにdllカスタムアクションを作成する必要がありますか? DLLのカスタムアクションから埋め込み実行ファイルを実行することは可能ですか? devcon.exeを実行してそこですべての解析を行い、単にWix変数またはプロパティを設定して次に何をするかを選択することができます。
第3の問題:別のmsiを実行することができます。私はまだそれほど気にしていませんが、私はそれをすべて読んでいないが有望に見える(http://softwareinstall.blogspot.com/2008/06/fun-with-msiembeddedchainer.html)まだ。一度に一つの問題は、私は確かに既に十分:)持っ