Posizioni delle cartelle per l'app macOS

3

Sto facendo il porting di un'applicazione da Windows e Linux a macOS.

L'applicazione è scritta in Qt. Ha qualche dylib dipendente (alcuni costruiti, alcuni sdk). Le stesse identiche librerie e la stessa versione di Qt vengono utilizzate per alcune altre applicazioni (che non sono ancora state caricate). Non sarà distribuito attraverso l'App Store.

L'applicazione può leggere, scrivere, trascinare e rilasciare, stampare file utente di tipo personalizzato. Utilizza un database sqlite3, fornito - gli utenti dovrebbero essere in grado di navigare fino alla sua posizione (dato che dovrebbero anche avere la possibilità di utilizzare un database da una posizione diversa). Durante la stampa, sarebbe meglio usare la cartella temporanea cups per salvare i file temporanei bitmap.

Ho cercato di capire il modo migliore per installare questo tipo di app. La confezione del pacchetto è adatta a questo tipo di app o dovrei utilizzare il file system per posizionare tutti i file richiesti nelle posizioni più probabili?

  1. Finora ho creato un pacchetto, ho le dipendenze (incluso Qt framework) all'interno della directory Contents / Frameworks.

    • Dove posizionare i file creati dall'utente ... all'interno del pacchetto o all'interno della directory Users/MyCompany/MyProgram ? Ho provato a salvare all'interno ... non riesco a navigare all'interno di MyApp.app dall'interno del programma.
    • Dove posizionare il database sqlite3? Se lo inserisco nel pacchetto (ad esempio Contents/Resources ), non posso accedervi dall'interno del programma.
    • Dove verrà installato l'intero pacchetto? in /Applications/MyCompany/MyProduct è la mia ipotesi?
  2. Senza un pacchetto: da quello che ho letto, le seguenti potrebbero essere delle buone posizioni:

    • Per l'eseguibile: /Applications come sopra?
    • Per le librerie dipendenti: usr/share/MyCompany/MyProduct o %codice% ?
    • File utente ovviamente /Library/MyCompany/MyProduct
    • Database delle risorse? Non ho idea di cosa un buon posto è, accessibile a tutti gli utenti, dove conservare un tale file
    • Questa configurazione consentirebbe l'installazione di altre applicazioni e l'uso di stesso framework Qt e dylibs dipendenti ... Ma ho letto qualcosa le app non funzionano se i dylibs sono modificati?

Qual è il modo migliore e in tal caso, quali sono le migliori posizioni delle cartelle?

Devo supporre che l'installazione sia fatta con diritti sudo? L'installazione può essere eseguita senza diritti di amministratore?

    
posta Thalia 29.10.2014 - 18:07
fonte

1 risposta

1

Il pacchetto di applicazioni dovrebbe andare in / Applicazioni. Questo pacchetto di applicazioni dovrebbe contenere tutto . Librerie, dipendenze, tutto ciò che l'app deve eseguire, in modo che il pacchetto di applicazioni possa essere copiato nella directory di un'altra macchina / Applicazioni, dovrebbe essere in grado di essere eseguito.

L'installazione in / Applicazioni richiede admin. Se l'amministratore non è disponibile, la posizione standard per un'applicazione utente singola è ~ / Applicazioni. Non ci si dovrebbe aspettare che questa directory esista.

Se qualcosa deve essere "installato" sul sistema per l'app, come il "database delle risorse" di cui sopra, l'app dovrebbe richiedere di installarlo in:

/Library/Application Support/developername/appname/

Se qualcosa deve essere "installato" per l'utente corrente, dovrebbe andare nello stesso percorso preceduto dalla loro home directory. Questo non richiede l'amministratore.

~/Library/Application Support/developername/appname/

I file utente dovrebbero non essere salvati nella radice della home directory dell'utente. L'utente dovrebbe avere l'opportunità di salvare i file dove preferiscono, preferibilmente con una finestra di dialogo standard di salvataggio di OS X.

Anche ...

  • I file della cache dovrebbero andare in:

    ~/Library/Caches/developername/appname/
    
  • Le preferenze degli utenti dovrebbero andare in:

    ~/Library/Preferences/com.bundleidentifier.plist
    

    Se qualcosa di più di un singolo elenco di proprietà deve essere salvato ...

    ~/Library/Preferences/developername/appname/
    
risposta data 29.10.2014 - 18:14
fonte

Leggi altre domande sui tag