bho cab
От: vinnitu Украина  
Дата: 29.11.13 10:31
Оценка:
Доброго времени суток.

Написал я свой bho (делает редирект для заданного сайта)

Собрал его без зависимостей (/MT)
Представляет собой один файл — bho.dll
Добавил в него resource version (1,0,0,1)
функции DllRegisterServer и DllUnregisterServer делают свою работу (запускаю из под админа regsvr32)

Теперь собственно задача — инсталятор.

Подумалось мне что лучший способ для этого наверное .cab
Ведь если на сайте разместить <OBJECT> тэг он будет предлгать
установить его пользователю и (если я правильно понимаю)
будет делать обновление если версия будет увеличиваться (например я что-то поправлю и сделаю 1,0,0,2)

я написал такой bho.inf

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
bho.dll=bho.dll

[bho.dll]
file-win32-x86=thiscab
clsid={C9C42510-9B41-42c1-9DCD-7282A2D07C61}
FileVersion=1,0,0,1
RegisterServer=yes

и такой тестовый bho.html

<OBJECT CLASSID="CLSID:C9C42510-9B41-42c1-9DCD-7282A2D07C61" VIEWASTEXT CODEBASE="bho.cab#version=1,0,0,1"/>

собираю это все до кучи такой командой

cabarc -s 6144 N bho.cab bho.dll bho.inf

Теперь о проблемах.

Запускаю IE (10й под win8 x64), который мне сообщает, что он запретил выполнение сценариев и элементов ActiveX на этой странице
и спрашивает меня: "Разрешить?" — я соглашаюсь и IE крэшится....

я перезапускаю IE и проверяю функционал BHO — и оно работает!!

Но что я делаю не так?
Почему может крэшится IE?
Верно ли предположение о возможности апдейта bho?
Какой способ распространения bho предпочтителен?
Обязательно ли нужно подписывать bho.dll? нужно ли подписывать bho.cab?
Подскажите, а кто выдает сертификаты подешевле?

Спасибо заранее за любую помощь.
С Уважением.
Re: bho cab
От: Aniskin  
Дата: 29.11.13 12:29
Оценка:
Здравствуйте, vinnitu, Вы писали:

V>Запускаю IE (10й под win8 x64), который мне сообщает, что он запретил выполнение сценариев и элементов ActiveX на этой странице

V>и спрашивает меня: "Разрешить?" — я соглашаюсь и IE крэшится....

V>я перезапускаю IE и проверяю функционал BHO — и оно работает!!


V>Но что я делаю не так?

V>Почему может крэшится IE?

1) Во время запуска сценария твой обновляемый BHO загружен в адресное пространство IE. Не совсем корректно переписывать dll с кодом, который в настоящий момент времени выполняется.

2) Кстати, по дефолту (без ключа реестра NoExplorer) BHO грузится не только в IE, но и в адресное пространство простого советского виндового Проводника, тот что Explorer.exe, при открытии окон для просмотра ФС.

3) Не силен в установке через inf-файлы, но судя по строчке RegisterServer=yes вызывается регистрация сервера. Прав хватит на запись в HKEY_LOCAL_MACHINE?

V>Верно ли предположение о возможности апдейта bho?


Описанным способом — imho нет.

V>Какой способ распространения bho предпочтителен?


Зависит от ЦА. А чем setup.exe не устраивает?

V>Обязательно ли нужно подписывать bho.dll? нужно ли подписывать bho.cab?


Зависит от ЦА.

V>Подскажите, а кто выдает сертификаты подешевле?


Спроси, а лучше поищи, в разделе Shareware. Уж не на физлицо ли ты собрался получать сертификат?
Re: bho cab
От: dkotov  
Дата: 01.12.13 00:34
Оценка:
Подписывать надо как DLL так и сам CAB.

С обновлением дела не на столько просто, но можно и так:

1. CAB файл содержит в себе 2-а DLL файла "прокси.dll" и "бхо.dll".
2. В системе, как BHO, регистрируется только "прокси.dll", который представляет собой загрузчик "бхо.dll".
3. Обновлением "бхо.dll" занимается "бхо.dll" или "прокси.dll" (на твой выбор) банальным скачивванием новой
версии в локальный профиль и запоминанием его где либо).

Как то так...
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.