5 votos

AppleScript para mostrar el contenido del paquete de la original oculta del alias

Estoy intentando construir un flujo de trabajo de Automator (que se guardará como un Servicio, para poder acceder a él desde menús contextuales e invocarlo con un atajo de teclado), que funcionará de manera similar al comando integrado "Mostrar contenido del paquete" del Finder, pero que además aceptará un alias de un paquete como entrada. El servicio cumplirá con lo siguiente:

Solo estará disponible cuando la selección del Finder consista en un paquete o un alias de un paquete.

En lugar de mostrar el contenido del directorio del paquete como lo hace el comando integrado, el Servicio mostrará el contenido del directorio "Contents" (si existe), ubicado inmediatamente dentro del directorio del paquete.

Si la selección del Finder es un paquete o un alias en el escritorio, el directorio Contents se abrirá en una nueva ventana del Finder. De lo contrario, el directorio Contents se abrirá en la ventana del Finder que contiene la selección.

Mi enfoque ha sido hacer que el script primero determine si el archivo es un Alias, y si lo es, indicar al script que muestre el contenido del original. Si el archivo no es un alias, me gustaría indicar al script que simplemente muestre el contenido de la entrada.

Excluyendo la posibilidad de un alias como entrada y asumiendo que el paquete de entrada está seleccionado en una ventana del Finder, puedo escribir con éxito un script que muestra el contenido de la carpeta de contenido del paquete en la misma ventana:

al correr {entrada, parámetros}
    definir mi_salida como {}
    repetir con unElemento en entrada
        decir a la aplicación "Finder" que establezca el objetivo de la ventana 1 a ((unElemento como texto) & "Contents")
end repeat
devolver entrada
end correr

Cuando intento configurar un esquema "si...entonces...sino", falla.

Estoy utilizando las últimas versiones de todo el software relevante.

0 votos

Bienvenido, no te estamos ignorando, solo estamos esperando a alguien que pueda responder tu pregunta.

0 votos

Por favor, ¿puedes agregar un intento fallido de un if/then/else? Depurar por qué está fallando probablemente te llevará a una solución más rápida para ti.

2voto

adayzdone Puntos 1258

Puedes intentar algo como esto:

   on run {input, parameters}
    tell application "Finder"
        repeat with oneItem in input
            if kind of oneItem = "Alias" then set oneItem to oneItem's original item
            set contentsPath to (oneItem as text) & "Contents"
            if oneItem's container as text = (path to desktop as text) then
                open contentsPath
            else
                set target of window 1 to contentsPath
            end if
            activate
        end repeat
    end tell
end run

También puedes querer incluir una prueba para asegurarte de que el input sea del tipo esperado.

0 votos

Este flujo de trabajo falla: "Fallo en la ejecución de AppleScript - 1 error: El controlador de eventos de Apple falló".

0 votos

Hubo un colon adicional. Inténtalo de nuevo.

2voto

La carpeta "Contenidos" de también funciona con alias:

on run {input, parameters}
    tell application "Finder"
        repeat with f in input
            open folder "Contents" of f
        end repeat
    end tell
end run

También puedes asignar un atajo para mostrar el contenido del paquete desde Preferencias del Sistema:

Comando-R muestra el archivo original de un alias.

1voto

PaulHurleyuk Puntos 3394

Lo tengo:

en ejecutar {entrada, parámetros}
    decir aplicación "Finder"
        repetir con f en entrada
            revelar f
            establecer objetivo de ventana 1 a (carpeta "Contenidos" de f como texto)
        fin repetir
    fin decir
fin ejecutar

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