Странное поведение msxml .dll's - PullRequest
1 голос
/ 14 февраля 2011

Некоторые наши клиенты неожиданно сталкиваются с тем, что компонент ActiveX не может создать объектную ошибку, когда программа пытается создать экземпляр MSXML2.DOMDocument.Здесь речь идет о приложении VB6, которое написано на компьютере, который устанавливает ссылку на msxml2.dll, а не на другой xml-dll.Когда мы запускаем развертывание, мы каждый раз развертываем msxml2.dll msxml2a.dll и msxml2r.dll и никогда не возникало проблем.

Не в этот раз!Это как если бы сама среда windows изменилась и отклоняет процесс отмены регистрации / повторной регистрации.Что бы я ни делал, я не могу заставить клиентский компьютер успешно создать экземпляр MSXML2.DOMDocument.Еще более странно: когда я переименовываю / отменяю регистрацию / удаляю все файлы msxml2 * из папки system32, клиенты, которые не сталкиваются с этой проблемой, продолжают работать, поэтому им, похоже, не нужны файлы DLL!Обычно на этих клиентах установлено сочетание msxml3, 4 и 6.Я искал на жестком диске, и нет никаких других копий msxml2.

Может ли кто-нибудь помочь вам разобраться в этой непонятной проблеме?

РЕДАКТИРОВАТЬ: просто простой наборdoc = new MSXML2.DOMDocument достаточно, чтобы вызвать ошибку.

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Рекомендуется всегда использовать зависящие от версии ProgID вместо независимых от версии. Например, я бы предложил вам использовать вместо этого Msxml2.DOMDocument.6.0. Пожалуйста, обратитесь к Использование правильной версии MSXML в Internet Explorer для получения дополнительной информации.

1 голос
/ 14 февраля 2011

Многие библиотеки теперь управляются системой. Сброс вещей в System32 только уводит вас, поскольку «настоящие» библиотеки живут в SxS Cache.

Это одна из причин, по которой вы хотите использовать для них утвержденную методику развертывания, и для MSXML это немного усложняется, если вы просто не используете предписанные пакеты MSI (или те, что упакованы в EXE) от Microsoft. MSXML 4 также был доступен в форматах MSM и CAB для каждого обновления, что больше имело отношение к «установке SxS», которая поддерживалась только для MSXML 4 (в MSXML 6 это было признано плохой идеей).

Хорошая новость заключается в том, что все поддерживаемые ОС, кроме Server 2003, уже включают MSXML 6, поэтому нацельтесь на это, и вы окажетесь дома без каких-либо требований к развертыванию:

MSXML6 теперь внутриполосный, теперь головные боли установки MSI должны (почти) исчезнуть ..

MSXML 3 доступен в большинстве версий Windows и может быть развернут до версии не ниже Win98: Microsoft XML Parser (MSXML) 3.0

Установка, регистрация и обслуживание компонентов не работали, как вы, возможно, думаете, уже давно. Намного безопаснее упаковать свои приложения в пакеты MSI, чем использовать устаревшие скриптовые инструменты установки. Не пытайтесь развертывать фрагменты сложных пакетов, таких как MDAC и MSXML.

С какой конкретной версией MSXML вы делаете раннее связывание? Имейте в виду, что если вы используете MSXML 4, это зависит от под-версии (не все интерфейсы были двоично-совместимыми от пакета обновления к пакету обновления).

...