【问题标题】:Launch an application from AppleScript bundle从 AppleScript 包启动应用程序
【发布时间】:2016-02-19 08:06:30
【问题描述】:

我创建了一个 AppleScript 包 - main.app 来自

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 时,它会在显示对话框并询问 usernamepassword 后立即退出,而不启动 MyApp.app。 我做错了什么?

【问题讨论】:

    标签: macos applescript


    【解决方案1】:

    一个问题可能是如果路径中有任何空格,那么基本上路径将是不正确的。因此,您应该始终使用“引用形式”来确保正确考虑空格和其他路径字符。试试这个...

    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
    

    另外,我认为您需要确定 MyApp.app 中的 unix 可执行文件的名称。大多数 applescript 应用程序内部都有“applet”而不是应用程序的名称。所以仔细检查一下。你可能需要这个...

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

    【讨论】:

    • 不,在 MacOS 上,“applet”适用于 applescript 包。对于其他 applicationname.app 它是 /Contents/MacOS/applicationname
    • 是的,我知道这就是为什么我说只是要仔细检查你那里没有错误。请仍然接受我在您的代码中使用“引用形式”的建议。
    【解决方案2】:

    试试:

    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
    

    编辑

    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
    

    【讨论】:

    • 它可以工作,但我需要以管理员权限启动它。
    • 您的脚本要求权限并启动应用程序,但我的应用程序无法在受限区域(/Library/Application Support/Audio/)中创建文件。我在我的脚本中发现了一个错误,哪个应用程序可以正常工作
    【解决方案3】:

    我的脚本中有一个愚蠢的错误。我需要写“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
    

    【讨论】:

    • 正如我在帖子中所说,我仍然会在 shell 脚本中的 cmnd 前面加上“引用形式”。您可以将 main.app 移动到名称中带有空格的文件夹中,因此引用的形式只会使您的脚本更加健壮。
    • @regulus6633,哦,是的,同意
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多