2016-04-11 11 views
0

Я регистрирую capicom.dll через моего установщика и отменяю его при деинсталляции моего продукта. Существует еще одно стороннее программное обеспечение «ABC», также регистрирует и использует эту DLL.Проверьте, используется ли DLL другим приложением

Но проблема в том, что когда я удалю свой собственный продукт, я отменил регистрацию capicom.dll. Из-за этого другое стороннее программное обеспечение «ABC» работает неправильно. Итак, как я могу проверить, используется ли эта DLL другим продуктом/приложением при ее регистрации?

ответ

1

На эту проблему нет большого 100% ответа. Существуют различные соглашения, в зависимости от используемой технологии в игре, которые пытаются решить связанную проблему. К ним относятся:

  • The SharedDLLs ключ реестр, который отслеживает количество ссылок
  • отсчетов компонента установщика Windows (если несколько пакетов .msi установить идентичный компонент, например, из модуля слияния)
  • Других уровня пакета эталонные схемы
  • никогда не удалить из папки System

Однако это только работа, когда есть одно место для данного файла. В вашем случае, чтение между строками, я подозреваю, что есть несколько мест для файла capicom.dll, но только одно место для регистрации регистрации COM. Таким образом, при установке вашей копии вы можете перезаписывать существующую регистрацию COM. Пока ваша копия на месте, все хорошо. Но когда вы удаляете свою копию и/или отменяете ее, регистрация COM не возвращается к предыдущей копии.

Предполагая, что вы не можете гарантировать, что есть только одна копия файла capicom.dll, лучшим вариантом, о котором я могу думать, является использование registration-free COM manifest в ваших исполняемых файлах, который ссылается на личную копию capicom.dll, и пропустить регистрацию вашей частной копии of capicom.dll. InstallShield может помочь вам создать внешний манифест, или вы можете сами создать и внедрить манифест в свои исполняемые файлы. Соблюдайте дополнительную осторожность, чтобы убедиться, что контекст активации работает, если вы сами открываете COM-серверы proproc, которые необходимо загрузить capicom.