1 votos

¿Cómo hacer que un Apple script utilice su directorio local?

Estoy tratando de empaquetar un ejecutable .jar en una aplicación utilizando la solución proporcionada aquí: ¿Cómo crear una carpeta .app a partir de un ejecutable .jar? . Deduje que main.script dentro de Contents -> Resources -> está usando los directorios globales del ordenador, no el directorio local de la aplicación. Por lo tanto, falla. Encontré una propuesta de solución en esta página: Directorio de trabajo incorrecto, si se abre bash script mediante doble clic . Por desgracia, incluso este código no parece funcionar como se pretende. Para la demostración, he colocado el .jar en la misma carpeta que el script. Aquí está el código AppleScript que estoy tratando de usar:

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

java -jar execute.jar"

Tenga en cuenta que las comillas de Bash están escapadas; aquí está el código en bruto:

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

java -jar execute.jar

La primera línea debería encontrar el directorio del script, la segunda debería navegar a ese directorio, y la tercera debería encontrar y ejecutar "execute.jar". Como he dicho, no lo hace. Si supiera lo suficiente de Bash, solucionaría más problemas; esto es lo más profundo que he hecho. He verificado las tres líneas de forma independiente, lo que significa que el DIR está recogiendo su directorio de un Bash/Terminal recién abierto, independientemente del script.

¿No es esto algo así como "el huevo o la gallina"? El DIR da el directorio actual, que luego se utiliza para establecer el directorio actual con cd ?

2voto

user3439894 Puntos 5883

Así es como yo manejaría un escenario como el que has descrito.

Colocaría el ejecutar.jar archivo en el Recursos carpeta dentro del paquete de aplicaciones Por ejemplo:

../Untitled.app/Contents/Resources/

A continuación, utilice lo siguiente ejemplo AppleScript código dentro del AppleScript script que forma parte del AppleScript paquete de aplicaciones :

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

Ahora no importa dónde esté el paquete de aplicaciones se guarda o se copia/se mueve a, como se codifica, determinará su ubicación a la recurso El ejecutar.jar archivo y ser capaz de dirigir un do shell script comando que ejecutará el comando de shell en consecuencia.


Para responder a su comentario:

Tengo una imagen que se queda junto al .jar y se supone que se abre con él. Si abro manualmente el contenido del paquete de aplicaciones y ejecutar el .jar, la imagen se carga; si se ejecuta el código AppleScript, la imagen no se encuentra. ¿Alguna idea?

Pruebe lo siguiente ejemplo AppleScript código en su lugar:

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X