2011-01-11 5 views
1

Verwenden von SWU Server auf Snow Leopard Server, und ich versuche, ein Skript zu erstellen, das die CatalogURL ändern und dann zurücksetzen, nachdem SWU beendet wird. Es wird das Skript ausführen und die SWU starten, aber das Shell-Skript, das nach der Eingabeaufforderung "on quit" angezeigt wird, wird nicht ausgeführt. Es gibt keinen Fehler, es hört einfach auf zu laufen, nachdem SWU gestartet wurde.Applescript für die Softwareaktualisierung für Snow Leopard Server

tell application "System Events" 
    set OSVersion to do shell script "sw_vers -productVersion" 
end tell 
if OSVersion starts with "10.4" then 
    -- set up Tiger thing 
    set catalogURLValue to "http://server.local:8888/index.sucatalog" 
else if OSVersion starts with "10.5" then 
    -- set up Leopard thing 
    set catalogURLValue to "http://server.local:8888/index-leopard.merged-1.sucatalog" 
else if OSVersion starts with "10.6" then 
    -- set up Snow Leopard thing 
    set catalogURLValue to "http://server.local:8888/index-leopard-snowleopard.merged-1.sucatalog" 
else 
    return 
end if 
do shell script "defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL " & catalogURLValue 

tell application "Software Update" 
    activate 
end tell 


on quit 
    try 
     do shell script ¬ 
      "defaults delete /Library/Preferences/com.apple.SoftwareUpdate CatalogURL" 
     continue quit 
    on error 
     do shell script ¬ 
      "rm /Library/Preferences/com.apple.SoftwareUpdate.plist" 
    end try 
end quit 

Antwort

1

Der on quit Handler ausgeführt wird, wenn das Apple ein beenden Ereignis empfängt, nicht, wenn Software-Update beendet; Da sich das Skript nach dem Aktivieren der Softwareaktualisierung einfach selbst beendet, wird der Quit-Handler überhaupt nicht ausgeführt. Sie müssen das Skript warten lassen, bis die Softwareaktualisierung abgeschlossen ist, und dann die Bereinigungsschritte ausführen. Ich habe das nicht richtig getestet, aber es sollte funktionieren:

tell application "System Events" 
    set OSVersion to do shell script "sw_vers -productVersion" 
end tell 
if OSVersion starts with "10.4" then 
    -- set up Tiger thing 
    set catalogURLValue to "http://server.local:8888/index.sucatalog" 
else if OSVersion starts with "10.5" then 
    -- set up Leopard thing 
    set catalogURLValue to "http://server.local:8888/index-leopard.merged-1.sucatalog" 
else if OSVersion starts with "10.6" then 
    -- set up Snow Leopard thing 
    set catalogURLValue to "http://server.local:8888/index-leopard-snowleopard.merged-1.sucatalog" 
else 
    return 
end if 
do shell script "defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL " & catalogURLValue 

tell application "Software Update" 
    activate 
end tell 

set runCount to 1 
repeat while runCount > 0 
    delay 5 
    tell application "System Events" to set runCount to the count of (processes whose name is "Software Update") 
end repeat 
try 
    do shell script ¬ 
        "defaults delete /Library/Preferences/com.apple.SoftwareUpdate CatalogURL" 
    continue quit 
on error 
    do shell script ¬ 
        "rm /Library/Preferences/com.apple.SoftwareUpdate.plist" 
end try 
+0

Das hat perfekt funktioniert, vielen Dank! – Brian