Il programma di installazione del pacchetto Mac installa la cartella "Contenuto" in / Applicazioni invece del pacchetto

2

Quando cerco di usare la confezione con la mia .app per creare un programma di installazione per Mac e eseguo il programma di installazione, mi crea una cartella denominata "Contenuti" nella mia cartella / Applicazioni, invece l'app "bundle" come dovrebbe.

Ho provato con pkgbuild + productbuild:

pkgbuild --component "./myapp.app" --version 1 --install-location /Applications component.pkg
productbuild  --package-path "component.pkg" --distribution "./Distribution.xml" --package-path "./Temp" --resources "./Resources" --sign mycert "myapp.pkg"

E solo con productbuild:

productbuild --component "./myapp.app" /Applications -s mycert myapp.pkg

In entrambi i casi, eseguo il programma di installazione, tutto sembra a posto, ma nella cartella Applicazioni vedo "Contenuti" (ovvero il contenuto del pacchetto dell'app)

Ho provato con "./myapp.app/" anche con attributo --component e aggiungendo anche "/Applications/myapp.app" in --install-location

    
posta FlamingMoe 14.03.2015 - 09:37
fonte

2 risposte

1

Ci sono voluti alcuni tentativi per farlo funzionare (l'installatore è riuscito a fare cose davvero strane nei miei primi tentativi). Ma sembra funzionare in modo affidabile.

Ho creato una cartella temporanea con solo l'applicazione che volevo impacchettare (lasciare l'app seduta altrove sembrava comportare il comportamento strano di cui sopra), quindi impacchettarla da lì. Così ho creato una cartella temporanea chiamata "test" sul mio desktop e ho lasciato cadere l'app da sola. Il seguente comando produce quindi in modo affidabile un pacchetto di lavoro sul mio desktop.

productbuild --component ~/Desktop/test/myapp.app /Applications ~/Desktop/myapp.pkg --sign "my certificate identity name"

Qualcosa che è utile quando il test è di eseguire sudo opensnoop | grep installd in un terminale allo stesso tempo. Genera molto output ma dovresti essere in grado di vedere il bundle di applicazioni creato in qualcosa come /var/folders/zz/GIBBERISH/C/PKInstallSandboxManager/GIBBERISH.activeSandbox/Root/ e poi copiato nella sua destinazione finale.

Nota: non sono sicuro del motivo per cui stai utilizzando -s nel secondo esempio productbuild del comando che hai dato nella tua domanda. Esistono tre argomenti di opzioni per productbuild che iniziano con "s" (sintesi, script e firma) e la pagina man non menziona l'uso dei "-s" più corti per nessuno di essi. Forse questo è il problema. Ovviamente potrebbe essere solo un refuso. :)

    
risposta data 23.03.2015 - 01:04
fonte
0

Penso che il problema qui sia che stai usando --component piuttosto che --root . I documenti sono un po 'poco chiari sul suo utilizzo, ma sembra che, come con root, sia necessario specificare la cartella che racchiude il pacchetto .app non il percorso del pacchetto stesso. Ho fatto questo errore quando ho usato --root e ho visto solo il mio contenuto del pacchetto che veniva installato in /Applications . La stessa cautela è necessaria quando si crea effettivamente il pacchetto usando pkgbuild.

Vorrei copiare il mio .app in una cartella ./build e poi:

pkgbuild --analyze --root ./build MyApp.plist 
pkgbuild --root ./build --component-plist MyApp.plist --identifier co.uk.MyApp --version 0 --install-location /Applications MyApp.pkg
productBuild --synthesize --package ./MyApp.pkg ./Distribution.xml
productBuild --distribution ./Distribution.xml --resources ./Resources --sign "Developer ID Installer: My Id" --package-path . ./MyApp-ver-whatever.pkg
    
risposta data 22.07.2016 - 23:41
fonte

Leggi altre domande sui tag