2009-03-12 11 views
15

Ho un'app ho bisogno di creare un programma di installazione per, e tutto il programma di installazione deve fare (oltre a copiare l'app) è eseguire uno script (o eseguibile) che non fa parte del app stessa. Qualche aiuto su come posso farlo? Vedo nel scheda Requisiti c'è un Risultati di Script azione, e c'è anche la preinstallare azioni nella scheda azioni che ha un Apri file azione. Ognuno di questi lavori o dovrei cercare altrove?Utilizzo di PackageMaker per eseguire uno script all'installazione

risposta

21

Here è un buon How-to

Ci sono 7 tipi di script che può essere lanciato durante il processo di installazione:

InstallationCheck: Questo script viene lanciato all'inizio del processo di installazione (anche prima della fase di autenticazione). Può essere usato per verificare che il pacchetto possa essere installato su questo computer.

VolumeCheck: Questo script viene avviato nel passaggio "Seleziona destinazione". Viene utilizzato per determinare su quale volume è possibile installare il pacchetto.

preflight: Questo script viene avviato subito dopo che l'utente ha fatto clic sul pulsante "Installa".

preinstallazione/preupgrade: Questo script viene lanciato dopo lo script di preflight se c'è una (nel caso di una singola installazione del pacchetto); altrimenti subito dopo che l'utente ha fatto clic sul pulsante "Installa".

Come vedi, ci sono 2 tipi di script qui. Il preinstallato viene lanciato quando il pacchetto non è mai stato installato (da un punto di vista Installer.app), il preupgrade viene avviato quando il pacchetto è già stato installato. Per determinare se un pacchetto è già stato installato o meno, Installer.app sta dando un'occhiata al contenuto della seguente directory:/Library/Receipts. Se c'è un file denominato PackageName.pkg al suo interno, il pacchetto è già stato installato, altrimenti è la prima installazione.

postinstall/post-aggiornamento: Questo script viene avviato dopo che i file nel pacchetto sono stati installati. Vedi (preinstall/preupgrade) per vedere quale è stato lanciato.

postflight: Questo script viene avviato dopo lo script postinstall/postupgrade o quando il pacchetto è stato installato.

+1

Grazie, ma ho una domanda veloce: ho creato lo script postinstall, ma come faccio a fare riferimento all'eseguibile che voglio eseguire, in altre parole come includo quell'eseguibile (non parte dell'applicazione reale) nel pacchetto e come sarebbe il suo percorso (nello script postinstall). –

2

Questo articolo è stato aggiornato, ma ha alcune informazioni molto utili sugli script a metà. Cerca la tabella che mostra le variabili della riga di comando viste da shell e perl, oltre ad alcuni valori di stato di uscita utili.

+0

Non mi sembrava giusto copiare le informazioni qui, quindi scuse per aver risposto per riferimento. –

+1

Umm, sei collegato allo stesso articolo che la risposta di Epatel stava già collegando a .. – yairchu

5

Sono appena riuscito a includere uno script Shell nel pacchetto che ho creato con PackageMaker. Ho dovuto aggiungere la mia app agli elementi di login dopo l'installazione, quindi ho creato uno script chiamato postflight.sh e lo ho inserito in una cartella.(sembra che funzioni con qualsiasi posizione)

E poi nel mio pacchetto, ho Applicazioni. In Contenuto, Pacchetto: Applicazioni, nella scheda Script, scelgo lo postflight.sh nella sezione Postflight. Questo è tutto.

miei postflight.sh inizia con

#!/bin/bash 

e quindi ha qualche script per mettere l'applicazione negli elementi di login. Quando non ce l'ho, potrei fare il pacchetto, ma l'installazione fallì. Spero che questo sia utile.

+0

"solo una cartella". Grazie. L'unico pezzo di dati che mantiene il mio pacchetto dalla compilazione è dove mettere il maledetto script di installazione. – mcandre

+1

Nel caso questo aiuti qualcuno: se la CLI del packagemaker viene utilizzata con l'opzione --scripts, i nomi dei file di script non dovrebbero avere un'estensione .sh. Basta nominarli preflight, postflight, ecc. – pepsi

Problemi correlati