2011-01-11 2 views
1

Использование сервера SWU на сервере Snow Leopard, и я пытаюсь создать скрипт, который изменит CatalogURL, а затем сбросит его после выхода SWU. Он запускает скрипт и запускает SWU, но не запускает сценарий оболочки, указанный после приглашения «on quit». Нет ошибки, она просто перестает работать после запуска SWU.Applescript для обновления программного обеспечения для сервера Snow Leopard

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 

ответ

1

Обработчик on quit будет работать, когда AppleScript получает бросить событие, не тогда, когда обновление программного обеспечения завершает работу; на самом деле, поскольку сценарий просто выходит из себя после активации Software Update, обработчик quit никогда не будет запускаться вообще. Что вам нужно сделать, так это заставить сценарий подождать, пока не закончится Software Update, а затем запустите шаги очистки. Я не проверял это правильно, но он должен работать:

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

Это сработало отлично, спасибо огромное! – Brian

Смежные вопросы