Вызов COM-сборки .Net из приложения Powerbuilder (без регистрации)

У нас есть приложение Powerbuilder 10, использующее сборки .Net COM. Мы пытаемся встроить манифест в приложение PB (для вызова COM-сборок без регистрации). В объединенный файл манифеста добавлены разделы для зависимостей сборок .Net COM. Мы пробовали различные инструменты для внедрения нового манифеста с разными результатами - использование GenMan32 для внедрения усекает приложение с 6 МБ до 45 КБ. - при использовании ResourceTuner размер файла выглядит нормально, но при попытке запустить приложение выдает «Fatal Disk Error».

Есть предложения по запуску сборки .Net ComEnabled из PB без регистрации?


person as.    schedule 26.03.2010    source источник


Ответы (2)


Вы пробовали использовать внешний манифест и убедились, что он работает? Если внешний манифест не работает, значит, информация манифеста неверна.

Если у вас есть действительный внешний манифест, вы можете попробовать Manifest Tool (MT.EXE) из .Net SDK. Он хорошо работает с настоящими EXE-файлами. Однако, как заметил Терри, сгенерированный PB исполняемый файл содержит дополнительную информацию, которую инструменты, управляющие EXE, должны учитывать, иначе они ее сломают.

http://blogs.msdn.com/patricka/archive/2009/12/09/answers-to-several-application-manifest-mysteries-and-questions.aspx

person Bruce Armstrong    schedule 29.03.2010

Это больше перенаправление, чем ответ. Вам необходимо знать, что PowerBuilder создает исполняемые файлы, которые не соответствуют стандартам для исполняемых файлов Windows. По сути, это процедура начальной загрузки для загрузки виртуальной машины PowerBuilder, а также набор определений классов (объектов). Поднятые вами случаи - не первые, о которых я слышал, когда утилиты, предназначенные для изменения исполняемых файлов, не работают с исполняемыми файлами PowerBuilder.

Что касается положительного вклада в то, каким еще направлениям следовать, я действительно не знаю достаточно, чтобы дать квалифицированный совет. Если бы это был я, я бы попытался зарегистрировать COM-объект в случае сбоя ConnectToNewObject (), но я понятия не имею, возможно ли это или этот маршрут тупиковый.

Удачи,

Терри.

person Terry    schedule 28.03.2010