База данных ActiveX Cab Files # Версия не обновляет CAB должным образом - PullRequest
2 голосов
/ 12 марта 2009

Хорошо, я прихожу сюда в крайнем случае, надеясь, что кто-то знает ответ на этот вопрос, в новостных группах нет ответов, и я сделал все, что знаю, кроме серьезного хакерского решения, которого я бы хотел избежать .

Вот ситуация:

У меня есть библиотека классов .NET, доступная для COM. Я обертываю это в CAB-файл и использую тег Object, чтобы встроить его в страницу. В атрибуте CODEBASE я указываю его на cab-файл и добавляю версию, подобную этой, что "CODEBASE =" cabfiles \ mycab.cab # version = 30.0.0.1 "

Проблема:

Итак, поскольку это DLL-библиотека .NET, доступная для COM, она регистрирует его с ключом реестра inprocServer32, который указывает на mscoree.dll с версией 2.0.50727, что имеет смысл, поскольку COM-объекты .NET работают под этим процессом, и 2.0.50727 является версией этого DLL. Но это нарушает свойство version атрибута CODEBASE тега OBJECT.

Любая версия, установленная мной выше, чем 2.0.50727, будет загружать и переустанавливать содержимое файла cab.

Я попытался изменить параметры и значения реестра, а также целый ряд вещей, и не могу найти решение.

Значит, кто-нибудь знает решение этой проблемы?

Ответы [ 2 ]

4 голосов
/ 05 ноября 2009

Когда ваша кабина установлена, вам необходимо обновить раздел реестра:

HKCR / CLSID / {GUID} / Установленная версия / (по умолчанию)

  • {GUID} - это идентификатор класса вашего объекта
  • Значением является строка, указанная в элементе Html («30.0.0.1» выше).

Windows проверяет несколько мест в реестре перед обращением к dll (в вашем случае mscoree.dll). Выше указано место для установки чего-то для системы (HKCR), вы также можете установить это для каждого пользователя. Выберите одно из следующих мест, чтобы поместить строку версии. Места проверяются в указанном порядке.

  1. HKCU / CLSID / {GUID} / AvailableVersion / (по умолчанию)
  2. HKCR / CLSID / {GUID} / AvailableVersion / (по умолчанию)
  3. HKCU / CLSID / {GUID} / Установленная версия / (по умолчанию)
  4. HKCR / CLSID / {GUID} / Установленная версия / (по умолчанию)
  5. Ваша сборка

Было бы хорошо, если бы регазм позаботился об этом за вас, но это не так. Вам нужно будет установить его вручную в установщике.

2 голосов
/ 03 ноября 2010

Также вам необходимо использовать запятые для номера версии:

"CODEBASE =" cabfiles \ mycab.cab # версия = 30,0,0,1"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...