Развертывание плагина NPAPI с минимальными пользовательскими шагами
Ситуация: я уже написал элемент управления ActiveX для моих пользователей IE, который работает отлично. Я создаю.ocx, CAB-файл, подписываю его и помещаю на сайт с тэгом EMBED. Пользователи загружают страницу, появляется желтая полоса с вопросом, хотят ли они установить ее: все, что им нужно сделать, это щелкнуть по ней, и мы выключены.
Теперь мне нужно создать поддержку для FF, Chrome и Safari (на Mac). Из моих исследований, NPAPI - способ сделать это, и Firebreath, как предполагается, облегчит это. Но из того, что я прочитал, развертывание не так просто. Пользователям Windows придется запускать "regsvr32" в DLL (чего на самом деле не делал ни один из моих веб-пользователей). Я понятия не имею, что произойдет на Mac. Я считаю, что пользователь должен скопировать его в каталог, например /Library/Internet\ Plugins/, который также не является началом для развертывания. Пользователи Firefox могут загрузить / запустить.xpi. Chrome должен запускать.crx.
У кого-нибудь есть опыт с этим? Как вы легко внедряете плагин NPAPI для других 3 больших браузеров?
3 ответа
Этот вопрос часто задают пользователи FireBreath, так что, возможно, пришло время более подробно ответить на форуме, который легче найти, чем в группе Google проекта.
Прежде всего, чтобы прояснить ситуацию с regsvr32, FireBreath действительно поддерживает "саморегистрацию" для всех браузеров; это означает, что когда вы вызываете regsvr32, он устанавливает ключи реестра не только для IE, но и для браузеров NPAPI, используя методы, на которые ссылается DReJ (+1 за эту информацию, кстати, спасибо. Многие не знают, где ее найти).
Тем не менее, саморегистрация DLL крайне нежелательна в мире инсталляторов и Microsoft. Есть много причин для этого. Вы проделали довольно хорошую работу, суммируя другие варианты установки в своем посте; Вы можете использовать.cab в IE и.XPI в Firefox, но, конечно, они не помогут вам в других браузерах.
Метод, рекомендованный командой FireBreath (которую я возглавляю), заключается в использовании установщика MSI для всех браузеров. Лично мне не нравится, когда в разных браузерах все работает по-разному, поэтому я использую javascript, чтобы обнаружить наличие (или отсутствие) плагина, а затем предложить пользователю загрузить и запустить установщик MSI.
FireBreath имеет "встроенную" поддержку для создания установщиков MSI с WiX. Если вы установите WiX 3.0 или более позднюю версию на свой компьютер и повторно запустите подготовительный сценарий, он создаст проект _WiXInstaller, который создаст базовый MSI для установки вашего плагина для всех браузеров в рамках процесса сборки Visual Studio. Вы можете изменить шаблон.wxs, который останется в вашем домашнем каталоге, чтобы настроить его.
Дополнительную информацию можно найти в вики FireBreath: http://www.firebreath.org/display/documentation/WiX+Installer+Help http://www.firebreath.org/display/~me@iaincollins.com/Potential+ Установщик + Улучшение
Если вы действительно любите использовать ваш установщик.cab для IE (у меня были проблемы с ними, но некоторым, похоже, повезло с ними), вы можете распространить файл MSI внутри вашей CAB и запустить его, когда CAB установлены. Преимущество этого заключается в том, что при установке MSI он устанавливает все для IE, Firefox, Safari, Chrome и Opera (а также для других браузеров, которые совместимы с теми же технологиями плагинов, которые используют эти браузеры).
В качестве краткого примечания, причина того, что MSI является идеальным решением для установки плагинов (в отличие от использования чего-то, что вызывает DllRegisterServer, например regsvr32), заключается в том, что MSI основан на транзакциях, поэтому при удалении он всегда будет полностью изменять то, что было вставлено; это означает, что вам не нужно беспокоиться о поддержке удаления 10 разных старых версий установщика, которые помещают вещи в разные места и т. д., поскольку система MSI позаботится о том, чтобы удалить все чисто при обновлении.
Надеюсь, это поможет!
Для плагина NPAPI не следует запускать "regsvr32", в Windows вам нужно записать некоторые данные в реестр, а на Mac или Linux вам необходимо скопировать плагин в указанные места (см. "Установка плагинов"). Я думаю, что самый простой способ развернуть плагин NPAPI в Windows - это создать установщик Windows, который будет устанавливать версии плагина как activeX, так и NPAPI (например, вы можете посмотреть, как выполняется развертывание для коммерческих плагинов, таких как Unity3D, Roozz или Silverlight). То же самое для Mac - просто создайте установщик.
Я не знаю ни одного способа установить плагин из Safari.
Кроме того, имейте в виду, что, хотя вы можете думать, что развертывание в стиле расширений проще для пользователей, пользователи Mac нередко используют более одного браузера. Если вы заставите их переустанавливать ваш плагин в каждом браузере, они будут сбиты с толку (так как плагины браузера обычно не развертываются на Mac) и будут раздражены. Установщик или установка методом перетаскивания вручную являются стандартными способами развертывания плагинов на Mac.