Мы пишем простое приложение .NET C # COM для Photoshop, которое предназначено для работы на всех версиях от CS2 до CS5 и всего, что между ними.Это же приложение также существует в форме JavaScript и работает со всеми вышеупомянутыми версиями, поскольку мы избегали реализации функций, специфичных для версии.
Проблема, с которой мы столкнулись, связана с интерфейсом COM.Например, если наше приложение скомпилировано с Interop.Photoshop DLL из Photoshop CSx, оно не будет работать в Photoshop CSy.Похоже, это связано с тем, что CLSID реестра специфичен для каждой версии Photoshop, в результате чего наше приложение не может найти правильную библиотеку DLL COM-интерфейса, если работает в системе, где установлена версия Photoshop, отличная от той, для которой мы скомпилировали (при условии, что оба приложения32-разрядные).
Если это действительно проблема, мы задаемся вопросом, можно ли было бы заново зарегистрировать COM-интерфейс Photoshop версии CSx с помощью CSSID CLSID, игнорируя тот факт, что функциональность может различаться междуверсии.
Более подробная информация приведена ниже:
Наш основной CLSID для Photoshop.Application находится здесь в реестре: HKEY_CLASSES_ROOT \ Photoshop.Application \ CLSID Этот CLSID должен соответствовать CLSID, для которого наше приложение былопостроен для.Например, этот идентификатор отличается между CS5 и CS5.1.
Наше единственное решение сегодня - это создание определенных версий нашего приложения для определенных версий Photoshop, и это возможно только в том случае, если у нас установлена конкретная версия приложения..
Код ошибки, который мы получаем: 0x80040154, «Не удалось получить фабрику класса COM для компонента с CLSID {116EE066-135E-4F63-8D0E-78F62705FBFC}».Это приложение было построено с CS5.1, но работает на CS5.04, в результате чего интерфейс COM не был найден.Этот CLSID специфичен для CS5.1.В заключение нам необходимо перерегистрировать интерфейс COM, чтобы он соответствовал CLSID CS5.04, чтобы иметь возможность запускать наше приложение на этой конкретной версии.Это возможно или есть другой путь?
Любая помощь или подсказка, которую мы можем получить по этому вопросу, чрезвычайно ценится.