Ich habe eine AppleScript .scpt-Datei in Script Debugger.app erstellt.
So habe ich dieser .scpt-Datei ein benutzerdefiniertes Symbol zugewiesen:
Ich habe ein einzigartiges Symbol (im "512px PNG"-Format) von IconArchive.com heruntergeladen .
Ich habe die .png-Datei mit Preview.app geöffnet. In der Vorschau habe ich auf Edit⟶ geklickt Copy, um dieses Bild in meine Zwischenablage zu legen.
Ich habe das Fenster der .scpt-Datei Get Infoim Finder geöffnet. Ich habe mit der linken Maustaste auf das Standardsymbol geklickt, das sich in der oberen linken Ecke des Get InfoFensters befindet. Um das Standardsymbol herum wurde dann eine blaue Umrandung angezeigt, die anzeigt, dass das Symbol ausgewählt wurde.
⌘ commandSchließlich habe ich das benutzerdefinierte Symbol über die Tastenkombination + über das Standardsymbol eingefügt V. Das benutzerdefinierte Symbol wurde sofort festgelegt. Ich schloss aus dem Get InfoFenster.
Wenn ich die .scpt-Datei in Script Debugger öffne, um den Code zu bearbeiten, und dann die .scpt-Datei erneut speichere, verschwindet das benutzerdefinierte Symbol.
Beim Speichern tritt das folgende Symbol sofort an die Stelle des benutzerdefinierten Symbols:
(Dies ist das Standardsymbol von OS X für .scpt-Dateien.)
Natürlich ist es eine Unannehmlichkeit, jedes Mal, wenn ich die Datei speichere (dh bearbeite), den Prozess des Festlegens des benutzerdefinierten Symbols durchlaufen zu müssen.
Aber es gibt auch einen zweiten Folgefehler: Jedes Mal, wenn ich das benutzerdefinierte Symbol im Fenster neu hinzufüge Get Info, erhöht sich die Dateigröße der .scpt-Datei kumulativ. Mit anderen Worten, wenn der Skript-Debugger das benutzerdefinierte Dateisymbol löscht, ist die Dateigröße des Symbols irgendwie immer noch als Teil der Gesamtgröße der .scpt-Datei enthalten.
Ein typisches Beispiel: Die Dateigröße der betreffenden .scpt-Datei beträgt derzeit 12,6 MB. Die Datei sollte nicht größer als 0,5 MB sein.
Ich verstehe, wie man ein benutzerdefiniertes Dateisymbol auf eine AppleScript -.app-Datei setzt , sodass dieses benutzerdefinierte Symbol nach der Bearbeitung an Ort und Stelle bleibt , aber ich bin gespannt, ob dasselbe für eine .scpt-Datei getan werden kann.
Gibt es eine Möglichkeit, dass mein benutzerdefiniertes Skriptsymbol an Ort und Stelle bleibt, auch nachdem die .scpt-Datei im Skript-Debugger geändert wurde?
Dies ist eine .scpt-Datei, die über das Dropdown-Menü der FastScripts.app-Menüleiste gestartet wird. (Die .scpt-Datei befindet sich in /Users/Me/Library/Scripts
.) Das FastScripts-Dropdown-Menü zeigt tatsächlich die Dateisymbole der Skripte an , was eine nette Funktion ist. Aus diesem Grund möchte ich ein benutzerdefiniertes Symbol für die .scpt-Datei festlegen (dh damit ich ein passendes Symbol im Kontextmenü von FastScripts sehen kann).
Nein, es ist keine große Sache, einfach die AppleScript-.scpt-Dateien, die ein benutzerdefiniertes Dateisymbol haben sollen, in AppleScript-.app-Dateien zu konvertieren. Ich stelle diese Frage nur, um zu sehen, ob ich hier etwas vermisse oder übersehe.
Es scheint, dass dieser Fehler nur im Script Debugger auftritt .
Wenn ich die gleichen Schritte im nativen AppleScript-Bearbeitungsprogramm von OS X, Script Editor.app , befolge, bleibt das .scpt-Dateisymbol beim Speichern erhalten. Ich hätte jedoch schwören können , dass ich dieses Problem in der Vergangenheit tatsächlich im Skripteditor erlebt habe.
Ich erinnere mich zum Beispiel daran, dass sich der Skripteditor einmal geweigert hat, eine von mir bearbeitete .scpt-Datei zu speichern; Beim Speichern wurde ein vager Fehlerdialog angezeigt. Um die Datei erfolgreich zu speichern, musste ich entweder das benutzerdefinierte Symbol aus dem Finder- Get InfoFenster löschen oder den Codetext kopieren und in eine neue .scpt-Datei einfügen (die natürlich zwangsläufig das standardmäßige .scpt-Dateisymbol besitzen würde).
Aber zu diesem Zeitpunkt kann ich den Fehler im Skripteditor nicht mehr reproduzieren.
Jedenfalls versuche ich, meine AppleScripts nicht mehr mit dem Skripteditor zu bearbeiten. Dies liegt daran, dass der Skripteditor verzögert ist , möglicherweise abstürzt, wenn eine Skriptbibliothek eines Drittanbieters verwendet wird , und beim Öffnen und Speichern von Dateien temperamentvoll sein kann.
Nach meiner bisherigen Erfahrung hat Script Debugger keines dieser Probleme.
Natürlich hat der Skript-Debugger jedoch mindestens ein Problem (dh das in diesem Beitrag beschriebene Problem).
OS X El Capitan, Version 10.11.6.
Wenn ein Benutzer einer Datei ein benutzerdefiniertes Symbol zuweist, indem er eine Bilddatei in das Symbol in der linken oberen Ecke auf dem Informationsblatt der Datei kopiert und einfügt , wird die Bilddatei im Allgemeinen als com.apple.ResourceFork
erweitertes Attribut der Datei gespeichert, die es ist angewendet auf und kann im Terminal mit angezeigt werden, ls -l@ filename.ext
um anzuzeigen, dass die Datei erweiterte Attribute hat . Um die erweiterten Attribute zu bearbeiten , verwenden Sie das xattr
Dienstprogramm in Terminal. Beachten Sie, dass die Verwendung des Begriffs Bilddatei in diesem Kontakt jede gültige Quelle ist, die in die Zwischenablage kopiert wird, um dann in das Blatt „Informationen abrufen“ eingefügt zu werden.
Das erneute Anwenden der Symboldatei nach dem Speichern der .scpt-Datei im Skriptdebugger führt dazu, dass das com.apple.ResourceFork
erweiterte Attribut weiter an Größe zunimmt, während möglicherweise der Zugriff auf die angesammelten Symboldateien verloren geht, kann ich nicht mit Sicherheit sagen, da ich nicht genug getan habe testen. Obwohl der Skripteditor die benutzerdefinierte Symboldatei beibehält, scheint es leider dennoch, dass die Größe des com.apple.ResourceFork
erweiterten Attributs ebenfalls zunimmt.
Um die Dateigröße zu reduzieren, indem Sie speziell die com.apple.ResourceFork
erweiterten Attribute entfernen , verwenden Sie die folgende Befehlssyntax in Terminal:
xattr -d com.apple.ResourceFork filename.ext
Wenden Sie dann das benutzerdefinierte Symbol erneut auf die Datei an.
Schauen Sie sich die Manpage für xattr
in Terminal an, indem Sie sie eingeben xattr
und dann mit der rechten Maustaste darauf klicken und Manpage öffnen aus dem Kontextmenü auswählen.
Das Problem mit dem Zurücksetzen des Skriptdebuggers auf das Standardsymbol muss wahrscheinlich mit dem Entwickler behoben werden, oder verwenden Sie die in der Antwort von wch1zpink vorgeschlagene Problemumgehung.
Da das com.apple.ResourceFork
erweiterte Attribut unabhängig davon wächst, welche der Apps Sie verwenden, Skript-Editor oder Skript-Debugger, ist dies ein Problem, das Apple angehen muss.
Ich weiß, dass Sie OS X El Capitan 10.11.6 verwenden, aber ich habe dies unter macOS Sierra 10.12.5 getestet und das Verhalten ist anscheinend dasselbe, es spielt wahrscheinlich keine Rolle, dass ich dies in einer späteren Betriebssystemversion getestet habe. Ich habe Script Debugger 6.0.4 verwendet.
Aufgrund der Wiederholbarkeit dessen, was Sie tun, bietet sich hier eine Skriptlösung an, um den Aufwand zu reduzieren, der erforderlich ist, um sowohl eine kleine Dateigröße einschließlich erweiterter Attribute als auch das benutzerdefinierte Symbol beizubehalten.
Aktualisieren:
Nachdem ich unter OS X 10.8.5 einen ähnlichen Weg eingeschlagen hatte, das Symbol einer Datei programmgesteuert festlegte und fast jede Lösung getestet hatte, die unter How can I change a file or folder icon using the Terminal vorgestellt wurde , entschied ich mich für die Verwendung setfileicon
von this answer , wie es damals das Beste für meine Bedürfnisse formulierte.
Der folgende AppleScript-Code ist ein Beispielcode, der das com.apple.ResourceFork
erweiterte Attribut der Zieldatei programmgesteuert löschen kann, um die Gesamtgröße zu reduzieren und das Symbol der Zieldatei zurückzusetzen. Es ist um die Verwendung der in der Antwort von wch1zpink vorgeschlagenen Problemumgehung geschrieben und verweist auf das Sperren der Datei, um das Symbol während des Speicherns unter Script Debugger intakt zu halten.
Der Hauptzweck dieses Beispielcodes besteht darin, zu zeigen, wie das com.apple.ResourceFork
erweiterte Attribut der Zieldatei gelöscht und das benutzerdefinierte Symbol programmgesteuert zurückgesetzt wird. Ich habe den Code zum Entsperren/Sperren der Zieldatei eingefügt, wenn Sie diese Methode verwenden, um das Symbol zwischen dem Speichern intakt zu halten. Andernfalls kann es entfernt werden. com.apple.ResourceFork
Ich denke, es hängt nur davon ab, wie oft die Größe des erweiterten Attributs der Zieldatei zurückgesetzt werden soll .
tell current application
set theTargetFilename to "filename.scpt" as string
set theHomeFolderPath to (path to home folder) as string
set theScriptsFolder to (path to scripts folder) as string
set theTargetFilePathname to theScriptsFolder & theTargetFilename as alias
set theTargetIcon to quoted form of (POSIX path of (theHomeFolderPath & "bin:icon.icns") as string)
set theTargetExecutable to quoted form of (POSIX path of (theHomeFolderPath & "bin:setfileicon") as string)
tell application "Finder" to set locked of theTargetFilePathname to false
do shell script "xattr -d com.apple.ResourceFork " & quoted form of (POSIX path of theTargetFilePathname) & "; exit 0"
do shell script theTargetExecutable & " " & theTargetIcon & " " & quoted form of (POSIX path of theTargetFilePathname)
tell application "Finder" to set locked of theTargetFilePathname to true
end tell
Anmerkungen:
Für diesen Beispielcode habe ich das setfileicon
Befehlszeilendienstprogramm und die Zieldateien icon.icns
im Ordner bin im Stammverzeichnis meines Home- Ordners abgelegt. Die icon.icns
Datei ist die .icns- Datei derjenigen, die in Ihrer Frage verlinkt ist. Sie könnten die PNG- Datei verwenden , aber ich glaube, dass die .icns- Datei ein besseres Bild erzeugt.
Das Skript könnte fester und nicht so ausführlich codiert sein, aber ich habe es aus einigen Gründen so codiert, auf die ich nicht näher eingehen werde, es sei denn, Sie benötigen eine Erklärung. Fühlen Sie sich frei, den Beispielcode zu verwenden, um eine funktionierende Lösung nach Bedarf/Wunsch in Ihrer Umgebung zu implementieren.
Getestet wurde dies unter macOS Sierra 10.12.5, sollte aber auch unter OS X El Capitan 10.11.6 funktionieren.
com.apple.ResourceFork
vorhanden ist unnötig vergrößert. Daher wird die Integration in den Code eines Skripts/einer Anwendung nichts Wertvolles bewirken, da es keinen mir bekannten Mechanismus innerhalb des Skript-Debuggers oder des Skript-Editors gibt, um den Code nur auf das Skript/die Anwendung auszulösen. App, die ein benutzerdefiniertes Symbol hat, nachdem sie in einer der beiden Apps gespeichert wurde.Eigentlich gibt es eine Lösung. Ich habe die .icns-Datei über den von Ihnen angegebenen Link heruntergeladen. Ich habe dann die gesamte .icns-Datei aus dem Finder-Fenster auf das Symbolbild im Get-Info-Fenster des Skripts gezogen, das ich in der Script Debugger-App erstellt habe. Nachdem das neue Symbol festgelegt wurde, habe ich im Fenster „Informationen abrufen“ die Option „Datei sperren“ ausgewählt.
Danach habe ich dieses Skript erneut in der Script Debugger-App geöffnet und einige Änderungen am Skript vorgenommen, das Skript neu kompiliert und erneut gespeichert. Als ich versuchte, es erneut zu speichern, bekam ich dieses Meldungsfenster.
Ich habe die Option „Save Ayway“ und BINGO!! Die Änderungen wurden gespeichert, aber das benutzerdefinierte Symbol blieb unverändert.
Hier ist ein Vorschlag, dass vielleicht jemand den Ball schnappen und damit laufen kann. Anstatt es als Skriptdatei im Skriptdebugger zu speichern, speichern Sie es als Skriptpaket (.scptd). Danach Strg+Klicken Sie auf diese Datei im Finder und wählen Sie „Paketinhalt anzeigen“. Fügen Sie Ihre benutzerdefinierte .icns-Datei zum Ordner „Ressourcen“ hinzu. Sie werden auch eine info.plist-Datei bemerken. Öffnen Sie die Datei info.plist in Xcode. Wenn Sie auf die Schaltfläche + in der Zeile der Liste der Informationseigenschaften klicken, erhalten Sie die Option, Symboldateien hinzuzufügen.
Dies übersteigt den Rahmen meines Wissens, aber vielleicht kann die benutzerdefinierte Symboldatei hier irgendwie eingestellt werden.
com.apple.ResourceFork
erweiterte Attribut der Datei bei jedem Speichern weiter an. Daher muss das com.apple.ResourceFork
erweiterte Attribut regelmäßig gelöscht und das Symbol zurückgesetzt werden. Dazu muss die Datei entsperrt werden, da auch mit sudo
die Sperre nicht umgangen wird.
Wandernder Fremder
Rubiks Sphäre
Wandernder Fremder
Rubiks Sphäre