Für einen bestimmten Anwendungsfall habe ich mit Automator einen Workflow für Ordneraktionen entwickelt. Wenn eine Datei in einem Ordner „abc“ erstellt wird, startet der Workflow und führt ein Shell-Skript aus.
Dieser Workflow muss auf vielen Clientcomputern in Unternehmensumgebungen installiert/bereitgestellt werden. Während Endbenutzern die Einrichtungsanweisungen bereitgestellt werden könnten, ist dieser Ansatz fehleranfällig, sodass ich nach einem besseren Ansatz suche.
Mir ist bewusst, dass die eigentliche Workflow-Definition gespeichert wird in:
/Users/[user]/Library/Workflows/Applications/Folder Actions/*
Während *.workflow/Contents/document.wflow den folderActionFolderPath enthält, funktioniert das Kopieren des Workflows von einem Client auf einen anderen nicht, da die Ordneraktion nicht aktiviert wird. Es muss noch im Finder aktiviert werden (Home-Ordner --> Rechtsklick auf den Ordner --> Auswahl von "Folder Action Setup ..." aus dem Dropdown-Menü). Ich habe keine Möglichkeit gefunden, diesen Konfigurationsschritt über die Befehlszeile zu automatisieren.
Wie kann ein Systemadministrator einen Workflow für Ordneraktionen auf mehreren Client-Rechnern installieren?
Wenn Sie den Prozess wirklich „idiotensicher“ machen wollen, haben Sie hier die Möglichkeit. Erstellen Sie in Script Editor.app ein neues leeres Dokument und speichern Sie es dann sofort als Anwendung (ich habe meine als „JIMZ Attach Folder Action.app“ gespeichert).
Der Zweck dieser Anwendung besteht darin, die Automator-Arbeitsablaufdatei (die im Ordner „Ressourcen“ dieser neuen Anwendung enthalten sein wird, die Sie gerade im Skript-Editor erstellt haben) zu kopieren, die Sie an den Ordner „ABC“ auf dem Computer eines beliebigen Benutzers anhängen möchten. in den erforderlichen Ordner „Ordneraktionen“ auf diesem Computer. Wenn der Ordner „ABC“ auf dem Zielcomputer nicht vorhanden ist, wird er erstellt. Für die Zwecke dieses Projekts würde sich der Ordner „ABC“ auf dem Desktop des Zielcomputers befinden.
Fügen Sie den folgenden Code in Ihre neue leere AppleScript-App ein, die Sie gerade erstellt haben.
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
Ziehen Sie dann Ihre Automator-Workflow-Datei aus der Finder-App direkt in den Ressourcenordner im Skript-Editor (wie in der Animation unten gezeigt).
Kompilieren und speichern Sie die App im Skripteditor. Jetzt können Sie diese App an wen Sie wollen verteilen. Wenn diese App jetzt auf einem beliebigen Zielcomputer gestartet wird, kopiert sie die Automator-Workflow-Datei direkt in den Ordner, in dem sie gespeichert werden muss. Außerdem wird der Ordner „ABC“ zur Liste der aktivierten Ordner in der Setup.app für Ordneraktionen hinzugefügt und das Skript oder die Workflow-Datei an diesen Ordner angehängt
Ähnlich wie beim Vorschlag von @ wch1zpink würde ich in Betracht ziehen, die Ordneraktion als Skript und nicht als Automator- Workflow zu formulieren, der ungefähr so aussehen würde:
on adding folder items to directory after receiving fs
do shell script "..."
end adding folder items to
Wenn Sie dies entweder als .scpt
oder- .applescript
Datei speichern und nach verschieben ~/Library/Scripts/Folder Action Scripts
, können Sie dann die Erstellung von Ordneraktionen skripten und sie wie folgt an Ordner anhängen:
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
wobei "my folder action script.applescript"
der Name Ihres gespeicherten Ordneraktionsskripts ist; und die Eigenschaften name
und path
stellen den Namen und den Pfad zu Ihrem überwachten Ordner dar.
Mateus Ribeiro