2013-07-13 5 views
0

Я создал связку AppleScript - main.app отЗапуск приложения из AppleScript пачки

on run 
    set appAlias to POSIX path of (path to resource "MyApp.app") 
    set cmnd to appAlias & "Contents/MacOs/MyApp &" 

    display dialog "You're going to launch" & cmnd buttons {"Ok"} 
    do shell script cmnd with administrator privileges 
end run 

MyApp.app находится в main.app/Contents/Resources

Когда я запускаю main.app квиты сразу после отображения диалогового окна и задавать username и password без начало MyApp.app. Что я делаю неправильно?

ответ

1

Try:

on run 
    set appAlias to POSIX path of (path to resource "MyApp.app") 
    display dialog "You're going to launch" & appAlias buttons {"Ok"} 
    tell application "System Events" to open appAlias 
end run 

EDIT

on run 
    set appAlias to POSIX path of (path to resource "MyApp.app") 
    display dialog "You're going to launch" & appAlias buttons {"Ok"} 
    do shell script "open " & quoted form of appAlias with administrator privileges 
end run 
+0

Это работает, но мне нужно запущен с правами администратора. – amplifier

+0

Попробуйте отредактированную версию ... – adayzdone

+0

, скрипт запрашивает привилегии и запускает приложение, но мое приложение не может создавать файлы в ограниченной области (/ Library/Application Support/Audio /) в любом случае. Я нашел ошибку в своем скрипте, приложение которого работает правильно с – amplifier

3

Одна проблема может быть, если есть какие-либо пробелы в пути, то по существу, путь будет некорректным. Поэтому вы всегда должны использовать «quoted form of», чтобы гарантировать, что пробелы и другие символы пути учтены должным образом. Попробуйте это ...

on run 
    set appAlias to POSIX path of (path to resource "MyApp.app") 
    set cmnd to appAlias & "Contents/MacOs/MyApp" 

    display dialog "You're going to launch" & cmnd buttons {"Ok"} 
    do shell script (quoted form of cmnd & " &") with administrator privileges 
end run 

Кроме того, я думаю, вы должны быть уверены имя исполняемого файла UNIX внутри MyApp.app. В большинстве приложений для приложений есть «апплет» внутри вместо имени приложения. Так что дважды проверьте это. Возможно, вам это понадобится ...

set cmnd to appAlias & "Contents/MacOS/applet" 
+0

Нет, на MacOS «апплет» предназначен для аппликаций. Для другого applicationname.app это/Contents/MacOS/applicationname – amplifier

+0

Да, я знаю, поэтому я сказал только, чтобы проверить, нет ли у вас ошибки. Пожалуйста, по-прежнему принимайте мое предложение использовать «котировочную форму» в вашем коде. – regulus6633

0

В моем сценарии была глупая ошибка. Мне нужно написать «MacOS» вместо «MacOs» Вот скрипт, который позволяет мое приложение для создания файлов в запретной зоне:

on run 
    set appAlias to POSIX path of (path to resource "MyApp.app") 
    set cmnd to appAlias & "Contents/MacOS/MyApp" 

    display dialog "You're going to launch" & cmnd buttons {"Ok"} 
    do shell script cmnd with administrator privileges 
end run 
+2

Как я заметил в своем посте, я все равно поставил бы «процитированную форму» перед cmnd в сценарии оболочки. Вы можете перемещать main.app в папку с пробелом в ее имени, поэтому цитированная форма просто сделает ваш скрипт более надежным. – regulus6633

+0

@ regulus6633, о да, соглашайтесь – amplifier

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