1 votes

Comment faire en sorte qu'un script d'Apple utilise son répertoire local ?

J'essaie de regrouper un exécutable .jar dans une application en utilisant la solution fournie ici : Comment créer un dossier .app à partir d'un exécutable .jar ? . J'ai déduit que main.script à l'intérieur de Contents -> Resources -> script utilise les répertoires globaux de l'ordinateur, et non le répertoire local de l'application. Ainsi, il échoue. J'ai trouvé une proposition de solution sur cette page : Mauvais répertoire de travail, si bash script est ouvert par double-clic . Malheureusement, même ce code ne semble pas fonctionner comme prévu. Pour la démonstration, j'ai placé le .jar dans le même dossier que le script. Voici le code AppleScript que j'essaie d'utiliser :

do shell script "DIR=$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )
cd \"${DIR}\"

java -jar execute.jar"

Notez que les guillemets Bash sont échappés ; voici le code brut :

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
cd "${DIR}"

java -jar execute.jar

La première ligne devrait trouver le répertoire du script, la deuxième devrait naviguer vers ce répertoire, et la troisième devrait trouver et exécuter "execute.jar". Comme je l'ai dit, ce n'est pas le cas. Je dépannerais davantage si je connaissais suffisamment Bash - c'est le plus approfondi que j'aie jamais fait. J'ai vérifié les trois lignes de manière indépendante, ce qui signifie que le fichier DIR prend son répertoire dans un Bash/Terminal fraîchement ouvert, indépendamment du script.

N'est-ce pas un peu comme "la poule ou l'oeuf" ? Le site DIR donne le répertoire courant, qui est ensuite utilisé pour définir le répertoire courant avec la fonction cd ?

2voto

user3439894 Points 52496

Voici comment je traiterais un scénario tel que celui que vous avez décrit.

Je placerais le execute.jar archivo dans le Ressources dossier au sein de la paquet d'applications par exemple :

../Untitled.app/Contents/Resources/

Utilisez ensuite les éléments suivants exemple AppleScript code au sein de la AppleScript script qui fait partie de la AppleScript paquet d'applications :

set pathToJAR to ¬
    quoted form of ¬
    POSIX path of ¬
    (path to resource "execute.jar")

set shellCMD to ¬
    {"/usr/bin/java -jar ", pathToJAR} ¬
        as string

do shell script shellCMD

Maintenant, peu importe où le paquet d'applications est sauvegardé ou copié/déplacé, comme codé, il déterminera son emplacement dans l'arborescence de l'ordinateur. ressource le execute.jar archivo et être capable de gérer un do shell script commande qui exécutera le commande shell en conséquence.


Pour répondre à votre commentaire :

J'ai une image qui reste à côté du fichier .jar et qui est censée s'ouvrir avec lui. Si j'ouvre manuellement le contenu du fichier paquet d'applications et exécuter le .jar, l'image est chargée ; si le code AppleScript est exécuté, l'image n'est pas trouvée. Avez-vous une idée ?

Essayez ce qui suit exemple AppleScript code à la place :

set pathToMe to ¬
    quoted form of ¬
    POSIX path of ¬
    (path to me)

set shellCMD to ¬
    {"cd ", pathToMe, ¬
        "Contents/Resources/; ", ¬
        "/usr/bin/java -jar execute.jar"} ¬
        as string

do shell script shellCMD

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X