Windows Server 2008 用の製品の .msi パッケージの構成を更新中です。インストールの主なコンポーネントは、Windows サービスとして実行されるアプリケーションです。また、サービスで使用するレジストリ エントリをセットアップするためにインストール中に実行される構成アプリケーションもあります。
サービスと構成アプリケーションは、マージ モジュールとして .msi に含まれている Microsoft C/C++ ランタイムと MFC に依存しています。C/C++ ランタイムと MFC のアセンブリは、InstallFinalize 中にコミットされます。これにより、Windows インストーラーによって提供されるメカニズムを使用したサービスの開始が妨げられているようです (これは正しいですか?)。 InstallFinalize の前に実行される場合は、少なくとも構成アプリケーション。
私たちが採用したアプローチは、InstallFinalize の後に "commit" カスタム アクションとして構成アプリケーションを実行し、このアプリケーションでサービスを開始させることです。これには、昇格された特権でアプリケーションを実行する必要があります (これには、trustInfo セクションを含むマニフェストを使用します)。さらに、このアプリケーションを偽装なしで実行するように .msi を構成する必要があります (そうしないと、特権の昇格が混乱します)。
これは受け入れられるアプローチですか?これはどの程度将来性があるのでしょうか? 注意すべき落とし穴はありますか?
これは他の人が遭遇した問題のようです:
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg12666.html
このような問題に対処するための公式 (または非公式) の方法はありますか?
これの補足として、インストール プロセス中にカスタム アクションとして実行されるアプリケーションが起動時にフォーカスされるようにする方法はありますか? この方法で開始されたアプリケーションは、常にインストーラーの背後にポップアップ表示され、インストーラーがフォーカスを維持するように見えますが、これは特にユーザー フレンドリーな効果ではありません。
どうもありがとう、
ブルース。