Instalando Scripts

This is an archived page. It's not actively maintained.

Esta secci贸n describe el script de instalaci贸n.

Creando un script de instalaci贸n

Usted desear谩 generalmente alguna forma de control sobre el proceso de instalacion. Por ejemplo, usted puede desear comprobar versiones de archivos e instalar solamente archivos actualizados, o quiz谩s usted desea aplicar parches a los archivos existentes. El script de instalaci贸n es lo suficiente flexible para permitirle desinstalar archivos. Por esta raz贸n, los instaladores incluyen un script de instalaci贸n para manejar el proceso de la instalaci贸n.

El script de instalaci贸n se debe llamar install.js y se debe colocar en el nivel superior del archivo del instalador. El script contendr谩 c贸digo Javascript que ejecutar谩 varias funciones de instalaci贸n.

En un documento HTML, o un documento XUL, el objeto window es el objeto global de la ra铆z. Eso significa que usted puede llamar los m茅todos del objeto window sin usar el calificador antes de la llamada, lo que significa que window.open(鈥) se puede escribir simplemente open(鈥). En un script de instalaci贸n, no hay ventana asociada, sin embargo el objeto global ser谩 un objeto Install que contiene varias funciones para personalizar el proceso de instalaci贸n. Algunas de las funciones del objeto Install ser谩n descritas abajo.

El script de instalaci贸n debe seguir los siguientes pasos:

  1. Inicie la instalaci贸n especificando qu茅 paquete y versi贸n est谩 siendo instalada.
  2. Utilice las funciones de instalaci贸n para indicar qu茅 archivos y directorios necesitan ser instalados. Usted puede tambi茅n fijar los archivos que se mover谩n y ser谩n suprimidos.
  3. Comience el proceso de instalar los archivos necesarios.

Es importante observar que durante el paso dos, usted indica solamente qu茅 archivos deben ser instalados y que suceda cualquier otra operaci贸n que usted desee. Ning煤n archivo se copia hasta el paso tres. Debido a esto, usted puede especificar f谩cilmente un n煤mero de archivos que se instalar谩n, viene a trav茅s de una cierta clase de error, y aborta el proceso entero sin la modificaci贸n del sistema del usuario.

El Registro de Componentes

Mozilla mantiene un archivo que es un registro de todos los componentes que est谩n instalados actualmente. Los componentes incluyen los nuevos paquetes de chrome, skins y extensiones. Cuando un nuevo componente es instalado, el registro se actualiza. El registro almacena los archivos y la informaci贸n de versi贸n de los componentes instalados. De esa forma, es m谩s f谩cil comprobar si una versi贸n de su componente est谩 presente y actualizarlo solamente en caso de necesidad.

Los componentes del registro trabajan como el registro de Windows. Consiste en una jerarqu铆a de llaves y de valores. Usted no necesita saber mucho sobre eso para crear aplicaciones XUL a menos que usted est茅 creando sus propios componentes XPCOM.

Lo qu茅 usted necesita saber para una instalaci贸n es que el registro almacena un sistema de informaci贸n sobre su aplicaci贸n, tal como la lista del archivo y las versiones. Toda esta informaci贸n se almacena en una llave (y dentro de subkeys) que usted proporciona en la escritura de la instalaci贸n (en el paso 1 mencionado arriba).

Esta llave esta estructurada como un directorio de la trayectoria de la forma siguiente:

/Author/Package Nombre

Substituya la palabra Author por su nombre y substituya el nombre del paquete por el nombre del paquete que usted est谩 instalando. Por ejemplo:

/Xulplanet/Find Files

/Netscape/Personal Security Manager

El primer ejemplo es el que utilizaremos para el di谩logo de b煤squeda de archivos. El segundo es la llave usada para el Personal Security Manager.

Iniciar la Instalaci贸n

El objeto Install tiene una funci贸n, initInstall, que se puede utilizar para iniciar la instalaci贸n. Debe ser ejecutada al principio de su script de instalaci贸n. La sintaxis de esta funci贸n es como sigue:

initInstall( packageName , regPackage , version );

Ejemplo:

initInstall("Find Files","/Xulplanet/Find Files","0.5.0.0");

El primer par谩metro es el nombre del paquete en forma legible. El segundo par谩mtro es la llave del registro usada para guardar la informaci贸n del paquete seg煤n lo descrito antes. El tercer par谩metro es la versi贸n del paquete que esta siendo instalado.

Despu茅s, necesitamos definir el directorio donde ser谩n instalados los archivos. Hay dos maneras de hacer esto. El m茅todo simple asigna un directorio de la instalaci贸n e instala todos los archivos en 茅l. El segundo m茅todo permite que usted asigne una destinaci贸n bas谩ndose en el archivo-por-archivo (o directorio). El primer m茅todo se describe abajo.

La funci贸n setPackageFolder asigna un directorio de la instalaci贸n. Para el di谩logo de b煤squeda de archivos, instalaremos los archivos en el directorio chrome. (realmente podr铆a ponerlos dondequiera.) El setPackageFolder toma una discusi贸n, el directorio donde sera instalado. Para una m谩xima portabilidad, usted no puede especificar una cadena de caracteres para el directorio. En lugar de eso, usted especifica un identificador de un directorio conocido y abre subdirectorios de 茅l. As铆, si sus aplicaciones necesitan instalar algunas bibliotecas de sistema, usted no necesitar谩 saber el nombre de esos directorios.

Los identificadores de directorio se enumeran en XULPlanet reference. Para el directorio chrome, el identificador del directorio es 'Chrome'. La funci贸n getFolder se puede utilizar para conseguir uno de estos directorios especiales. Esta funci贸n tiene dos par谩metros, el primero es el identificador y el segundo es un subdirectorio. Por ejemplo:

findDir = getFolder("Chrome","findfile");
setPackageFolder(findDir);

Aqu铆, conseguimos la carpeta findfile en la carpeta chrome y la pasamos directamente a la funci贸n del setPackageFolder. La segunda discusi贸n al getFolder es el subdirectorio en el cual vamos a instalar, que no tiene que existir. Usted puede dejar esta discusi贸n enteramente afuea si usted no necesita uno.

Especificar los archivos a instalar

Despu茅s, usted necesita especificar qu茅 archivos deben ser instalados. Esto implica el uso de dos funciones, addDirectory y addFile. La funci贸n addDirectory le dice al instalador que un directorio del archivo XPI (y de todo su contenido) debe ser instalado a un lugar particular. El addFile es similar pero para un solo archivo.

Las funciones addDirectory y addFile tienen varias formas. Las m谩s simples solo tienen una discusi贸n, el directorio del instalador para instalar al directorio asignado de la instalaci贸n.

addDirectory ( dir ); addFile ( dir );

Ejemplo:

addDirectory("findfile");

El ejemplo anterior especificar谩 que el directorio findfile del archivo del instalador debe ser instalado. Podemos llamar estas funciones m煤ltiples veces para instalar otros archivos.

Despu茅s, desearemos colocar los archivos de busqeuda en el sistema del chrome para poderlo utilizar con un cromo URL. Esto se puede hacer con la funci贸n registerChrome. Toma dos discusiones, el primero es el tipo de chrome a colocarse (contenido, skin o 鈥榣ocale鈥). El segundo es el directorio que contiene el archivo de contents.rdf para colocarse. Porque el di谩logo de los archivos de busqueda tiene contenido, un archivo skin y un archivo 鈥榣ocale鈥, el registerChrome necesitar谩 ser abierto tres veces.

registerChrome(Install.CONTENT | Install.DELAYED_CHROME, getFolder(findDir, "content"));
registerChrome(Install.SKIN | Install.DELAYED_CHROME, getFolder(findDir, "skin"));
registerChrome(Install.LOCALE | Install.DELAYED_CHROME, getFolder(findDir, "locale"));

La bandera de DELAYED_CHROME se utiliza para indicar que el cromo debe ser instalado la pr贸xima vez Mozilla est谩 funcionado.

Terminar la Instalaci贸n

Las funciones addDirectory y addFile no copian ningun archivo. Indican solamente qu茅 archivos deben ser instalados. Semejantemente, el registerChrome indica solamente que el chrome debe ser colocado. Para terminar el proceso y para comenzar a copiar archivos, abra la funci贸n performInstall. No toma ninguna discusi贸n.

el script final para instalar el componente de b煤squeda de archivos se muestra abajo:

Ejemplo

initInstall("Find Files","/Xulplanet/Find Files","0.5.0.0");

findDir = getFolder("Chrome","findfile");
setPackageFolder(findDir);

addDirectory("findfile");

registerChrome(Install.CONTENT | Install.DELAYED_CHROME, getFolder(findDir, "content"));
registerChrome(Install.SKIN | Install.DELAYED_CHROME, getFolder(findDir, "skin"));
registerChrome(Install.LOCALE | Install.DELAYED_CHROME, getFolder(findDir, "locale"));

performInstall();

A continuaci贸n veremos algunas funciones adicionales de instalaci贸n