プロジェクトをデプロイしてインストーラーを作成しようとしています。出力setup.msiを持つ.vdprojを作成しました。.msiセットアップウィザードを実行すると、次のエラーが発生します。
モジュールxyzの登録に失敗しました。HRESULT-2147024769。サポート担当者に連絡してください。」
登録に失敗したモジュールはC++dllですが、私のアプリケーションはWFF-C#アプリケーションです。
誰かがこの問題の解決策を知っていますか?
プロジェクトをデプロイしてインストーラーを作成しようとしています。出力setup.msiを持つ.vdprojを作成しました。.msiセットアップウィザードを実行すると、次のエラーが発生します。
モジュールxyzの登録に失敗しました。HRESULT-2147024769。サポート担当者に連絡してください。」
登録に失敗したモジュールはC++dllですが、私のアプリケーションはWFF-C#アプリケーションです。
誰かがこの問題の解決策を知っていますか?
それには2つの理由が考えられます
(セットアップ プログラムを使用して) 登録しようとしている dll は、activeX dll ではないため、登録は必要ありません。標準 dll は登録を必要としません。システムフォルダーまたはアプリケーションフォルダーにコピーするだけです。すべてを登録しようとするインストーラー プログラムからこれらの命令を削除してみてください。
2番目のレゾンは、akronによって提案されている可能性があります.dll自体ではなく、関連するタイプのlibを登録する必要があります。
依存関係ウォーカーを使用して、それがどの種類の dll であるか、およびそれがリンクされている他の dll を見つけることができます。
The installer complains that it cannot find the exported function in the DLL to register it, the DllRegisterServer function. Very good odds that you asked the installer to register the DLL when it is not in fact a COM server. Not every C++ dll is a COM dll. Most are not.
You ought to be able to see this in the way you use the DLL in your code. You typically use a COM dll by adding a reference to the DLL or type library and you'll have an Interop.Foo.dll assembly in your build directory. Conversely, you use a non-COM dll in your code with the [DllImport] attribute.
Change the "Register" attribute for the DLL back to vsdrpDoNotRegister and try again.
エラーは 0x8007007F (16 進数) で、Windows エラー コード 127 (0x7F)ERROR_PROC_NOT_FOUND
に変換されます。この問題は、アセンブリによってエクスポートされた COM 型を登録するために使用される標準のプロシージャであるDllRegisterServer プロシージャが、DLL によってエクスポートされないことが原因である可能性があります。代わりに、関連する typelibを登録する必要がある場合があります。
それ以外の場合は、 LoadLibrary() エラー コード 127などのスタック オーバーフローに関する同様の問題を参照してください 。