Home

Tutoriel AppleScript Studio

Partie 4 - Gestion du Bundle et initialisation p-list

Commun Tiger & Léopard

Problème, nous venons de créer une p-list contenant mes données dans mon dossier "Préférence" de mon ordinateur. Comment, en distribuant mon application cette p-list, sera aussi distribuée sur votre Macintosh.

Il faut inclure la p-list dans le Bundle.

Un Bundle c'est quoi ? - Toutes applications Macintosh est distribuées dans un dossier qui peut s'ouvrir par clic droit ou "ctrl" clic. Il faut donc, mettre dans ce bundle, notre fichier p-list ou tous autres fichiers d'initialisation pour générer la p-list du dossier préférence.

Donc, il faut vérifier que c'est la première utilisation. Si oui, générer la p-list, qui n'existe pas, ou simplement la copier.

Comment savoir si c'est la première fois. Simple, il suffit de vérifier l'absence du fichier p-list dans votre catalogue. Si absent, la copier du bundle vers vos préférences.

Plusieurs étapes, sachant que le nom d'utilisateur, et de disque dur sont différent d'une machine à l'autre, et que vous avez mis l'application où cela vous plaisait :

  1. Trouver le chemin d'accès de l'application
  2. Trouver le chemin d'accès à votre dossier préférence
  3. Générer les "alias" d'accès
  4. Vérifier l'existence du fichier p-list
  5. Si absent, le transférer du bundle dans vos préférences, ou le créer à partir d'un fichier de données

Voici le code que Yvon Thoraval m'a expédié, encore merci à lui, car trouver ces informations dans la documentation d'Apple, que je ne qualifierai pas, est plus que le parcours du combattant.

Définissons les variables en property pour les conserver :

property resourceFolder : missing value
property prefsFileName : "algClassic.plist"-- "com.legallou.CDClassic.plist" en final
property defaultPrefsFile : missing value
property defaultPrefsFileAlias : missing value

property userPrefsFolder : missing value
property userPrefsFile : missing value

property firstUse : missing value


Trouver le chemin d'accès de l'application

set resourceFolder to ((POSIX file (resource path of main bundle)) as string) & ":"

set defaultPrefsFile to resourceFolder & prefsFileName

Avec le nom de votre fichier préférence affecté par une commande "property".

property prefsFileName : "algClassic.plist" -- "com.legallou.CDClassic.plist" en final

Résultat :

"chemin d'accès du bundle.......:Resources:algClassic.plist"




Trouver le chemin d'accès à votre dossier préférence

set userPrefsFolder to ((path to preferences folder from user domain) as string)

set userPrefsFile to userPrefsFolder & prefsFileName

Ajoutez le nom de votre fichier préférence défini par une commande "property".

property prefsFileName : "algClassic.plist" -- "com.legallou.CDClassic.plist" en final

Résultat :

"iMac:Users:alg:Library:Preferences:algClassic.plist"




Générer les "alias" d'accès

A partir du chemin d'accès en POSIX, le générer en alias conforme au Mac :

set defaultPrefsFileAlias to defaultPrefsFile as alias

Résultat :

-- "iMac:...:Resources:algClassic.plist" as alias




Vérifier l'existence du fichier p-list

if fileExists(userPrefsFile) then.......

Avec le sous-programme :

on fileExists(file_name)
       tell application "Finder" to return exists file file_name
end fileExists




Si absent, deux options :

- un, transférez le fichier plist du bundle dans vos préférences

- deux, créer la plist à partir d'un fichier texte d'initialisation, ce qui créera le fichier p-list automatiquement dans vos préférences.

Personnellement, je préfére créer à partir d'un fichier personnel, ce qui permet dans le même code de charger les Data Sources des tableaux en mémoire.



Cas un : Transfert du fichier p-list dans les préférences
tell application "Finder" to duplicate (defaultPrefsFile as alias) to folder userPrefsFolder



Exemple du code complet de transfer d'une plist


property prefsFileName : "algClassic.plist" --  "com.legallou.CDClassic.plist" en final

property resourceFolder : missing value

property userPrefsFolder : missing value

property userPrefsFile : missing value

property defaultPrefsFile : missing value


property firstUse : missing value


------ Check if it is the first time the application is running, if "yes" create the preference p-list --------

------               else    load    All_Author   &    Author    Data Source       --------------

--

if the name of theObject is "Main" then -------------- the Application CDClassic --------------

set resourceFolder to ((POSIX file (resource path of main bundle)) as string) & ":"

set defaultPrefsFile to resourceFolder & prefsFileName -- "iMac:...:Resources:algClassic.plist"

set userPrefsFolder to ((path to preferences folder from user domain) as string)

set userPrefsFile to userPrefsFolder & prefsFileName -- "iMac:Users:alg:Library:Preferences:algClassic.plist"

set defaultPrefsFileAlias to defaultPrefsFile as alias -- "iMac:...:Resources:algClassic.plist" as alias

if fileExists(defaultPrefsFile) then -- default in the bundle - it must exist in the package

-- display dialog ("defaultPrefsFile - " & defaultPrefsFile & " - exists.")

if fileExists(userPrefsFile) then -- not first time (Library:preference exist)

set firstUse to "no"

else -- first time - move plist from the bundle to :Library:preference"

set firstUse to "yes"

tell application "Finder" to duplicate (defaultPrefsFile as alias) to folder userPrefsFolder

log ("Library:preference file doesn't exists.")

end if

else -- Bug the plist init does not exist in the bundle

display dialog (" SYSTEM ERROR : defaultPrefsFile - " & defaultPrefsFile & " - doesn't exists.")

end if

end if

--------------------------------------------------------------------



on fileExists(file_name) --------------------------------------------------------------------

-- Requested for the generation of the bundle alias

tell application "Finder" to return exists file file_name

end fileExists ------------------------------------------------------------------------------





Mais, mais il manque quelque chose ! Comment met-on les fichiers dans le bundle.



Dragger and Dropper vos fichiers sur l'icône du dossier ou dans le dossier "Resources" de xCode. Un Pop-Up menu s'ouvre. Cocher "Copy items into destination group's folder"

Et cliquer sur le bouton ADD.





La suite -

Création d'un tiroir - version Tiger

Création d'un tiroir - version Léopard


Page précédente

Page suivante

Merci de votre visite

UP