Развертывание плагина NPAPI с минимальными пользовательскими шагами - PullRequest
15 голосов
/ 17 декабря 2010

Ситуация: я уже написал элемент управления 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 ]

15 голосов
/ 17 декабря 2010

Это вопрос, который часто поднимается пользователями 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+Installer+Improvements

Если вы действительно любите использовать установщик .cab для IE (у меня были проблемы с ними, но некоторым, похоже, повезло с ними), вы можете распространять файл MSI внутри CAB и запускать его, когда CAB установлен. Преимущество этого заключается в том, что при установке MSI он устанавливает все для IE, Firefox, Safari, Chrome и Opera (а также для других браузеров, которые совместимы с теми же технологиями плагинов, что и эти браузеры).

В качестве краткого примечания, причина того, что MSI является идеальным решением для установки плагинов (в отличие от использования чего-то, что вызывает DllRegisterServer, например regsvr32), заключается в том, что MSI основан на транзакциях, поэтому при удалении он всегда будет обращать вспять то, что было Путин; это означает, что вам не нужно беспокоиться о поддержке удаления 10 разных старых версий установщика, которые помещают вещи в разные места и т. д., потому что система MSI позаботится об удалении всего корректно при обновлении.

Надеюсь, это поможет!

1 голос
/ 20 декабря 2010

Я не знаю, как установить плагин из Safari.

Кроме того, имейте в виду, что, хотя вы можете подумать, что развертывание в стиле расширений проще для пользователей, пользователи Mac нередко используют более одного браузера. Если вы заставите их переустанавливать ваш плагин в каждом браузере, они будут сбиты с толку (поскольку плагины браузера обычно не развертываются на Mac) и будут раздражены. Установщик или установка методом перетаскивания вручную являются стандартными способами развертывания плагинов на Mac.

1 голос
/ 17 декабря 2010

Для плагина NPAPI не следует запускать «regsvr32», в Windows вам нужно записать некоторые данные в реестр, а на Mac или Linux вам нужно скопировать плагин в указанные места (см. «Установка плагинов» «). Я думаю, что самый простой способ развернуть плагин NPAPI в Windows - это создать установщик Windows, который будет устанавливать версии плагина как activeX, так и NPAPI (например, вы можете посмотреть, как выполняется развертывание для коммерческих плагинов, таких как Unity3D , Roozz или Silverlight ). То же самое для Mac - просто создайте установщик.

...