0

インストール中に登録する COM コンポーネントがいくつかあります。これらの COM コンポーネントは、私の WIX プロジェクトに含めたマージ モジュールの一部です。以下のコードを使用して登録しました

<InstallExecuteSequence>
  <RegisterClassInfo/>
  <RegisterProgIdInfo/>
  <RegisterTypeLibraries/>
  <WriteRegistryValues/> 
</InstallExecuteSequence>

コンポーネントが正常に登録されました。ただし、アンインストール中に、これらの COM コンポーネントは登録解除されませんでした。アンインストール前に SharedDLL Count が 1 の場合、これらのコンポーネントが登録解除されていることを確認するにはどうすればよいですか?

4

1 に答える 1

2

うーん、私はCOMに関してたくさんのフープを経験しました。

本当に、もうシステムに COM コンポーネントを登録するべきではありません。それは解決するよりもはるかに多くの問題を引き起こします。COM コンポーネントを登録すると、それらがグローバルに登録され、他のアプリケーションからその COM ライブラリのコンポーネント登録がハイジャックされる可能性があります。それが起こらないことを願っていますが、それを確実に知ることはできません。

Windows XP 以降では、レジストリを使用しない COM 登録と呼ばれるものがありました。これを機能させるには、アプリケーションで使用する COM ライブラリごとにマニフェスト ファイルを提供する必要があります。また、これらの COM ライブラリに対するアプリの依存関係を示すマニフェスト ファイルをアプリケーションに提供する必要があります。

この利点は、アプリケーションのインストール フォルダーに COM ライブラリを展開でき、システム登録が不要なことです。

次の URL は、必要なマニフェスト ファイルの作成に役立ちます。

さらに情報が必要な場合はお知らせください。古い VB6 COM コンポーネントを Windows レジストリにグローバルに登録したり、アプリケーションのインストール フォルダーに COM ライブラリを展開したりせずに、古い VB6 COM コンポーネントを使用してアプリケーションを展開することができました (%windir%\system32または%windir%\SysWow64(64 ビット Windows の場合))。

于 2013-11-06T22:26:18.483 に答える