Использование COM-компонентов без реестра - PullRequest
2 голосов
/ 27 марта 2012

У меня есть COM dll (скажем, Mydlib.dll) и приложение (скажем, myapp.exe). Теперь глобальный путь Mydlib.dll (который является commonprogramfiles / ...) хранится в реестре. Но для этого конкретного приложения мне нужна частная версия, которая хранится в другом месте. На самом деле это та же копия, но приложение хочет, чтобы его личная копия была независимой от общей. Я провел некоторое исследование и нашел эту замечательную статью об использовании файлов манифеста для решения проблемы. http://msdn.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic10

Используя это, я успешно смог сделать два манифеста (myapp.exe.manifest и Mydlib.X.manifest). Используя этот метод, я мог сохранить Mydlib.dll в подпапке внутри корневой папки myapp.exe и указать путь в атрибуте имени элемента file файла Mydlib.X.manifest. т.е.
|| file name = "/Mydlib.dll" ||
Все отлично работает до сих пор.

ВЫПУСК: Теперь из-за некоторых проблем с лицензированием я не могу сохранить этот Mydlib.dll в корневой папке. Поэтому я изменил Mydlib.X.manifest и сделал элемент файла
|| имя файла = .. // Mydlib.dll ||
Я также попробовал абсолютный путь
|| имя файла = /Mydlib.dll ||

Оба указанных пути отлично работают в WindowsXP.

Но, начиная с win2003 и далее, путь не может быть абсолютным. Относительный путь должен быть из подпапки корневой папки. Следовательно, я не могу получить аналогичное поведение в Windows 2003 и далее. Это было упомянуто в части статьи, посвященной устранению неполадок.

ЕСТЬ ЛЮБЫЙ ВРЕМЯ РАБОТЫ ИЛИ ДРУГОЙ ПОДХОД ДЛЯ ДОСТИЖЕНИЯ ТОГО ЖЕ РЕЗУЛЬТАТА.

ПОЖАЛУЙСТА, ПОМОГИТЕ. Спасибо -U

1 Ответ

1 голос
/ 27 марта 2012

В статье, на которую вы ссылаетесь, также обсуждается API-интерфейс активации .

Возможно, можно использовать этот подход, а не просто файл манифеста.Потенциально вы можете использовать это, чтобы указать на не дочернюю папку.Неясно, применяются ли те же ограничения 2003 года, я подозреваю, что они не могут.Я не пробовал, но это предложение.

Здесь также есть некоторая связанная информация: http://www.pcreview.co.uk/forums/question-regarding-activation-context-api-lpassemblydirectory-use-registration-free-com-t2656777.html

...