# creer lanceur (complexe?) via automator ou autre



## Link1993 (25 Août 2010)

Bonjour, alors voila, Je cherche un moyen via automator, apple script ou xcode (de prefference Xcode x)  ) pour faire un lanceur avec exception. Je m'explique :

Voila, je voudrais que cette application (par exemple itunes) souvre si et seulement s'il n'est pas deja ouver. Sinon, dans ce cas, il doit se fermer.

Tout ceci, je vend ensuite l'associer a une touche de mon disque durs ou du clavier (apres, sur ce point, ca doit pas trop etre compliquer, je me debrouillerai ensuite.)


Merci d'avance


----------



## Anonyme (25 Août 2010)

Bonjour,

C'est très simple à faire en AppleScript :

```
tell application "iTunes"
	if running then
		quit
		my waitUntilQuit()
	end if
	activate
end tell

on waitUntilQuit()
	tell application "System Events" to repeat while exists process "iTunes"
		delay 3
	end repeat
end waitUntilQuit
```



Link1993 a dit:


> xcode (de prefference Xcode x)  ) pour faire un lanceur avec exception


Xcode je connais, mais c'est quoi *Xcode x* ?


----------



## Diablovic (25 Août 2010)

C'est pas juste un smiley le x)  ?


----------



## ceslinstinct (25 Août 2010)

Link1993 a dit:


> Bonjour, alors voila, Je cherche un moyen via automator, apple script ou xcode (de prefference Xcode x)  ) pour faire un lanceur avec exception. Je m'explique :
> 
> Voila, je voudrais que cette application (par exemple itunes) souvre si et seulement s'il n'est pas deja ouver. Sinon, dans ce cas, il doit se fermer.
> 
> ...


Bonjour

Si c'est seulement pour quitter si ouvert où ouvrir si fermé, je verrais bien ce code.


```
tell application "iTunes"
	if running then
		quit
		return
	end if
	activate
end tell
```

@+


----------



## Link1993 (1 Septembre 2010)

bon, reponse rapide pour dire que je n'avais pas recu de message pour les reponses :s dsl du retard, vais lire tout ca de ce pas 


Bon, finalement, tout dabors merci de vos reaction 
Mais... Ca se complique finalement... : je voulais utiliser cela avec Time Machine, et utiliser ce script en tant que raccourci boutton qui est sur mon disque dur. Bon, apres avoir essayer les deux, le premier,  ne le demarre pas, quand au 2°, il ne demarre pas non plus (mais finalement, ca me parait logique, vu qu'il est plutot codé pour fermer, enfin, je dis ca par rapport au peux que j'y connais , donc du coup, il reste en boucle ... :mouais:


Sinon, histoire de donner mon grain de sel, je suis aussi en train de faire un script pour demarrer Itunes au demarage SI mon disque dur est detecter, sinon, il oublie.
Ma tentative aura ete vain, puisqu'il ne detecte rien, et qu'il me mets toujours false ....

Voila mon code tell application "Finder"



> if not (exists folder "iTunes Media" in "/Volumes/Jules GLASOW's External Macintosh HD/Musique") then
> tell application "iTunes" to quit
> else
> tell application "iTunes" to run
> ...



J'ai tenter pas mal de chose, la j'en suis a ma derniere tentative... par exemple j'avais tenter avec IF ............. exists then, mais marchait pas non plus.... et je ne trouvais rien pour remplacer quit (a la place, j'aurai bien aimer trouver un truc du genre "do nothing" ou je ne sais quoi :hein:  )


Voila, bon, c'est mes debut dans le codage, bon, j'avoue que je me debrouille tres bien sur les calculatrice TI 83+  mais, c'est autre chose aussi, le systeme est a peu pres pareil, mais il y a une liste de toute les commandes, comme "if", "then", "stop", "end".... et meme "output" et "input" ainsi que "menu" (histoire de raconter ma vie ;p  ) !!! donc voila, soyez pas mechant s'il vous plait 

Bon, en parlant de TI, juste une question par curiositer, comment on fait pour obtenir un LBL (qui permet d'acceder directement a ce LBL sur ces TI, c'est en quelque sorte, un marque page)
D'ailleur, Ca existe ?


----------



## Anonyme (1 Septembre 2010)

Ton problème est le chemin "/Volumes/Jules GLASOW's External Macintosh HD/Musique", c'est un posix path.

Bonjour,

Le *Finder* accepte les (HFS path, Finder item ou alias path).
Exemple d'un *HFS path* --> folder "Jules GLASOW's External Macintosh HD:Musique:" : au lieu de /
Exemple d'un *Finder item* --> folder "Musique" of disk "Jules GLASOW's External Macintosh HD" 
Exemple d'un *alias path* --> alias "Jules GLASOW's External Macintosh HD:Musique:"

Voici le script, aucun besoin du Finder.

```
try
	(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias
	launch application "iTunes"
on error -- erreur si "/../External Macintosh HD/Musique" n'existe pas
	quit application "iTunes"
end try
```

Pour "*Time Machine*", est-ce que c'est l'application ou la sauvegarde que tu veux lancer ?

Pour l'application, c'est comme ceci.

```
ignoring application responses
	activate application "Time Machine"
end ignoring
```


----------



## Link1993 (1 Septembre 2010)

Pour le chemin, en fait, je ne m'etais pas embeter : copy/paste as alias  c'est tout.
Bon, je vais m'essayer ca de ce pat

---------- Nouveau message ajouté à 17h51 ---------- Le message précédent a été envoyé à 17h10 ----------

les mecs.... Vous etes geniaux 

Bon, pour time machine... ca n'as pas trop l'air de marcher (effectivement, c'est pour y entrer)
Mais, ce que j'ai remarquer avec les scripts, c'est qu'il ne peuvents pas devenur des "executable" (ou alors j'ai pas trouver  ) : Quand j'ai tester le truc pour time machine depuis la fenetre d'edition, tout marche. Des qu'on l'enregistre en application, il reste ouvert, et rien ne se passe, et si on l'enregistre en script, ba, il ouvre la fenetre d'edition sans s'executer... Enfin, si je l'enregistre en executable seulement en tant que script, ba, il me dit, pas modifiable, et c'est tout :mouais:

bon, enfin, passe a l'action pour l'explication des commande :rateau: (ba, meme si ca marche, je veux comprend le pourquoi du comment, vu que je commence  )


```
try
	(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias
	launch application "iTunes"
on error -- erreur si "/../External Macintosh HD/Musique" n'existe pas
	quit application "iTunes"
end try
```

pourquoi try ? je comprend pas a quoi corespond cette comande (pour moi, de traduction, ca veux dire, essai, donc, pourquoi pas remplacer par run par exemple ?  )

enfin, Posix ? qu'est ce que c'est ?? en plus, dans ton exemple, tu utilise alias avec : et non / comme dans la commande :s... une erreur ? 

Enfin, je n'ai rien du tout compris le finder items, comment il fonctionne dès qu'il y a des sous dossier ...
Mais, la fonction qui me parrait le plus clair, est le HFS path. Histoire de bien faire ch--- mon ptit' monde, pourrai tu faire un ptit exemple avec son fonctionnement s'il te plait ? 

Enfin, pour time machine : 


```
ignoring application responses
	activate application "Time Machine"
end ignoring
```
Je ne vois pas a quoi pourrai encors une fois representer ignoring application respons :s et la dedans, je ne vois pas la commande pour fermer time machine une fois ouvert ....

Bon, dans tout les cas, merci pour tout, mais, tres franchement, merci pour le temps quevous passer pour moi  , nempeche, tout ceci me donne bien envie de faire du code applescript, mais, j'avais beau chercher, j'ai pas trouver de tutot simple, et correcte sans tomber dans un truc du genre, modifier le format image grace a une action de dossier (que je m'en fou, ca me sert a rien pour le moment en tout cas   ), donc si vous conaiser quelque site ou autre, je suis partant 


ps : J'avoue que pour commencer, je me suis aider du menu aide de applescript, il y avait toute les commandes et infos, mais je n'en connais pas asser pour les utiliser ^^ et j'ai pas trouver tout ce qui etait commande telle que IF, THEN, ou autre :mouais:


----------



## ceslinstinct (1 Septembre 2010)

Link1993 a dit:


> Quand j'ai tester le truc pour time machine depuis la fenetre d'edition, tout marche. Des qu'on l'enregistre en application, il reste ouvert, et rien ne se passe, et si on l'enregistre en script, ba, il ouvre la fenetre d'edition sans s'executer... Enfin, si je l'enregistre en executable seulement en tant que script, ba, il me dit, pas modifiable, et c'est tout :mouais:


Bonjour 

Si ton code compilé en application ne marche pas, teste de le lancer depuis le Dock, comme ça à l'ouverture il ne se prend pas en compte.

Si ça marche, il suffit d'ajouter une commande à l'ouverture de l'application pour qu'elle ne soit pas prise en compte.

@+


----------



## Anonyme (1 Septembre 2010)

try : c'est pour qu'il ignore les erreurs
on peut gérer les erreurs en mettant*"on error" dans le bloc try

*(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias*

"POSIX file" convertit le  chemin Unix au format  file HFS path , as alias convertit   file HFS path en alias

*Le finder item avec des sous dossier* : ça donne un long chemin inversé
Ex:  application file "rawdataTest1.app" of folder "Release" of folder "build" of folder "rawdataTest1 - copie" of folder "Documents" of folder "jack" of folder "Users" of startup disk 

Le HFS path est un texte dont les noms de dossier sont séparées par un *:* 
Si on l'utilise dans le Finder il faut spécifier le type ( disk, folder, file, document file, alias file, application file ou item (item fonctionne sur tous les types) )

l'alias est le plus pratique (aucun besoin du Finder et fonctionne dans toutes les applications).

ignoring application responses : c'est pour éviter l'erreur, un try aurait fait l'affaire aussi.

Pour ouvrir Time Machine sans erreur

```
do shell script "'/Applications/Time Machine.app/Contents/MacOS/Time Machine'"
```

Essayer de fermer Time Machine une fois ouvert avec une commande AppleScript est impossible, car il ne répond pas au commande.
On peut le faire dans un do shell script avec un mot de passe administrateur, car c'est un processus système, mais c'est très dangereux de le quitter, sil restaure des éléments.


----------



## Link1993 (3 Septembre 2010)

Merci pour tout 
Bon, dommage pour time machin, mais c'est pas grave de toute facon, je m'arrenge 

Mais, sinon, si jamais je voulais le faire pour une autre application (itunes par exemple  ) , Je mettrait un truc du genre : 


```
try
run "iTunes"
if running quit "itunes"
end try
```

j'ai bien piger ?? 

Par contre, pour transformer un script en executable, c'est quoi la technique precise ? 


Bon, par contre, le system de notification sur mac gé est vraiment nullissime (ou alors, j'ai toujours pas compris comment ca marche :mouais:  ) Pourtant, le systeme du forum est comme sur xda dev, et la, pour moi ca marche .... bon, je vais voir ca.


----------



## Anonyme (4 Septembre 2010)

Link1993 a dit:


> Merci pour tout
> Mais, sinon, si jamais je voulais le faire pour une autre application (itunes par exemple  ) , Je mettrait un truc du genre :
> 
> 
> ...


Les applications standard ne donnent pas d'erreur.
Pour quitter si iTunes est lancé, c'est comme ceci

```
tell application "iTunes" to if running then quit
```
*Important :* running est une propriété qui fonctionne à partir de *Mac OS X 10.5*
Si tu as *Mac OS X 10.4* c'est une autre commande




Link1993 a dit:


> Par contre, pour transformer un script en executable, c'est quoi la technique precise ?.


Dans la zone de dialogue "*Enregistrer*" :
Choisissez "*Application*" si vous êtes sur Snow Leopard, "*Progiciel*" sur Leopard ou moins,  dans le menu local Format de fichier.

Les options :

Décoches cette case 
"*Exécutable uniquement*" : enregistre l'application sous un format non modifiable.

Décoches cette case 
"*Écran de démarrage*" : affiche, à l'exécution du script, une zone de dialogue contenant le texte du champ Description du script. La zone de dialogue contient aussi des boutons Exécuter et Quitter pour permettre à l'utilisateur d'arrêter ou de continuer l'exécution du script.

Décoches cette case 
"*Rester en arrière-plan*" : laisse l'application active jusqu'à ce que vous la quittiez.

Un double clic sur l'application exécutera le script.



Pour exécuter un script au format Script (*.scpt*):
Enregistre-le dans le dossier */Maison/Bibliothèque/Scripts/*
Sélectionne ton script  à partir du menu *Scripts* de la barre de menu, et le script s'exécutera.

Voir l'aide Mac --> AppleScript : pour activer ce menu


----------



## Link1993 (4 Septembre 2010)

Mac_Jac a dit:


> Les applications standard ne donnent pas d'erreur.
> Pour quitter si iTunes est lancé, c'est comme ceci
> 
> ```
> ...



heu... Ca serai pas plutot

```
tell application "iTunes" to run
if running then quit
```

??? parce que a part si tout a coup on perd la logique de l'anglais, "to if".... non ?

Et si je demander de faire demarrer iTunes en masquer on fait comment du coup ? en cherchant, je trouve que pour masquer toute les fenetre, sauf programme en court 

d'ailleur, je comprend pas a quoi reprensente appl et pourquoi il demande de rendre les fichier visible ...


```
set the visible of every application process whose ¬
			(file type is "APPL" and visible is not false) to false
```

En fait, j'ai ptet comprispourquoi il cherche a les rendre visible  mais comprend toujours pas le APPL



Enfin, pour le truc pour le transformer en executable, ça march !  j'étais tout le temps en train de faire seulement executable, et demarrer en arriere plan ...  :hein:


----------



## Anonyme (5 Septembre 2010)

Link1993 a dit:


> heu... Ca serai pas plutot
> 
> ```
> tell application "iTunes" to run
> ...


Non, *tell application "iTunes" to run* -- lance l'appli
*if running then quit* -- cette ligne ne fera rien

il faut spécifier une application avec running
EX:
	
	



```
if running of application "iTunes" then
	quit application "iTunes"
end if
```


```
if application "iTunes" is running then
	tell application "iTunes" to quit
end if
```


```
tell application "iTunes"
	if running then -- running est dans le bloc --> tell application "iTunes"
		quit
	end if
end tell
```
Pour lancer iTunes  masqué

```
launch application "iTunes"
```

Pour masqué iTunes s'il est  visible
	
	



```
tell application "System Events" to set the visible of process "iTunes" to false
```

*file type* : c'est pour ceux qui sont sur Mac OS X 10.5 ou moins, c'est un code de 4 caractères que contenaient les fichiers, ils étaient différents selon leurs extensions et selon l'application qui créa le fichier, le file type des  applications était *APPL*
Cela n'existe plus sur *Snow Leopard* .


----------



## Link1993 (5 Septembre 2010)

oki doc'

Ba, merci pour tout, j'ai pu de question maintenant 

nempeche, dire que finalement c'est tout stupide le systeme de fonctionnement ^^' (quand on voit ca evidement)


----------

