Comment lancer une application?

Bonjour,
Impossible de lancer une app présente dans Applications/Utilitaires ! J’ai “not found” à chaque fois et je ne vois pas ou ca pêche et ca m’énerve !

Var TermApp As FolderItem = SpecialFolder.Applications.child("Utilitaires").child("Terminal.app")
If TermApp <>  Nil Then
  if TermApp.Exists then
    Shell1.Execute("open -e " + TermApp.NativePath) //ou avec .ShellPath
  else 
    msgbox("Not found !")
  end
end

//open - a
//open -e 
//open -n

Merci.

Essayez avec ShellPath au lieu de NativePath.

Egalement, êtes vous sûr de “Utilitaires” ? Sur mon système US, c’est “Utilities”. Faites Command-i sur Terminal pour vérifier le chemin exact.

Merci @Michel_Bujardet , mais je ne comprends pas trop ta réponse. C’est quoi ce “s” ?
Sur mon système francais c’est bien dans le dossier “Utilitaires” (confirmé par Cmd+i)
et ShellPath (la Doc recommande plutôt NativePath pour macOS, si je comprend bien) ne change rien.
Tu peux vérifier l’exécution du code chez toi ?
Merci.

Parfois les noms des dossiers et ceux des applications sont localisés, ils s’affichent avec un nom Français (pour nous autres) alors que leur nom vu par le système est en Anglais. Je réponds depuis un PC-Windows et ne peux vérifier, mais si tu lis les infos du dossier Utilitaires tu verras que son nom est “Utility” (ou “Utilities” ?) et que c’est de cette manière que tu dois l’écrire : .Child(“Utility”).

Sinon je pense que le “s” a été copié depuis ta ligne :
SpecialFolder.Applications.child("Utilitaires").child(“Terminal.app”)

Pour je ne sais quelle raison, TermApp.exists est faux, malgré que le chemin soit correct:
/Applications/Utilities/Terminal.app

Cependant, j’ai fait un test avec un simple fichier que j’ai mis dans Utilities, et il existe.

J’ai fait autre chose: vérifier avec le terminal le contenu du dossier Utilities:

michelbujardet@Michels-Mac-mini ~ % cd /Applications
michelbujardet@Michels-Mac-mini /Applications % cd Utilities
michelbujardet@Michels-Mac-mini Utilities % ls
michelbujardet@Michels-Mac-mini Utilities % 

De fait, Unix ne montre rien dans le dossier. Comme le shell s’exécute au niveau Unix, pas étonnant qu’il ne trouve pas Terminal.

Il semble que le Finder montre des applications qui sont ailleurs. Apple est assez familier de ce genre de prestidigitation…

Effectivement je le constate. Alors, quelle est la solution ? Peut-on lancer le Terminal quelque soit sa localisation avec une commande comme “open - e” par exemple ?

On doit pouvoir lancer Terminal avec son UITypeIdentifier:
com.apple.terminal.session

Cela n’est pas possible avec le shell.

Toutefois, on peut lancer une application à partir de son identifiant avec les plugins MBS, ou avec macOS Lib.

que se passe-t-il lorsque tu dépose l’icône de ton application dans la fenêtre du Terminal ?

ça aide à comprendre ?

Non. Cela donne le même faux chemin /Applications/Utilities/Terminal.app qui pointe sur un endroit vide.

Incroyable (mais je te crois)…

ls -l /Applications/Utilities

retourne… ODBC Manager (au lieu des 17 éléments qui s’y trouvent)…

Il y a quelque chose de pouri au royaume du Dannemark…

On dirais que j’ai levé un lièvre…
Je vais voir du côté de MBS…

Même l’AppleScript ne fonctionne pas !

Shell1.Execute "osascript -e 'tell application ""Terminal""'"

Ca marche enfin ! (avec MBS)
Ma (petite) contribution pour la communauté :

if not NSWorkspaceMBS.launchApplication("terminal") then
  MsgBox "Application Terminal.app non trouvée !"
end if

Enfin, pour déterminer le chemin exact :

MsgBox NSWorkspaceMBS.fullPathForApplication("terminal").ShellPath

Dans le Terminal, la commande ls -l /Applications/Utilities fonctionne tout à fait correctement chez moi ( MacOS 10.14.6 Français.)

  1. L’argument -e de la commande open veut dire "ouvre le fichier avec TextEdit. Or textEdit ne sait certainement pas lire un fichier de type application (Terminal.app).
    Fait un man open dans le terminal pour voir les options

  2. Il est bien possible que la commande lancée à partir de Xojo ne trouve pas le fichier dans Utilitaires si Xojo n’a pas la permission d’aller voir dans tous les fichiers du disque.
    Dans Préférences système : Sécurité et confidentialité, Xojo y est-il autorisé ?

Oui, certainement la meilleure façon de trouver l’application. Je suppose que c’est son UITypeIdentifier, comme préconisé par Michel Bujardet ?

1 Like

C’est cela.

Pas avec 12.4 (Monterey) / M1 MacBook Pro.

Il est bien possible que la commande lancée à partir de Xojo ne trouve pas le fichier
Sous macOS 11 et 12, il est demandé à l’utilisateur la permission. S’il ne la donne pas… mais là n’est pas le problème.

Denis:
Attentiojn à la casse des noms de fichiers (paths): macOS peut y être sensible (l’utilisateur peut avoir un macOS sensible à la casse).

Curieux car chez moi la commande :

ls -l /Applications/Utilities

renvoie 2 entrée sur Logitech qui n’ont rien a voir avec les utilitaires Apple :
drwxr-xr-x 3 root wheel 96 1 nov 2021 Logi Bolt Uninstaller.app
drwxrwxr-x 3 root wheel 96 1 nov 2021 LogiMgr Uninstaller.app

De toutes manières, au moins sous Monterey, les applications que l’on voit dans le finder ne sont pas vue par Unix (Terminal et shell).

Je viens de découvrir qu’on ne peut faire un ls sur le bureau.

Décidément, Monterey est plein de surprises !