如果我将AppleScript中的变量设置为AppleScript applet或Droplet的路径,则会启动applet或droplet并执行run()
处理程序。例如,我有
set thePath to path to application "HS Extract"
这将启动Droplet“HS Extract”。我还尝试将变量设置为应用程序作为别名,然后将变量设置为别名的路径以及所有失败的其他一些可能性。
如何在不启动Droplet或applet的情况下将变量设置为Droplet或applet的路径?
答案 0 :(得分:2)
另一种查找方法是使用shell和元数据属性中的mdfind。这就像进行聚光灯搜索一样,此方法不应启动任何应用程序。
例如,应用程序具有com.apple.application-bundle的kMDItemContentType属性。如果我们将它与应用程序的名称结合起来,我们可以创建类似下面的内容来获取posix路径,然后将其转换为别名。
set appDisplayName to "HS Extract"
set posixPath to item 1 of paragraphs of (do shell script "mdfind \"kMDItemContentType == 'com.apple.application-bundle' && kMDItemDisplayName == " & quoted form of appDisplayName & "\"")
set thePath to (POSIX file posixPath) as alias
注意:您在jackjr300的帖子评论中提到了套件ID。包标识符具有kMDItemCFBundleIdentifier元数据属性。因此,如果kMDItemContentType和kMDItemDisplayName的组合不起作用(如我的示例代码中所示),那么您可以尝试使用kMDItemCFBundleIdentifier和kMDItemDisplayName。
答案 1 :(得分:1)
要不打开应用程序:使用 Finder 获取路径,这需要应用程序的包标识符。
set bundlId to id of application "HS Extract"
tell application "Finder" to set thePath to (application file id bundlId) as alias
或者您可以使用 NSWorkspace 方法获取路径,这不需要标识符
do shell script "/usr/bin/python -c 'from AppKit import NSWorkspace; print NSWorkspace.sharedWorkspace().fullPathForApplication_(\"HS Extract\")'"
set thePath to the result as POSIX file as alias
答案 2 :(得分:0)
如果要将其设置为字符串,那么,如果需要启动它,则强制转换为别名。
Set thePath to (choose file as string)
--gives you path string
您可以在变量中使用该字符串,但请使用
alias thePath
如果你需要。
答案 3 :(得分:0)
我更喜欢@ jackjr300的答案,但如果这个脚本供私人使用,property
似乎有效:
property appPath : path to application "HS Extract"
display dialog appPath as string
仅在编译脚本时启动应用程序。请注意,该属性为alias。
该脚本将跟踪原始HS Extract
,即使它稍后重命名为其他内容。