我们已经发布了几个不同版本的应用程序。它们有相似的名称——Foo Basic、Foo Deluxe、Foo Retro等。相似但不同的包标识符也一样。(这不是我的主意!)有些用户安装了多个这些应用程序,但只能运行一个。
所有应用程序都支持相同的 AppleScript 字典。我需要一个 AppleScript 来编写我们应用程序当前运行的版本来执行任务。我怎样才能做到这一点?
我们已经发布了几个不同版本的应用程序。它们有相似的名称——Foo Basic、Foo Deluxe、Foo Retro等。相似但不同的包标识符也一样。(这不是我的主意!)有些用户安装了多个这些应用程序,但只能运行一个。
所有应用程序都支持相同的 AppleScript 字典。我需要一个 AppleScript 来编写我们应用程序当前运行的版本来执行任务。我怎样才能做到这一点?
我让它工作了。它需要几个部分:
processes
ofSystem Events
或 else来执行此操作do shell script "ps …"
,您认为在您的情况下会更可靠。这是一些代码。我正在编写的脚本还没有使用系统事件,所以为了让新用户免于访问系统偏好设置的痛苦,我选择使用 /bin/ps 来代替......</p>
set appName to runningAppWithBaseName("Foo")
using terms from application "Foo Deluxe" -- an app on your Mac
tell application appName
(* whatever code you want here *)
end tell
end using terms from
on runningAppWithBaseName(baseName)
set command to "/bin/ps -eo args | grep " & baseName & " | grep -v grep"
(* The "grep -v grep" is to exclude the grep process itself from the results. *)
try
set fullPathOfRunningApp to do shell script command
end try
(* Here, given the fullPathOfRunningApp and your list of candidate app names, *)
(* insert code to determine the name of the running app. *)
return nameOfRunningApp
end runningAppWithBaseName