1

Managed C++ を使用しています。つまり、C++ コードから .Net Framework 機能にアクセスしています。問題のあるコードは、カスタム アクション dll から呼び出されており、.msp パッケージの 1 つに含まれています。

シナリオ: アセンブリを COM+ にインストールするために名前空間RegistrationHelper::InstallAssembly Method (String, String%, String%, InstallationFlags)から使用しています。System.EnterpriseServices上記のコードは、ディスク上のタイプ ライブラリ ファイルを使用してアセンブリを COM+ にインストールします。

このコードは、システム コンテキストから実行されます。サーバーの 20% で上記の方法でエラーが発生しています。コードは次の例外で失敗します。

System.EnterpriseServices.RegistrationException: タイプ ライブラリ '[.tlb ファイルへのパス]' をアプリケーション '[アプリケーション名]' にインストールできませんでした。System.EnterpriseServices.RegistrationDriver.InstallAssembly(RegistrationConfig regConfig、オブジェクト obSync) で System.EnterpriseServices.RegistrationHelper.InstallAssemblyFromConfig(RegistrationConfig& regConfig) で System.EnterpriseServices.RegistrationHelper.InstallAssembly(文字列アセンブリ、文字列 & アプリケーション、文字列パーティション、文字列 & tlb、InstallationFlags installFlags ) System.EnterpriseServices.RegistrationHelper.InstallAssembly (文字列アセンブリ、文字列 & アプリケーション、文字列 & tlb、InstallationFlags installFlags) で ComPlusRegistrationWrapper.CtxRegsvcs.RegisterComPlus (文字列アセンブリ、文字列 ApplicationName、文字列 TLB) で

上記の例外はToString()、System.Exception クラスのメソッドを利用してキャプチャされています。

上記の例外に注意してください: [.tlb ファイルへのパス] - ディスク上のタイプ ライブラリ ファイルへのパス [アプリケーションの名前] - COM+ アプリケーションの名前。

コードは Windows 2008 R2 で実行されています。Reflector は、問題のアセンブリが .Net FW 2.0 に対してコンパイルされていることを確認します

これがサーバーのサブセットでのみ発生する理由を理解できません。

より多くのデータを収集するために、これは私が考えたことです:

-顧客に、ctxregsvcs.exe を実行してアセンブリを手動で COM+ にインストールし、それが成功するかどうかを確認するよう依頼します。

これをさらにデバッグする方法についての指針はありますか?

4

0 に答える 0