我有以下处理程序;
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中打开该应用程序,有没有办法在不发生这种情况的情况下获取此路径字符串?
感谢。
答案 0 :(得分:3)
路径是在标准添加中,它必须启动应用程序才能获得返回值(Apple的某些应用程序除外 - 请参阅例如TextEdit)。一个想法是查询启动服务注册表,其中包含所有可执行文件的记录,并使用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
请注意,这可以返回路径列表,因为可能存在多个具有匹配字符串应用名称的可执行文件。所以,你会想要考虑到这一点。