Почему этот предустановочный скрипт только частично запускается?

Я использую PackageMaker для создания установочного пакета. Следующее мое preinstall script быть вызванным Installer:

#!/bin/sh
/usr/bin/osascript <<EOF
tell application "System Events"
if exists (application process "Dictionary") then
    tell application "Dictionary" to quit
end if
end tell
set theFolder to (path to library folder as text) & "Dictionaries:"
set fileNames to {"dict1.dictionary", "dict2.dictionary", "dict3.dictionary", "dict_n.dictionary"}
set dict to {}
repeat with aFile in fileNames
tell application "Finder"
    if exists file (theFolder & aFile as text) then set end of dict to aFile & return
end tell
end repeat
try
tell application "System Events"
    if dict ≠ {} then display alert "You have XYZ installed" message "Choose 'Upgrade' to install the new version or 'Cancel' if you want to stay with the current version." & return & dict buttons {"Cancel", "Upgrade"} default button "Upgrade"
    if the button returned of the result is "Cancel" then
        tell current application
            set app_name to "Installer"
            set the_pid to (do shell script "ps ax | grep " & (quoted form of app_name) & " | grep -v grep | awk '{print $1}'")
            if the_pid is not "" then do shell script ("kill -9 " & the_pid)
        end tell
    end if

end tell
end try
EOF

Этот скрипт хорошо работает в редакторе AppleScript, а также в терминале, то есть он закрывает приложение "Словарь", если он работает, и принудительно завершает работу установщика, если пользователь выбирает "Отмена".

Однако, когда вызывается во время процесса установки, он только частично запускается: он закрывает приложение "Словарь", но обходит принудительное завершение работы Установщика при нажатии кнопки "Отмена". Обратите внимание, что я сделал chmod 755 preinstall файл.

Что я пропустил? Что я сделал неправильно? Можете ли вы дать небольшую помощь?

Большое спасибо.

0 ответов

Другие вопросы по тегам