2012-02-09 21 views
7

Estoy trabajando en el desarrollo de un complemento de Firefox con el Add-on SDK. Cambié mi archivo package.json para incluir entradas para un ícono de 32x32 y un ícono de 64x64.Cambiar el icono de instalación del complemento de Firefox

{ 
    ... 
    "icon": "icons/icon-32.png", 
    "icon64": "icons/icon-64.png", 
    ... 
} 

Además, coloqué icono-32.png y el icono-64.png en el directorio icons dentro de mi directorio del paquete antes de ejecutar cfx xpi dentro del directorio del paquete.

Los íconos se muestran correctamente en el administrador de complementos desde Tools > Add-ons, pero el diálogo de instalación aún usa un icono de pieza de rompecabezas.

Me autoalojo el complemento de Firefox.

Al principio, pensé que podría ser porque todavía no estaba firmando el archivo xpi, pero noté que hay muchos otros complementos que no están firmados pero que aún tienen el ícono correcto en el diálogo de instalación.

También pensé que podría ser porque el ícono no estaba ubicado en el lugar correcto dentro del archivo xpi o quizás porque el add.kk SDK no generó correctamente el archivo install.rdf, pero descomprimí el xpi y descubrió que cfx había puesto los iconos en el directorio raíz y los había renombrado a los nombres predeterminados (icon.png e icon64.png) y había omitido los nombres de archivo en el archivo install.rdf (indicándolos a los iconos predeterminados).

¿Cómo puedo cambiar el ícono de instalación?

¿Se pueden cambiar los iconos de instalación solo cuando se aloja con Firefox?

Respuesta

14

El cuadro de diálogo de instalación no toma el ícono del paquete, utiliza la información proporcionada por la página web. Su página web debe use InstallTrigger para iniciar la instalación, a lo largo de estas líneas:

function install(link) 
{ 
    params = {}; 
    params[link.getAttribute("addonName")] = { 
    URL: link.href, 
    IconURL: link.getAttribute("iconURL") 
    }; 
    InstallTrigger.install(params); 
} 

Y su enlace se vería así:

<a href="foo.xpi" addonName="Foo" iconURL="foo.png" 
    onclick="install(this); return false;"> 
    Install 
</a> 

Tenga en cuenta que todavía tiene que ser un enlace - si el usuario tiene JavaScript deshabilitado su función install() no se llamará. El usuario simplemente seguirá el enlace y la instalación comenzará independientemente.

+2

@ user198989: Aparte de las comillas que faltan que acabo de arreglar, sí, estoy seguro de que funciona (simplemente lo intenté). –

Cuestiones relacionadas