2012-02-02 6 views
0

Visual Studioの私のセットアッププロジェクトは、COMに登録するように設定されたDLLを展開します。インストーラは必要なレジストリ設定を処理しますが、変更したいキーが1つあります。自分のクラスのInprocServer32キー。通常は 'mscoree.dll'が含まれていますが、 '[SystemFolder] mscoree.dll'が含まれている必要があります。私はこれをいくつかの方法で修正しようとしました。WindowsインストーラのCOM登録の変更

私が試した最初のことは、レジストリテーブルへのエントリが追加されたMSIトランスフォームを作成し、ポストビルドアクションとして適用することでした。これは、私のComponentキーがビルド全体で一貫していなかったために、これは日常的に壊れました。

その後、レジストリウィンドウにVSでレジストリエントリを作成しようとしました。 COM登録が私のレジストリキーを上書きしたため、これはうまくいきませんでした。

次に、私はMSI変換のアイデアに戻り、コンポーネントテーブルにエントリを追加し、そのコンポーネントのレジストリキーエントリを作成しました。これはまったく機能しませんでしたが、私は理由を知らない。

WindowsインストーラでCOM登録を変更する方法を知っている人はいますか?私が間違っていたところを指摘できますか?

+0

[Visual Studio Installer - COMによって上書きされるレジストリキー]の重複が可能です。(http://stackoverflow.com/questions/9020576/visual-studio-installer-registry-keys-being-overwritten-by-com) –

+0

私はあなたが間違っている場所を正確に指摘することができます:Visual Studioデプロイメントプロジェクトの使用。このツールは、単にWindowsインストーラをあまりにも抽象化し、操作する必要のあるWindowsインストーラの機能を公開しません。 WindowsインストーラでCOM登録データを修正する方法を正確に教えてもらえますが、VDPROJでそれを行う方法を隠すことはできません。 –

+0

Orcaを使用することを意味する場合、私はそれを行う方法を知っていますが、自動化されていないため変換されます。しかし、変換には私にとって問題があります。 –

答えて

0

これは、Visual Studioデプロイメントプロジェクトでは容易に実現できません。 MicrosoftがVisual Studioの次期リリースから削除した多くの欠点の1つ。

InstallShield ProfessionalやWindows Installer XMLなどの他のツールを確認してください。

+0

私は選択肢を探していません、私は解決策を探しています。この理由の1つは、私のセットアップが別のプログラムのセットアップとマージされるということです。 –

+0

問題は唯一の解決策が選択肢です。 「合併」とはどういう意味ですか?ネストされた/同時のインストールを意味しますか?これはMicrosoftが正式にサポートしていないのは、それが原因で発生したすべての問題だからです。あなたがブートストラッパーによって直列にインストールされていることを意味するならば、MSIはMSIなので、それは問題ではありません。 –

+0

本当にVDPROJに固執したいのであれば、変換をプログラム的に生成するポストビルドイベントとして実行されるスクリプトまたはプログラムを書く必要があります。私はこれをすべてやり遂げました。あなたがこれを実行して、VDPROJの他の問題を解決しようと思ったら、プロジェクトを別のツールに移植してすでに完了している可能性があります。 –

0

私はちょうどあなたがmscoreeと言ったことを正しく認識しましたか?これは技術的には、実際にCOM(ネイティブdll)ではなくCOM Interop(管理されたdll)であることを意味します。 VDPROJでCOM属性をオフにし、Regasm /regfile:test.reg foo.dllを使用してregfileを生成することもできます。次に、VDPROJのレジストリコンポーネントに表示されているものすべてを作成することができます。

このスタイルはエレガントなインストーラを作成しません。

関連する問題