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

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

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

Ответы [ 2 ]

1 голос
/ 29 марта 2010

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

Если у вас есть действительный внешний манифест, вы можете попробовать 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

1 голос
/ 28 марта 2010

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

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

Удачи,

Терри.

...