il pacchetto creato da pkgbuild non si installa correttamente

3

Ora abbiamo usato pkgbuild / productbuild per creare un archivio di prodotti, composto da tre pacchetti (applicazione, uninstaller, KEXT), che secondo l'installer si installa bene, nessun errore.

KEXT è posizionato correttamente in / Library / Extensions e lo script postinstall lo carica bene.

Ma le mie applicazioni non vengono spostate nella cartella / Applicazioni / Società /. La cartella è stata creata, ma le applicazioni non sono posizionate lì.

Il processo di creazione del componente plist + distribuzione XML è così assolutamente semplice, quindi non riesco a capire cosa può andare storto?

Il pacchetto può essere "installato" tramite Pacifist, anche se lo script postinstall non viene eseguito.

Aiuto?

Aggiornamento:

Analizza fase (l'applicazione risiede nella cartella ./pkgbuild/app_path/):

pkgbuild --analyze --root "./pkgbuild/app_path/" app.plist

Fase di costruzione:

pkgbuild --root "./pkgbuild/app_path/" \
         --component-plist ./app.plist \
         --install-location "/Applications/Company/" \
         --identifier "com.company.myapp.pkg" \
         --version "1.0" \
         app.pkg

Quindi l'archivio del prodotto, passaggio 1:

productbuild --synthesize --package app.pkg distribution.xml

distribution.xml viene quindi modificato con l'immagine di sfondo corretta, la licenza, ecc.

Passaggio 2:

productbuild --distribution ./distribution.xml output.pkg

(Ho omesso il pacchetto KEXT perché funziona perfettamente)

Quando si installa "output.pkg", la cartella / Applicazioni / Società / viene creata ma è vuota.

RISOLTO (vedi sotto Risposta Graham):

Impostando BundleIsRelocatable nei file plist del componente su false , le applicazioni vengono inserite nella posizione corretta.

Visualizzando il log di installazione, l'applicazione è stata "spostata" nel punto in cui il mio progetto Xcode ha creato l'app, ma crea ancora la cartella / Application / Company. Un comportamento "leggermente" peculiare, direi.

La versione OSX è 10.11.1.

    
posta Robert 11.12.2015 - 11:42
fonte

1 risposta

4

Applicazioni spostate

È probabile che l'Installer aggiorni la prima copia dell'applicazione che trova e non l'applicazione nel percorso di installazione predefinito.

Questo comportamento è intenzionale e consente agli utenti di spostare le applicazioni, pur mantenendo la possibilità di utilizzare i pacchetti di installazione per applicare gli aggiornamenti.

Come sviluppatore probabilmente hai numerose copie dell'applicazione di destinazione sul tuo Mac. È probabile che l'ultima copia - o Xcode - lanciata sia quella che viene aggiornata. Questo può includere copie all'interno di cartelle di costruzione nascoste.

Applica la posizione con BundleIsRelocatable

Imposta BundleIsRelocatable flag su false impone Installer.app per utilizzare il percorso esatto fornito dal pacchetto.

Senza questo flag set, Installer.app cercherà il Mac di destinazione per trovare le applicazioni corrispondenti e scriverà la nuova copia nella posizione individuata.

  • Prova il tuo programma di installazione con un Mac pulito con una nuova copia di OS X.
  • Esamina attentamente l'output del registro da Installer.app o installer ; vedrai le voci riguardanti la ricerca e la posizione finale dell'applicazione trasferita.

Segnala il bug

Che il programma di installazione abbia ancora creato la cartella della società madre sembra un errore. Si prega di segnalare un bug con Apple .

    
risposta data 11.12.2015 - 15:29
fonte

Leggi altre domande sui tag