Gerando plugins NPAPI no Windows
Muitas das extensões para Firefox e Chromium, que são limitadas pelo suporte da API, acabam recorrendo a plugins NPAPI para solucionar seus problemas. Plugins NPAPI são programas capazes de serem acessador via JavaScript, e podem ser escritos em linguagens como C++, que facilita em muito certos trabalhos.
Contudo, a maioria dos plugins possui um núcleo comum, que consiste de sua integração com o navegador. Assim, por que não escrever apenas as funcionalidades que efetivamente caracterizam o plugin? Isso pode ser obtido com o uso de frameworks, como Nixysa e Firebreath.
Apesar do framework Nixysa ser mais simples, a pouca documentação torna o trabalho um pouco mais complicado, principalmente para criação de plugins NPAPI em ambientes Windows, as conhecidas DLLs. Assim, descreverei como gerar o plugin a partir do projeto exemplo Complex
.
Primeiramente, precisaremos instalar algumas dependências:
- Um cliente do Subversion, recomendo o Win32Svn.
- Python
2.7.1
. - PyWin32-216 para Python
2.7
. - Se seu sistema for o Windows XP, instale o Service Pack 3.
- Microsoft Visual C++ 2005 Express Edition.
- Microsoft Platform SDK.
Após a instalação das dependências, seguindo as opções padrão, adicione alguns diretório ao PATH
do ambiente. Verifique se os caminhos utilizados são compatíveis com seu Windows.
C:\Python27
C:\Program Files\Subversion\bin
Abra o Prompt de Comando, pressione Win+E
e digite cmd
. Digite os seguintes comandos no terminal:
cd \
mkdir Sources
cd Soruces
git clone https://github.com/google/nixysa.git nixysa-read-only
Descrição dos comandos por linha:
- Abre a raiz do seu sistema.
- Cria o diretório
Sources
, onde o projeto será baixado. Você pode alterar o nome do diretório, mas ele não deve conter espaços ou qualquer caracter especial. - Entra no diretório recém criado.
- Baixa a última versão do repositório do Nixysa, atualmente a
versão 75
.
Utilizando o comando dir
, é possível verificar que o nixysa-read-only
foi criado. Depois abra o Microsoft Visual Solution (complex.sln
) do projeto exemplo.
cd nixysa-read-only\examples\complex
start complex.sln
Configure o VC++ para trabalhar com o Microsoft Platform SDK. Entre em Tools -> Options -> Project and Solutions -> VC++ Directories
e adicione os seguintes diretórios:
- Executable files:
C:\Program Files\Microsoft Platform SDK\Bin
- Include files:
C:\Program Files\Microsoft Platform SDK\Include
- Library files:
C:\Program Files\Microsoft Platform SDK\Lib
Agore adicione algumas definições para o preprocessador. Entre em Project -> Configuration -> C/C++ -> Preprocessor
e adicione _X86_;X86
a Preprocessor Definitions
.
Abra o arquivo complex.rc
e substitua a linha #include "afxres.h"
por #include "windows.h"
. Agora bastar pressionar F7
para realizar o build
do projeto. A DLL npcomplex.dll
poderá ser encontrada no diretório nixysa-read-only\examples\complex\DEBUG
. O plugin também será automaticamente copiado para o diretório %USERPROFILE%\Application Data\Mozilla\Plugins
, em que %USERPROFILE%
representa o diretório do usuário.
Para testar o plugin, basta abrir o arquivo nixysa-read-only\examples\complex\test.html
no Firefox. Lembrando que para testar em navegadores Chromium, a linha <object type='application/complex' id='plugin' width='0' height='0'> </object>
deve ser substituída por <embed type="application/complex" id="plugin" width='0' height='0'/>
.
Recomendo também verificar os vídeos do Firebreath, a documentação é bem mais completa que o Nixysa.