1

インストーラーで COM 情報を更新したにもかかわらず、InstallShield インストーラーがいくつかの COM DLL を正しく登録していないようです。インストール後に regsvr32 を手動で実行すると、すべて問題ありません。

インストール後、ランダムに見える文字列を含むコンポーネントのレジストリに InprocServer32 値があることに気付きました。これは、Darwin 記述子であると考えられます。存在する場合、クリアテキスト パスの場所を上書きすることを理解しています。regsvr32 を手動で実行すると、これらの Darwin 記述子が消えます。私の現在の仮説では、これらの記述子にエンコードされた情報が正しくないため、プログラムが COM コンポーネントをインスタンス化しようとすると、DLL へのクリアテキスト パスが正しい場合でも、正しくない Darwin 記述子情報を使用して失敗します。

これが事実であるかどうかを確認する方法、これらの記述子をデコードする方法、InstallShield が Darwin Descriptor を生成するのを停止する方法、またはインストーラーを修正する方法について、誰かが光を当てることはできますか?

4

1 に答える 1

1

darwin記述子は、COMエントリポイントを元の.MSIに追跡するWindowsインストーラーサービスであると理解しています(したがって、.dllが削除された場合などに修復できます)。MSIは実際の値を保持します。

おそらく、COM情報を再構築したので、マシンからMSIをアンインストールして再インストールしましたか(したがって、msiexecは完全インストールではなくメンテナンスインストールを実行しているだけではありません)。

于 2008-10-17T08:51:19.203 に答える