Почему этот предустановочный скрипт только частично запускается?
Я использую 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
файл.
Что я пропустил? Что я сделал неправильно? Можете ли вы дать небольшую помощь?
Большое спасибо.