Codesignierung hinzufügen / ersetzen
Grundsätzliches
- Im Finder das App-Icon wählen, dann das AppleScript aus dem Menü auswählen.
- Nach Rückfrage wird folgendes ausgeführt:
- Quarantäne-Flag entfernen, sofern vorhanden
- Codesignatur erstellen, eine bestehende ggf. überschreiben
- Klappt das nicht, wird ein störendes Resourcefork entfernt und das Erstellen der Codesignatur wiederholt.
- Endet mit Erfolgs- oder Fehlermeldung.
AppleScript
Dateiname: Codesign.scpt
(*
Codesign
Copyright © 2021
Café MegaByte
*)
tell application "Finder"
activate
-- Zählen
set l_selection to selection
set l_count to count l_selection
-- Keine Datei gewählt?
if l_count = 0 then
set l_selection to choose file
end if
-- Nur eine Datei erlauben
if l_count > 1 then
display dialog "Nur ein Programm wählen" buttons {"Ok"} default button 1
return
end if
set l_file to item 1 of l_selection
set l_name to name of l_file
-- AppleScript-Pfad in Unix-Pfad umwandeln
set l_path_posix to POSIX path of (l_file as string)
-- Sicherheitsabfrage
display dialog "Soll die Codesignatur von " & l_name & " ersetzt werden? Dies kann nicht rückgängig gemacht werden." buttons {"Fortfahren", "Abbrechen"} default button 1
-- Quarantäne-Flag entfernen, falls vorhanden
do shell script "xattr -dr com.apple.quarantine '" & l_path_posix & "'"
-- Codesignatur zwangsweise überschreiben
try
do shell script "codesign --deep -f -s - '" & l_path_posix & "'"
-- Störende Ressource-Forks?
on error l_err_msg number l_err_number
-- Ressource-Forks löschen (dabei geht z.B. ein Custom Icon verloren)
do shell script "xattr -cr '" & l_path_posix & "'"
-- Codesignatur erneut überschreiben
try
do shell script "codesign --deep -f -s - '" & l_path_posix & "'"
-- Fehler
on error l_err_msg2 number l_err_number2
display dialog "Fehler: " & l_err_msg2 buttons {"Ok"} default button 1
return
end try
end try
-- Erfolgsmeldung
display dialog "Codesignatur wurde erstellt." buttons {"Ok"} default button 1
end tell