# lancer un script au demarrage d'une application  en applescript ?



## lepetitpiero (8 Décembre 2016)

Bonjour,

Je souhaiterais au lancement d'une application qu'un disque en réseau monte sur le bureau et qu'une image disque située sur le disque réseau s'ouvre et monte sur le bureau et ensuite que l'appli démarre. 

J'avoue ne rien y connaitre en applescript en cherchant j'ai compris comment faire monter le volume sur le bureau ouvrir l'image disque lancer l'application

le code que j'ai ( en fonction de mon réseau)


```
tell application "Finder"
    open location "afp://admin:aime1934@NASTS563(AFP)._afpovertcp._tcp.local/Photos"
end tell
delay 5
tell application "Finder"
    do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
end tell
delay 5
tell application "Finder"
    activate application "Adobe Lightroom"
end tell
```

Ce qui me manque:  faire que la fenetre du finder ne s'affiche pas, le code
	
	



```
close every window
```
 ne marche pas  
comment faire pour que quand je lance lightroom ca lance le script avant que l'appli demarre reelement ?

Pierre


----------



## lepetitpiero (8 Décembre 2016)

bon je me repond pour que la fenetre ne s'ouvre pas il faut utiliser la commande mount volume   pour le reste je cherche


----------



## macomaniac (9 Décembre 2016)

Salut *Pierrot
*
Personnellement, je ne suis pas du tout un « maître du script » - seulement un "expert" en « ligne de commande » dans le «Terminal». Ce qui n'est pas tout à fait pareil : car une commande est un « single shot », alors qu'un script est une « programmation ».

À première vue (d'un point de vue : habitué du «Terminal») tu n'es pas obligé d'écrire en 2è commande :

```
tell application "Finder"
    do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
end tell
```
 car je pense qu'un :

```
do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
```
 suffit intrinsèquement.

À seconde vue (toujours du point de vue : habitué du «Terminal»), tu n'es pas obligé d'écrire en 3è commande :

```
tell application "Finder"
    activate application "Adobe Lightroom"
end tell
```
 il doit te suffire d'écrire :

```
open /Volumes/[nom_du_volume_monté_du_dmg_catalogue_Lightroom]/"Adobe Lightroom.app"/Contents/macOS/[le_nom_de_l'exécutable_dans_le_sous_dossier_macOS]
```

(pour connaître la bonne adresse, tu ouvres une fenêtre du «Terminal» > tu fais un glisser-déposer dedans de l'exécutable contenu dans le sous-dossier *macOS* de l'application *Adobe Lightroom* du volume monté de l'image-disque *Catalogues_Lightroom.dmg* > et tu copies l'adresse automatiquement affichée dans la commande du script à la suite de *open* + espace.

Donc tester un :

```
tell application "Finder"
    open location "afp://admin:aime1934@NASTS563(AFP)._afpovertcp._tcp.local/Photos"
end tell
delay 5
do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
delay 5
open /Volumes/[nom_du_volume_monté_du_dmg_catalogue_Lightroom]/"Adobe Lightroom.app"/Contents/macOS/[le_nom_de_l'exécutable_dans_le_sous_dossier_macOS]
```

Mais un maître du script par contre c'est ☞*zeltron54*☜ --> contacte-le par MP (s'il ne s'immisce pas spontanément dans ce fil) afin qu'il t'aide.


----------



## lepetitpiero (9 Décembre 2016)

Merci
j'analyse tout cela ce soir à la maison. 

Entre temps j'ai réfléchis aussi il faut que je crée une boucle avant qui va analyser le contexte si adolbe lighroom non actif rien ne se passe si adoble lightroom en train de demarrer monter le volume reseau, ouvrir l'image et hop !  

en faire un script que je mets dans l'ouverture de ma session.

il me faudra faire ensuite la requête inverse pour qu'à la fermeture de LR l'image soit ejecter et le disque aussi

Certains me diront que je me complique la vie... ils n'ont pas tord car en effet je pourrais faire que le volume et l'image s'ouvre a l'ouverture de session mais comme je ne veux pas que ça soit toujours ouvert à tous les vents...  

Encore merci de l'aide apportée


----------



## lepetitpiero (10 Décembre 2016)

Bon alors j'ai simplifié le processus. J'ai créer deux applescript transformé en service et ces services je leur aient attribué un raccourci clavier. voici mes deux lignes de codes 
Monter volume réseau et ouvrir image disque puis lancer l'application

```
mount volume "afp://admin:aime1934@NASTS563(AFP)._afpovertcp._tcp.local/Photos"
delay 3
do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
delay 5
activate application "Adobe Lightroom"
```
Ejecter image disque puis le volume

```
do shell script "diskutil eject /Volumes/Catalogues_Lightroom"
delay 3
do shell script "diskutil unmountDisk /Volumes/Photos"
```

Il y a un truc que j'aurais aimer faire mais là aucune idée ... 
Il faut savoir que lightroom quand il démarre ouvre le dernier catalogue fermé. Et je ne sais pas comment en applescrip ou depuis le terminal faire ouvrir tel ou tel fichier par une appli donnée. j'ai testé la commande open file mais le fichier veu s'ouvrir avec textedit...  y a t'il un moyen de définir quel appli doit ouvri un fichier en ligne de commande ou dans un script ???


----------



## macomaniac (10 Décembre 2016)

*Pierrot*

Prenons l'exemple du fichier de préférences localisé at: /Library/Preferences/SystemConfiguration/*com.apple. Boot.plist* -->

- pour l'ouvrir avec «TextEdit» :

```
open -a TextEdit /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
```

- pour l'ouvrir avec «TextWrangler» :

```
open -a TextWrangler /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
```

l'option *-a* (*a*pplication) introduisant le nom de l'application utilisable comme outil d'ouverture suivi du chemin au fichier faisant l'objet de l'ouverture.

=> je vois que tu as compris


----------



## lepetitpiero (10 Décembre 2016)

Oui j'ai pigé merci je vais tester ça


----------



## lepetitpiero (10 Décembre 2016)

Bon super... encore grand merci...  avec le terminal c'est bien plu simple a pigé que les scripts...  là j'ai du aller chercher le chemin vers l'exécutable de Lightroom car il ne connaissait pas mon appli du coup ma commande pour lancer LR est devenue


```
open -a /Applications/Adobe\ Lightroom/Adobe\ Lightroom.app/Contents/MacOS/Adobe\ Lightroom /Volumes/Catalogues_Lightroom/Professionnel/Professionnel.lrcat
```
  et ensuite j'i ai mis le chemin vers le fichier à ouvrir

intégré à mon service et a mes raccourcis je peux selon le raccourci ouvrir tel ou tel catalogue après montage du volume et ouverture de l'image disque qui elle permet de d'héberger un catalogue LR sur un disque réseau...  La seule contrainte a ce système c'est qu'il faut veiller a ce que l'image disque soit suffissament grande pour enregistrer l'évolution du catalogue. ( j'ai mis 100Go le double de la taille de mes catalogues actuels ça me laisse de la marge.

Ah oui ce NAS ne me sert que de stockage j'en ai un autre pour la sauvegarde 

Bizarre mon code est troqué impossible d'avoir l'ascenseur ???


----------



## macomaniac (10 Décembre 2016)

lepetitpiero a dit:


> La seule contrainte a ce système c'est qu'il faut veiller a ce que l'image disque soit suffissament grande pour enregistrer l'évolution du catalogue. ( j'ai mis 100Go le double de la taille de mes catalogues actuels ça me laisse de la marge.



Si au lieu de créer une image-disque à taille fixe (type *DMG*) > tu créais une image-disque à taille élastique (type *SPARSE* : *SPARSEIMAGE* ou *SPARSEBUNDLE*) > tu aurais une image-disque caractérisée par un différentiel entre taille potentielle (ou limite) et taille actuelle (ou poids des données).

Exemple : une image-disque *SPARSEBUNDLE* créée avec une taille limite (potentielle) de *800 Go* > ne pèse qu'environ *300 Mo* (tare logique du container) à vide : elle n'occupe donc que *300 Mo* d'espace-disque > si tu lui ajoutes *2 Go* de données --> *2,3 Go*  de poids actuel et etc. jusqu'à l'atteinte (improbable) des *800 Go* de données contenues au-delà desquels elle n'est plus extensible.

=> l'image-disque de type *SPARSE* ne pèse donc que son lest actuel de fichiers (+ la tare) > tout en ayant un potentiel extensible librement fixé qui ne pèse rien intrinsèquement.


----------



## lepetitpiero (10 Décembre 2016)

Cette image serait-elle aussi stable et fiable qu'une image classique. En lecture écriture est-ce identique ?  Je vais tester...


----------



## lepetitpiero (11 Décembre 2016)

Bonsoir,

Bon j'ai tout retranscrit en commande terminal et ça fonctionne.  

En vouant aller plus loin j'ai créer un commande pour ejecter mon image et le volume réseau  là tout va bien

Du coup je me suis dis pourquoi ne pas ajouer à ma commande le fait de quitter Lightroom avant... et bien là ça ne marche pas... j'ai une erreur

pour lancer R et ouvrir le catalogue j'ai ça

```
open -a /Applications/Adobe\ Lightroom/Adobe\ Lightroom.app/Contents/MacOS/Adobe\ Lightroom /Volumes/Catalogues_Lightroom/Professionnel/Professionnel.lrcat
```
  Donc pour quitter LR je me suis dis

```
Killall Lightroom.app
```
 mais j'ai ça en retour
*No matching processes belonging to you were found  *
Certes on peut quitter l'appli via le PID mais vu que celui-ci change comment automatiser cela ?  Ou alors comment faire ?


----------



## lepetitpiero (11 Décembre 2016)

Je me repond tout seul en fait il faut prendre la partie de suite après MacOS  pour la commande


----------



## macomaniac (13 Décembre 2016)

lepetitpiero a dit:


> Je me repond tout seul en fait



 Dans ce fil > on assiste à un « passage » : d'une « distance » à une « connivence » avec le «Terminal».

C'est comme de faire du vélo ou de nager : un seul déclic fait garder l'équilibre ou la flottaison. Ce n'est pas parce qu'on fait du vélo ou qu'on nage qu'on a à faire des triathlons (on s'en fiche). Mais cela suffit pour appréhender l'« essence » de l'activité. Comprendre une seule commande > c'est comprendre le sens commun des commandes  > sans se sentir tenu de connaître le mode d'emploi de toutes les commandes. L'universel est dans le détail > il n'est pas dans la multiplication des détails.​


----------



## lepetitpiero (13 Décembre 2016)

C'est vrai que le terminal même si ça parait abstrait de prime abord, l'applescript au final est moins logique à comprendre... même s'il doit y avoir là aussi une logique. 

Bref j'ai passé moins de temps à tout refaire en ligne de commande que de créer un script.


----------

