1

質問の背景

私は現在、COMで公開されている.NET DLLをユーザーのシステムに登録する必要がある、作業中の新しいプロジェクトを配布する手段をまとめようとしています。WiXを初めて使用する場合は、それに移行します。このため、私は物事をできるだけシンプルに保つようにしています。

問題

DLL登録の大きな問題は、regasmがInProcServer32キーのデフォルト値を「mscoree.dll」に設定することですが、DLLへのフルパスが使用されている場合にのみ、DLLがインスタンス化されているように見えます(例:「C:\ Windows \」)。 SysWow64 \ mscoree.dll "

現在、セットアッププロジェクト(WiXの使用を中止したい)にカスタムアクションがあり、SearchPath APIを呼び出してmscoree.dllへのフルパスを検索し、デフォルト値をフルパスで上書きして、DLLができるようにします。問題なくインスタンス化できます。

提案された解決策/質問

私はWiXを初めて使用するので、CLSIDツリーに入るのに必要なすべての情報を含む.regファイルを準備し、WiXにそれを何らかの方法で実行させるというアイデアを思いつきました。

私の質問は:

  1. この方法でDLLを登録することによる固有の欠陥はありますか?
  2. 私がここで回避策を見つけようとしている主な理由はmscoree.dllの問題ですが、WiXでこれを行うためのネイティブな手段はありますか?
4

1 に答える 1

1

「ヒート」と呼ばれるWiXプログラムを見てください。これにより、RegAsm/COMVisibleパーツに関連するレジストリ情報を含むDLLを「収集」できます。次に、このコードを切り取って、wxsファイルに組み込むことができます。

Regasm / regfileを使用して、その情報を手動でRegistryValue要素に変換することもできます。

パスの問題に関しては、SystemFolderプロパティを使用してください。

[SystemFolder]mscoree.dll

インストールを32ビット(x86)としてマークすると、64ビットOSで実行するとSysWow64フォルダーに、32ビットOSで実行するとSystem32フォルダーに自動的に解決されます。

于 2012-05-23T02:02:40.987 に答える