2009-03-12 13 views
15

Tengo una aplicación para la que necesito crear un instalador, y todo lo que el instalador necesita hacer (además de copiar la aplicación) es ejecutar un script (o ejecutable) que no es parte del aplicación en sí. ¿Alguna ayuda sobre cómo puedo hacer esto? Veo en la pestañaRequisitos hay un Resultados de escritura la acción, y también existe la preinstalar acciones en el acciones pestaña que tiene una Abrir archivo acción. ¿Alguno de estos hará el trabajo o debería buscar en otro lado?Usando PackageMaker para ejecutar un script en la instalación

Respuesta

21

Here es una buena Cómo hacer

Hay 7 tipos de secuencias de comandos que puede ser lanzado durante el proceso de instalación:

InstallationCheck: Este script se puso en marcha a principios de la proceso de instalación (incluso antes del paso Autenticación). Se puede usar para verificar que el paquete se pueda instalar en esta computadora.

VolumeCheck: Este script se inicia en el paso "Seleccionar destino". Se usa para determinar en qué volumen se puede instalar el paquete.

verificación previa: se lanzó Este script justo después de que el usuario hace clic en el botón "Instalar".

preinstalación/preupgrade: Este script se puso en marcha después de la secuencia de comandos de verificación previa si hay una (en el caso de una única instalación del paquete); de lo contrario, justo después de que el usuario haga clic en el botón "Instalar".

Como ve, aquí hay 2 tipos de scripts. La preinstalación se inicia cuando el paquete nunca se ha instalado (desde el punto de vista de Installer.app), el preupgrade se inicia cuando el paquete ya se ha instalado. Para determinar si un Paquete ya se ha instalado o no, Installer.app está revisando el contenido del siguiente directorio:/Library/Receipts. Si hay un archivo llamado PackageName.pkg dentro de él, entonces el paquete ya se ha instalado; de lo contrario, es la primera instalación.

postinstall/postupgrade: Este script se inicia después de que se hayan instalado los archivos en el paquete. Consulte (preinstalar/preupgrade) para ver cuál se lanzó.

postflight: Este script se inicia después de la secuencia de comandos postinstalación/post-actualización o cuando el paquete se ha instalado.

+1

Gracias, pero tengo una pregunta rápida: Creé el script postinstalación, pero ¿cómo hago referencia al ejecutable que quiero ejecutar, en otras palabras, cómo incluyo ese ejecutable (que no forma parte de la aplicación real) en el paquete? y cómo sería su camino (en el script postinstalación). –

2

Este artículo PackageMaker How-To está desactualizado, pero tiene información muy útil sobre los scripts a mitad de camino. Busque la tabla que muestra las variables de línea de comando como se ve desde shell y perl, más algunos valores de estado de salida útiles.

+0

No me pareció correcto copiar la información aquí, así que me disculpo por responder por referencia. –

+1

Umm, ha vinculado al mismo artículo que la respuesta de epatel ya estaba vinculando a .. – yairchu

5

Me las arreglé para incluir un script de Shell en mi paquete que hice con PackageMaker. Necesitaba agregar mi aplicación a los elementos de inicio de sesión después de la instalación, así que hice un script llamado postflight.sh y lo puse en una carpeta.(parece que funciona con cualquier ubicación)

Y luego en mi paquete, tengo aplicaciones. En Contenido, Paquete: Aplicaciones, en la pestaña Scripts, elijo postflight.sh en la sección Postflight. Eso es.

mis postflight.sh comienza con

#!/bin/bash 

y entonces tiene una secuencia de comandos para poner la aplicación en los elementos de inicio. Cuando no tenía eso, podía hacer el paquete, pero la instalación falló. Espero que esto sea útil.

+0

"solo una carpeta". Gracias. La única pieza de datos que impide que mi paquete compile es dónde poner el script de instalación freaking. – mcandre

+1

En caso de que esto ayude a cualquiera: si la CLI del fabricante de paquetes se usa con la opción --scripts, los nombres de archivo del script no deberían tener la extensión .sh. Simplemente dígales preflight, postflight, etc. – pepsi

Cuestiones relacionadas