2013-08-23 16 views
10

Próbuję utworzyć instalator aplikacji Java w systemie Mac OS 10.8.4. Aplikacja działa dobrze i mogę zainstalować ją bez problemu z pliku zip. Mogę utworzyć instalator .pkg z produktem lub pkgbuild. Mogę również pomyślnie zainstalować jeden z plików .pkg instalatora, jednak aplikacja nie działa poprawnie, ponieważ oba programy pakujące zmieniają własność katalogu danych i jego podrzędnych plików i podkatalogów z użytkownika na root. Zainstalowałem ten katalog danych w katalogu Resources pakietu .app i po pierwszym uruchomieniu programu przenosi on katalog danych do katalogu/Users/user/Library/Application Support. Próbowałem użyć - zachować wachtę i zachować w pamięci - inne opcje z pkgbuild bezskutecznie. Jedynym sposobem, jaki udało mi się poprawnie zainstalować i wykonać, jest plik ZIP, ponieważ pozostawia tylko własność pliku. Oto komenda PKGBUILD Używam:Modyfikacja własności pliku przez productbuild i pkgbuild

PKGBUILD --ownership zachować --component ./myApp.app ./myApp-installer.pkg

Moje pytania są następujące:

  1. Jak można Zmuszam pkgbuild do uszanowania opcji zachowania wachtowego?

  2. Czy jest możliwe zbudowanie osobnego pakietu zawierającego tylko dane z uprawnieniami użytkownika i przeznaczonego dla obszaru użytkownika oraz połączenie go z pakietem wykonywalnym za pomocą opcji --synthesize pkgbuild? jeśli tak, czy ktoś mógłby mi pokazać, jak zbudować taki pakiet danych?

+0

Czy kiedykolwiek znajdziesz rozwiązanie? – spartygw

Odpowiedz

1

Wiem, że jest dość stary, odpowiem na wypadek, gdyby ktoś inny potrzebował odpowiedzi. Zazwyczaj to, że mam skrypt powłoki, który tworzy dla mnie plik .pkg. W tym skrypcie ustawiam wszystkie uprawnienia do plików i prawa własności przed zapakowaniem. Oto przykład:

NAME="PKGFILENAME" 

IDENTIFIER="com.pkg.APPNAME" 

VERSION="1.0.0" 

INSTALL_LOCATION="PATH_TO_WHERE_THE_FILES_SHOULD_BE_COPIED_ON_USERS_MACHINE" 
ROOT_LOCATION="PATH_TO_WHERE_FILES_ARE_ON_YOUR_MASCHINE" 

# Remove any unwanted .DS_Store files. 
find "$ROOT_LOCATION" -name '*.DS_Store' -type f -delete 

# put any command for changing the ownership or permissions here 
chmod -R +r "$ROOT_LOCATION" 

# Build package. 
/usr/bin/pkgbuild \ 
    --root "$ROOT_LOCATION" \ 
    --install-location "$INSTALL_LOCATION" \ 
    --identifier "$IDENTIFIER" \ 
    --version "$VERSION" \ 
    "$NAME.pkg" 

zapisz to coś w pliku takim jak create-my-package.sh i uruchom to w linii poleceń.

Powiązane problemy