Kiedy próbuję użyć pakietu z aplikacją .app do utworzenia instalatora dla komputerów Mac i uruchamiam instalator, tworzy on folder o nazwie „Contents” w folderze / Applications, a nie „pakietową aplikację” tak, jak powinien.
Testowałem z 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"
I tylko z budowaniem produktu:
productbuild --component "./myapp.app" /Applications -s mycert myapp.pkg
W obu przypadkach uruchamiam instalator, wszystko wydaje się w porządku, ale w folderze Aplikacje widzę „Zawartość” (to jest zawartość pakietu aplikacji)
Próbowałem z „./myapp.app/” również w atrybucie --component, a nawet dodałem „/Applications/myapp.app” w --install-location
install
package-management
pkg
build-version
FlamingMoe
źródło
źródło
Odpowiedzi:
Podjąłem kilka prób, aby to zadziałało (instalatorowi udało się zrobić kilka naprawdę dziwnych rzeczy przy pierwszych kilku próbach). Ale wydaje się, że działa to niezawodnie.
Utworzyłem folder tymczasowy z aplikacją, którą chciałem spakować (pozostawienie aplikacji siedzącej gdzie indziej wydawało się skutkować wspomnianym dziwnym zachowaniem), a następnie spakować ją stamtąd. Utworzyłem więc folder tymczasowy o nazwie „test” na pulpicie i sam tam upuściłem aplikację. Następujące polecenie niezawodnie powoduje powstanie działającego pakietu na moim pulpicie.
Coś, co jest przydatne podczas testowania, to jednoczesne uruchomienie
sudo opensnoop | grep installd
w terminalu. Generuje dużo danych wyjściowych, ale powinieneś być w stanie zobaczyć, jak pakiet aplikacji jest tworzony w coś podobnego,/var/folders/zz/GIBBERISH/C/PKInstallSandboxManager/GIBBERISH.activeSandbox/Root/
a następnie kopiowany do ostatecznego miejsca docelowego.Uwaga: Nie jestem pewien, dlaczego używasz
-s
w drugim przykładzieproductbuild
polecenia podanego w pytaniu. Istnieją trzy opcje argumentów do zbudowania produktu, które zaczynają się od „s” (synteza, skrypty i znak), a strona podręcznika nie wspomina o użyciu krótszego „-s” dla żadnego z nich. Być może to jest problem. Oczywiście może to być literówka. :)źródło
Myślę, że problemem jest to, że używasz
--component
zamiast--root
. Dokumenty są nieco niejasne, ale wygląda na to, że podobnie jak w przypadku katalogu głównego należy określić folder, który zawiera.app
pakiet, a nie samą ścieżkę pakietu. Popełniłem ten błąd podczas używania--root
i byłem świadkiem, jak po prostu instaluje się zawartość mojego pakietu/Applications
. Ta sama ostrożność jest wymagana przy faktycznym budowaniu pakietu za pomocą pkgbuild.Skopiowałem
.app
go do./build
folderu, a następnie:źródło