現象
以下の手順にて .NET Framework を利用して開発した COM+ アプリケーションをインストールし、その後にこのアプリケーションをアンインストールします。そのあと、改めて COM+ アプリケーションをインストールしようとしても、インストールする手順によっては正常に動作させることができません。
- .NET Framework を利用して COM+ アプリケーションを開発します。
- コンポーネント サービス管理ツールを使用して、開発した COM+ アプリケーションをインストールします。
- 同様に、コンポーネント サービス管理ツールから、インストールした COM+ アプリケーションをエクスポートします。
- エクスポートによって作成されたインストール パッケージ (MSI) を目的の PC にコピーして実行し、アプリケーションをインストールします。
- 不要になった際に、アプリケーションをアンインストールします。
原因
エクスポートによって作成されたインストール パッケージは、MSIからインストールする際にはグローバル アセンブリ キャッシュ (GAC) にアセンブリを登録します。しかしながら、アンインストール時には .NET Framework を利用したアプリケーションであることを正しく認識できず、 GAC から COM+ アプリケーションのアセンブリ情報を削除しません。この状態から、改めて RegistrationHelper.InstallAssembly メソッドや regsvcs.exe などを使用して COM+ アプリケーションを インストールしても、GAC に残っている古い情報が参照されるため、新たにインストールした COM+ アプリケーションのアセンブリが使用されず、期待する結果が得られなくなります。
解決方法
再度アプリケーションをインストールする前に、GAC に残っているアセンブリ情報を削除しておくことにより、本現象を回避することが可能です。
- スタート ボタンから [ファイル名を指定して実行] を選び、名前に「%windir%\Assembly」を入力して [OK] をクリックします。
- エクスプローラーが開き、アセンブリの一覧が表示されるので、アンインストールしたいアセンブリ名を探します。
- アセンブリ名が見つかったら、アセンブリ名の上で右クリックしてオプション メニューを表示し、[アンインストール] を選びます。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。