2012-01-26 25 views
0

私のVisual Studioインストーラプロジェクトでは、COMに登録するDLLがあります。また、COMレジストリの一部であるキー(InprocServer32キー)を変更する必要があります。しかし、Visual Studioのレジストリ設定にエントリを作成すると、そのエントリはCOM登録によって上書きされます。Visual Studioインストーラ - COMによって上書きされるレジストリキー

MSIトランスフォームを使用してレジストリキーをレジストリテーブルの末尾に追加していましたが、COMIを上書きすることがありました。しかし、これはエラーが起こりやすいので、Visual Studioのレジストリ設定に切り替えることにしました。

自動COM登録(レジストリテーブルの後半)で作成されたエントリを上書きするレジストリエントリを作成するにはどうすればよいですか?

答えて

1

ビジュアルスタジオプロジェクトではできません。これは、MicrosoftがVisual Studioの次期リリースでそれを強制終了させたそのツールの多くの制限の1つです。彼らは代わりにInstallShield Limited Editionに行くことになった。

VDPROJを使用する場合は、ポストビルド処理(MSIに変換を適用するか、SQLコマンドを使用してテーブルを更新することができます)が行なわれます。もう1つのアプローチは、コンポーネントをVDPROJで消費されるWiXマージモジュールに組み込むことです。これにより、コンポーネントのオーサリングをより詳細に制御できます。

Redemption of Visual Studio Deployment Projects

+0

コンポーネントIDの変更を維持する方法を教えてください。私のトランスフォームは特定のコンポーネントIDを使用しますが、これはビルドからビルドに変更されることがあります。同じコンポーネントIDを保持することは可能ですか?または、トランスフォームの一部としてコンポーネントを作成する必要がありますか? –

+0

VDPROJは吸いますが、私はそれを吸うことは決して見たことがありません。 :-)私がComponentIDを変更すると思う唯一の方法は、検出された依存関係として作成されているかどうかです。ファイルがインストーラに追加されている場合、ComponentIDは安定しているはずです。 ComponentIDの変更はコンポーネントルール違反です。 –

+0

個人的には、自分のブログで説明しているように、すべてのコンポーネントをWiXマージモジュールに組み込んでいます。これにより、コンポーネントのオーサリングを100%コントロールできます。 –

関連する問題