Как мне диагностировать скомпилированный Applescript, который просто завершает работу при запуске? - PullRequest
1 голос
/ 07 января 2010

Я написал два applecripts, чтобы моя жена могла запустить mt-daapd и легко его выключить.Они прекрасно работают в приложении Script Editor, но когда я компилирую их в автономные приложения, приложения работают при первом тестировании.Затем они смущают меня, когда я гордо хвастаюсь ими перед своей женой.Я вижу "открытую" анимацию, а потом они просто сидят там.Ранее я создавал другие автономные приложения, но этого не произошло.

Я попытался изменить тип приложения на пакет (та же проблема).Я даже пытался подключиться к исполняемому файлу через gdb, чтобы посмотреть, смогу ли я что-нибудь сделать, чтобы рассказать мне, что происходит.Я посмотрел в консоли для получения дополнительной информации.Ничего не было, Сценарии смеялись мне в лицо.

Как мне решить эту проблему?

Я включил один из сценариев ниже;второй почти такой же.Я бегу 10.5.8.

property userpassword : ""

if userpassword is "" then
    display dialog "Please enter your user password:" default answer "" with hidden answer
    set userpassword to text returned of result
    set the_password to "Undefined"
    repeat until the_password is "Correct"
        try
            do shell script "/opt/local/sbin/mt-daapd -c /etc/mt-daapd.conf" password userpassword with administrator privileges
            set the_password to "Correct"
        on error
            display dialog "Sorry, the password entered was not correct. Please try again:" default answer "" with hidden answer
            set userpassword to text returned of result
        end try
    end repeat
    if the_password is "Correct" then
        display dialog "Your music is being shared!" buttons {"Done"} default button "Done"
    end if
end if

Ответы [ 2 ]

1 голос
/ 12 января 2010

свойства в applecripts не являются фиксированными, они похожи на свойства любого другого объекта. Вы можете изменить их во время выполнения или evn из другого скрипта. так что если ваш script1 был

property potato: "potayto"
say potato

и вы запустили другой скрипт

set potato of script1 to "potahto"

тогда повторный запуск script1 заставит ваш компьютер сказать "потахто".

Свойства могут быть полезными способами хранения настроек в скриптах.

Просто удалите первый оператор if, он все равно избыточен. Проверьте правильность пароля, а не пустой.

следующим образом:

property userpassword :""
set the_password to "Undefined"
repeat until the_password is "Correct"
    try
        do shell script "/opt/local/sbin/mt-daapd -c /etc/mt-daapd.conf" password userpassword with administrator privileges
        set the_password to "Correct"
    on error
        display dialog "Sorry, the password was not correct. Please try again:" default answer "" with hidden answer
        set userpassword to text returned of result
    end try
end repeat
if the_password is "Correct" then
    display dialog "Your music is being shared!" buttons {"Done"} default button "Done"
end if
1 голос
/ 08 января 2010

Я не уверен, как это происходит, но скрипт сохраняет значение userpassword между вызовами, поэтому, как только оно будет установлено на любое значение, оно сохраняет это значение и просто выходит из программы. Я обнаружил это после просмотра того, как я создал свои другие автономные приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...