2011-01-11 10 views
1

Snow Leopard ServerでSWU Serverを使用していて、SWUを終了した後にCatalogURLを変更してリセットするスクリプトを作成しようとしています。スクリプトを実行してSWUを起動しますが、 "on quit"プロンプトの後に表示されるシェルスクリプトは実行しません。エラーはなく、SWUの起動後は実行を停止します。Snow Leopard ServerのソフトウェアアップデートのためのApplescript

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

のAppleScriptが終了したイベントを受信したときに、いないソフトウェアアップデートが終了したときにon 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

関連する問題