Re[7]: Registration-free COM
От: xhalt Украина  
Дата: 19.01.06 08:59
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

X>>1. В каталог нашего приложения our.exe

X>>размещаем файл-флаг our.exe.Local
X>>и файл манифест our.exe.manifest...

OE>Dynamic-Link Library Redirection:


OE>

If the application has a manifest, then any .local files are ignored.

Строкой ниже:

Windows 2000: Manifests do not affect DLL redirection.


В применении к обсуждаемой теме — .local не будет проигнорирован если OS не поддерживает regfree COM нативно,
что и требуется.

OE>+ еще всякие непонятные заморочки — Re[9]: manifest, GetModuleHandle и msxml3.dll
Автор: Odi$$ey
Дата: 22.08.05

Как по мне, то вполне логичное и ожидаемое поведение. Если ожидается локальное использование компонента без регистрации — то нужно задать в манифесте всю регистрационную информацию.


Предлагаю работу в Киеве
Автор:
Дата: 04.05.06
Re[5]: Registration-free COM
От: xhalt Украина  
Дата: 19.01.06 12:17
Оценка:
Здравствуйте, Left2, Вы писали:

X>>С "глобальность" не совместим use-case с развертыванием DLL внутри каталога exe-приложения (xcopy-, ClickOnce-, и т.п. deployment),

X>>при наличии двух инсталляций (разных) программных продуктов использующих ком-объект с одинаковым CLSID.
X>>Особенно актуально при использовании компонент сторонних производителей (которых нельзя или сложно изменять)

L>Всё это решается с помощью трюка с MyFile.Exe.Local — он работает начиная с Win98,

L>то бишь на всех поддерживаемых сейчас WIndows-платформах
Эх, если бы.
К сожалению, на практике, "Dynamic Link Library Redirection" — весьма ограниченное решение:

— Неконфигурируемо
— Глобальная регистрация всё равно необходима, а значит может,
потенциально нарушать работу других приложений
— Требуется расположение .dll строго в каталоге .exe-файла (по подкаталогам уже не разбросаешь, и разные версии не поместишь)
— С ним невозможно использовать локально-установленные разные COM-компонеты (с одинаковым CLSID)
в разных web-приложениях на одном IIS.
— Требует неизменности (общей для всех разных компонент с одинаковым CLSID) typelib, ThreadingModel
— Use-case с deployment'ом на CD, требующий регистрации во время запуска, может в некоторых случаях нарушить работу
других приложений в последсвии, например, если приложение аварийно завершило работу не успев разрегистрировать
компоненты.

Если же для конкретной задачи, эти ограничния не являются существенными — то конечно стоит пользоваться именно MyFile.Exe.Local.


Предлагаю работу в Киеве
Автор:
Дата: 04.05.06
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.