Photoshop用のシンプルな.NETC#COMアプリケーションを作成しています。これは、CS2からCS5までのすべてのバージョン、およびその間のすべてのバージョンで実行するように設計されています。同じアプリケーションがJavaScript形式でも存在し、バージョン固有の機能の実装を回避したため、前述のすべてのバージョンで動作します。
私たちが遭遇した問題は、COMインターフェースに関連しています。たとえば、アプリケーションがPhotoshopCSxのInterop.PhotoshopDLLを使用してコンパイルされている場合、PhotoshopCSyでは実行されません。これは、レジストリCLSIDがPhotoshopの各バージョンに固有であり、コンパイルしたものとは異なるバージョンのPhotoshopがインストールされているシステムで実行した場合、アプリケーションが正しいCOMインターフェイスDLLを見つけられないためと思われます(両方のアプリケーションを想定) 32ビットです)。
これが本当に問題である場合、機能がバージョン間で異なる可能性があるという事実を無視して、PhotoshopバージョンCSxのCOMインターフェイスをCSyCLSIDに再登録できるかどうか疑問に思っています。
より具体的な情報は次のとおりです。
プライマリPhotoshop.ApplicationCLSIDは、レジストリの次の場所にあります。HKEY_CLASSES_ROOT \ Photoshop.Application \ CLSIDこのCLSIDは、アプリケーションが構築されたCLSIDと一致する必要があります。たとえば、このIDはCS5とCS5.1で異なります。
今日の唯一の解決策は、Photoshopの特定のバージョン用にアプリケーションの特定のバージョンをビルドすることです。これは、特定のアプリケーションバージョンがインストールされている場合にのみ可能です。
取得したエラーコードは0x80040154、「CLSID{116EE066-135E-4F63-8D0E-78F62705FBFC}を持つコンポーネントのCOMクラスファクトリの取得に失敗しました」です。このアプリケーションはCS5.1で構築されましたが、CS5.04で実行されたため、COMインターフェイスが見つかりませんでした。このCLSIDはCS5.1に固有です。結論として、特定のバージョンでアプリケーションを実行できるようにするには、CS5.04のCLSIDと一致するようにCOMインターフェイスを再登録する必要があります。これは可能ですか、それとも別の方法がありますか?
私たちがこの問題について得ることができるどんな助けやヒントも非常にありがたいです。