Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Instalator na MacOs - Packages i baza danych


  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 KarDamonN

KarDamonN
  • 1 postów

Napisano 27 września 2016 - 12:38

Hej, 

 

Chciałbym zrobić instalator na Mac'a, tak aby użytkownik mógł pobrać plik *.pkg z mojej strony, a następnie jednym kliknięciem zainstalował cały program. 

 

Paczka zawiera plik *.app oraz bazę sqlite3. Plik *.app powinien zostać przeniesiony do folderu ~/Applications, natomiast baza danych do odpowiedniego katalogu i z odpowiednimi uprawnieniami (read-write) do katalogu ~/Libraries/Application Support/. 

 

Próbowałem zrobić to przy pomocy Packages (http://s.sudre.free.fr/Software/Packages/about.html) - ale niestety program nie kopiuje (?) plików do innych folderów oprócz Applications (czyli nie przenosi bazy do ~/Libraries/Application Support/). W związku z tym napisałem skrypt bash'a, który jest odpalany wraz z instalatorem, który kopiuje bazę we właściwe miejsce ale niestety nadaje jej prawa wyłącznie do odczytu, tymczasem użytkownik musi mieć prawa zapisu do niej :(

 

Czy ma ktoś jakiś pomysł jak to zrobić? Albo może ktoś ma doświadczenia z przygotowywaniem Instalatora własnej apki na Mac'a? 

 

Wszystkie sugestie mile widziane! :)

 

K. 

 

 



#2 evo_23

evo_23
  • 217 postów
  • SkądBytom

Napisano 20 października 2016 - 13:14

Może na końcu skryptu, skoro znasz ścieżkę do pliku wykonaj polecenie:

chmod 777 -nazwa pliku - gdzie 777 to odpowiednie uprawnienia.

Pamietaj, że 777 to możliwość zrobienia z plikiem wszystkiego.


"Hear What You've Been Missing"

#3 Achi

Achi
  • 66 postów
  • SkądKatowice, PL

Napisano 12 listopada 2016 - 23:22

Cześć,

 

Nie wiem czy temat aktualny.

 

Na pulpicie zrób sobie katalog myApp.

W nim utwórz katalogi "private" a w nim "tmp" a w nim myPkg (ostatecznie /Users/username/Desktop/myApp/private/tmp/myPkg).

oczywiście "username" podstawiasz nazwą swojego usera. 

 

Do tego katalogu (myPkg)  wrzuć swój app i plik z bazą danych. 

 

Na pulpicie utwórz katalog scripts (/Users/username/Desktop/scripts)

 

otwórz edytor typu TextWrangler/Sublime/Pico/Nano i utwórz plik postinstall o treści:

#!/bin/bash

currentUser=$(stat -f '%Su' /dev/console)

mkdir "/Users/${currentUser}/Applications"
cp -R "/private/tmp/myPkg/my.app" "/Users/${currentUser}/Applications/"
cp "/private/tmp/myPkg/sql.db" "/Users/${currentUser}/Library/Application Support/"

#owner/group if needed

chown ${currentUser}:staff "/Users/${currentUser}/Applications/my.app"
chown ${currentUser}:staff "/Users/${currentUser}/Library/Application Support/sql.db"

#permissions if needed
chmod 755 "/Users/${currentUser}/Applications/my.app"
chmod 755 "/Users/${currentUser}/Library/Application Support/sql.db"

rm -R "/private/tmp/myPkg"

Zapisz (oczywiście skrypt dopasowujesz do swoich potrzeb, to tylko pierwszy szkic, który nie obsługuje błędów itd.). 

 

Zwróć uwagę, aby katalogi "private" i "tmp" należały do root:wheel i miały prawa jak niżej

sudo chown root:wheel private
sudo chown root:wheel tmp
sudo chmod 755 /private
sudo chmod 777 /private/tmp

plik postinstall powinien mieć prawa wykonywania

chmod +x ~/Desktop/script/postinstall

I na sam koniec generujemy paczuszkę (uwaga bez podpisu developera, można jednak dodać flagą --sign). 

sudo pkgbuild --root /Users/username/Desktop/myApp --identifier com.company.myApp --scripts ~/Desktop/scripts "/Users/username/Desktop/myInstaller.pkg"





Użytkownicy przeglądający ten temat: 4

0 użytkowników, 4 gości, 0 anonimowych