macos - Applescript:无需打开即可获取.app的路径

标签 macos applescript

我有以下处理程序;

on getAppPath(appName)
  try
    return POSIX path of (path to application appName)
  on error
    return "NOT INSTALLED"
  end try
end getAppPath

当用例如“ImageOptim”调用时将返回“/Applications/ImageOptim.app/”。

我遇到的问题是这会在我的 Dock 中打开该应用程序,有没有办法在不发生这种情况的情况下获取此路径字符串?

谢谢。

最佳答案

的路径位于 Standard Additions 中,它必须启动应用程序才能获取返回值(某些 Apple 应用程序除外——例如,请参阅 TextEdit)。一个想法是查询 Launch Services Registry,它有所有可执行文件的记录,并使用 grep 来提取与您指定的应用程序名称匹配的路径。像这样的东西:

getAppPath("TextEdit.app")

on getAppPath(appName)
    try
        set launchServicesPath to "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister"

        -- get the path to all executables in the Launch Service Registry that contain that appName
        set appPaths to paragraphs of (do shell script launchServicesPath & " -dump | grep --only-matching \"/.*\\" & appName & "\"")
        return appPaths

    on error
        return "NOT INSTALLED"
    end try
end getAppPath

请注意,这会返回一个路径列表,因为可能有多个具有匹配字符串应用程序名称的可执行文件。因此,您需要考虑到这一点。

关于macos - Applescript:无需打开即可获取.app的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636860/

相关文章:

macos - 在 AppleScript 或 PowerShell 中通过网络重新启动多台 Mac 的脚本?

macos - 如何使用 AppleScript 在 iMessage 中开始新对话?

bash - Applescript——执行多行代码

python - 使用 Python 教程进行测试驱动开发 : Error trying to open Firefox with Selenium on MacOSX

macos - Mac 上的默认终端 $PATH 位于何处?

c++ - 对于 C++ MacOSX 应用程序,要使用什么线程库?

swift - #selector 在 NSMenuItem 中看不到我自己创建的方法

flash - AppleScript 在基于 Flash 的网站的 Safari 中打开 URL 崩溃

cocoa - AppleScript 现在可以被 JavaScript 取代吗?

macos - 在 mac 上编程时,您是否使用原始(德语)苹果键盘/键盘布局?