¿Cómo implementar el flujo de trabajo de Automator en los clientes?

Para un caso de uso específico, he desarrollado un flujo de trabajo de acción de carpeta con Automator. Cuando se crea un archivo en una carpeta 'abc', el flujo de trabajo se inicia y ejecuta un script de shell.

Este flujo de trabajo debe instalarse/implementarse en muchas máquinas cliente en entornos corporativos. Si bien los usuarios finales pueden recibir las instrucciones de configuración, este enfoque es propenso a errores, por lo que estoy buscando un mejor enfoque.

Soy consciente de que la definición de flujo de trabajo real se almacena en:

/Users/[user]/Library/Workflows/Applications/Folder Actions/*

Si bien *.workflow/Contents/document.wflow incluye folderActionFolderPath, copiar el flujo de trabajo de un cliente a otro no funciona porque la acción de carpeta no está habilitada. Todavía debe habilitarse en Finder (carpeta de inicio --> clic derecho en la carpeta --> seleccionar 'Configuración de acción de carpeta...' en el menú desplegable). No he encontrado una forma de automatizar este paso de configuración desde la línea de comandos.

¿Cómo puede un administrador del sistema instalar un flujo de trabajo de Acción de carpeta en varias máquinas cliente?

Interesante caso de automatizar una automatización... ¿Puedo preguntar cuál es su objetivo final? Tal vez podamos sugerir otro enfoque para todo su objetivo.

Respuestas (2)

Si realmente desea que el proceso sea "a prueba de idiotas", esta es la opción. En Script Editor.app, cree un nuevo documento en blanco e inmediatamente vaya y guárdelo como una aplicación (yo guardé el mío como "JIMZ Attach Folder Action.app")

El propósito de esta aplicación sería copiar el archivo de flujo de trabajo de Automator (que se incluirá dentro de la carpeta "Recursos" de esta nueva aplicación que acaba de crear en el Editor de secuencias de comandos) que desea adjuntar a la carpeta "ABC" en la computadora de cualquier usuario, a la carpeta "Acciones de carpeta" necesaria en esa computadora. Si la carpeta "ABC" no existe en la computadora de destino, se creará. Para los fines de este proyecto, la ubicación de la carpeta "ABC" estaría en el escritorio de la computadora de destino.

Pegue el siguiente código en su nueva aplicación AppleScript en blanco que acaba de crear.

property nameOfTriggerFolder : "ABC"
property pathToFolderActions : ((path to workflows folder as text) & "Applications:Folder Actions:")
property attachFolderActionTo : (path to desktop as text) & nameOfTriggerFolder

set resourceName to "ABC Folder Action.scpt"
set folderActionScript to ((path to me as string) & "Contents:Resources:" & resourceName) as string

tell application "Finder"
    if not (exists of folder attachFolderActionTo) then
        make new folder at (path to desktop) with properties {name:nameOfTriggerFolder}
    end if
    duplicate file folderActionScript to folder pathToFolderActions with replacing
end tell

tell application "Folder Actions Setup"
    activate
    try
        set addedFolderAction to make new folder action with properties {name:nameOfTriggerFolder, path:attachFolderActionTo}
    end try
    try
        delay 0.5
        tell addedFolderAction to make new script with properties {name:resourceName, path:(pathToFolderActions & resourceName)}
    end try
    if not folder actions enabled then
        set folder actions enabled to true
    end if
end tell

Luego continúe y arrastre su archivo de flujo de trabajo de Automator desde la aplicación Finder directamente a la carpeta de recursos en el Editor de secuencias de comandos (como se muestra en la animación a continuación)

ingrese la descripción de la imagen aquí

Compile y guarde la aplicación en el Editor de secuencias de comandos. Ahora puedes distribuir esta app a quien quieras. Cuando esta aplicación ahora se inicie en cualquier computadora de destino, copiará el archivo de flujo de trabajo de Automator directamente a la carpeta donde debe ubicarse. También agregará la carpeta "ABC" a la lista de carpetas habilitadas en Folder Actions Setup.app y adjuntará el script o el archivo de flujo de trabajo a esa carpeta.

como guardas los gifs
@MateusRibeiro Solo uso la grabación de pantalla integrada de Mac para crear una grabación de video de mis acciones de pantalla. Luego cargo ese archivo de video en GIF Brewery 3 para hacer mis ediciones y guardarlo como .gif gifbrewery.com

De manera similar a la sugerencia de @ wch1zpink, consideraría formular la acción de carpeta como un script en lugar de un flujo de trabajo de Automator , que se vería así:

on adding folder items to directory after receiving fs

    do shell script "..."

end adding folder items to

Guardando esto como un archivo .scpto .applescripty moviéndolo a ~/Library/Scripts/Folder Action Scripts, puede escribir la creación de acciones de carpeta y adjuntarlas a carpetas como esta:

use sys : application "System Events"

property name : "abc"
property path : "/path/to/abc"
property folder action : a reference to folder action named (my name)
property script : "my folder action script.applescript"
property folder : a reference to Folder Action scripts folder
property file : a reference to the file named (my script) in my folder

set folder actions enabled to true

if not (my file exists) then return open my folder
if my folder action exists then return my folder action's scripts

make new folder action with properties {name:my name, path:my path}
tell my folder action to make new script with properties ¬
    {name:my file's name, POSIX path:my file's POSIX path}

set my folder action's enabled to true
set my folder action's scripts's enabled to true

¿ Dónde "my folder action script.applescript"está el nombre de la secuencia de comandos de acción de la carpeta guardada? y las propiedades namey pathrepresentan el nombre y la ruta a su carpeta monitoreada.