Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[AppleScript] Lancer un script contenu dans un bundle

6 réponses
Avatar
laurent.pertois
Bonjour,


J'ai encore une question sur AppleScript.

Je suis en train de préparer un petit truc qui doit lancer un script
shell qui serait inclus dans le bundle. Y a-t-il un moyen de lui dire où
il est rangé, à priori il sera dans Contents/Resources, ce qui me semble
le plus logique.

En cherchant on voit des bidouilles à grand coup de recherche du chemin
actuel mais j'aurais pensé qu'on pouvait lui donner un chemin relatif
par rapport au script lui-même dans le bundle.

Mais il semble que ça ne fonctionne pas :(

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

6 réponses

Avatar
Patrick Stadelmann
In article <1hednlw.khv3t510f3uunN%,
(Laurent Pertois) wrote:

En cherchant on voit des bidouilles à grand coup de recherche du chemin
actuel mais j'aurais pensé qu'on pouvait lui donner un chemin relatif
par rapport au script lui-même dans le bundle.


En général on utilise un chemin relatif depuis le bundle, qui lui est
localisé avec "path to me".

Patrick
--
Patrick Stadelmann

Avatar
laurent.pertois
Patrick Stadelmann wrote:

In article <1hednlw.khv3t510f3uunN%,
(Laurent Pertois) wrote:

En cherchant on voit des bidouilles à grand coup de recherche du chemin
actuel mais j'aurais pensé qu'on pouvait lui donner un chemin relatif
par rapport au script lui-même dans le bundle.


En général on utilise un chemin relatif depuis le bundle, qui lui est
localisé avec "path to me".


Ok, rien n'existe donc, on doit construire le chemin quoi.

Merci encore une fois :-)

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.


Avatar
danrob
Laurent Pertois wrote:

Je suis en train de préparer un petit truc qui doit lancer un script
shell qui serait inclus dans le bundle. Y a-t-il un moyen de lui dire où
il est rangé, à priori il sera dans Contents/Resources, ce qui me semble
le plus logique.


Voila comment j'ai résolu ce problème :
Pour moi il s'agit d'obtenir le chemin d'un fichier "SetFile" dans le
dossier resources.
La séquence dans le if est nécessaire si on lance le script dans
l'éditeur car dans ce cas "path to me" donne le chemin de l'éditeur.
De plus, script editor donne le chemin du document ouvert en POSX, d'où
la bidouille peu glorieuse.
Si tu as mieux je prends.

set PathToCommon to path to me as string

if (PathToCommon) contains "Script Editor" then
set PathToCommon to (path of front document as string)
set AppleScript's text item delimiters to "/"
set PathToCommon to text items of PathToCommon
set AppleScript's text item delimiters to ":"
set PathToCommon to text 2 thru -1 of PathToCommon as string
set AppleScript's text item delimiters to ""
set PathToCommon to (path to startup disk as string) & PathToCommon &
":"
end if

set SetFile to quoted form of POSIX path of (PathToCommon &
"Contents:Resources:SetFile")

Avatar
laurent.pertois
Daniel Robillard wrote:

Si tu as mieux je prends.


Je ne sais pas si c'est mieux ou moins bien, voici ce que j'ai fait et
ça semble fonctionner mais c'est vrai que derrière je fais un do shell
script donc ça m'aide.

set myPath to path to me as string
do shell script ". " & quoted form of POSIX path of myPath &
"Contents/Resources/" & "test.sh"

(la deuxième ligne est coupée par MacSOUP mais après le & on continue
sur la même ligne)


--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
Patrick Stadelmann
In article <1hefed0.1vbbf42pcpym8N%,
(Daniel Robillard) wrote:

De plus, script editor donne le chemin du document ouvert en POSX, d'où
la bidouille peu glorieuse.


Bidouille qui ne fonctionne pas s'il y a un / dans le nom d'un des
dossiers... Il vaut mieux utiliser les fonctions de conversion :

set p to POSIX file (path of front document)

Patrick
--
Patrick Stadelmann

Avatar
danrob
Patrick Stadelmann wrote:

Bidouille qui ne fonctionne pas s'il y a un / dans le nom d'un des
dossiers... Il vaut mieux utiliser les fonctions de conversion :


Merci Patrick.

C'est vraiment mieux comme ça :
set PathToCommon to path to me as string
if PathToCommon contains "Script Editor" then ¬
set PathToCommon to POSIX file (path of front document) & ":" as string

Si j'avais mieux lu le dico des Standard Additions ;-)

//
POSIX file n : A file object specified with a POSIX (slash)-style
pathname.
properties
POSIX path (Unicode text, r/o) : the POSIX (slash)-style path of a file
or alias object
//

Clair, non ?