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

lepetitpiero

Membre expert
Club iGen
20 Août 2005
9 622
680
52
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)

Bloc de code:
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
Bloc de 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
 
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 :
Bloc de code:
tell application "Finder"
    do shell script "hdiutil attach /Volumes/Photos/Catalogues_Lightroom.dmg"
end tell
car je pense qu'un :
Bloc de code:
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 :
Bloc de code:
tell application "Finder"
    activate application "Adobe Lightroom"
end tell
il doit te suffire d'écrire :
Bloc de code:
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 :
Bloc de code:
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.
 
Dernière édition par un modérateur:
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
 
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
Bloc de code:
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
Bloc de code:
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 ???
 
:coucou: Pierrot

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

- pour l'ouvrir avec «TextEdit» :
Bloc de code:
open -a TextEdit /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

- pour l'ouvrir avec «TextWrangler» :
Bloc de code:
open -a TextWrangler /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

l'option -a (application) 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
361608_original.png
 
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

Bloc de code:
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 ???
 
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.
 
Dernière édition par un modérateur:
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
Bloc de code:
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
Bloc de code:
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 ?
 
Je me repond tout seul en fait

:up: 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.
 
:) 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.