“某些脚本”不允许小牛队的辅助访问错误

时间:2013-10-28 15:59:06

标签: applescript

我有一个脚本用于在多显示器设置上布置窗口。 升级到Mavericks后,我收到一个错误:

Organize Windows is not allowed assistive access.

检查Apple支持后,我发现:http://support.apple.com/kb/HT5914 我按照那里描述的步骤,签署了applet,但没有取得多大成功。错误仍然存​​在。

首先,第二个提示只会在脚本作为应用程序导出并放在/ Applications中时发生,如果我将它放在Documents中(也像app一样捆绑),例如它不会弹出。

所有小程序在显示时都显示为“小程序”中的“applet”(由于它们有标识符,因此很奇怪)。

是否有人在运行此类脚本时取得了成功?有没有办法全局禁用安全检查? (我猜不是,但值得一提)

以下是脚本,它只是启动了几个应用程序并将它们放在屏幕上:

#Query desktop area
tell application "Finder"
    set displayAreaDimensions to bounds of window of desktop
    set widthOfDisplayArea to item 3 of displayAreaDimensions
    set heightOfDisplayArea to item 4 of displayAreaDimensions
end tell

tell application "System Events" to tell process "Dock"
    set dockPosition to position in list 1
    set dockDimensions to size in list 1
    set heightOfDock to item 2 of dockDimensions
    set positionOfDock to item 2 of dockPosition
end tell

# Space between windows
set padding to 7

# This assumes that the Apple Cinema Display 27" is to the right
# of the Macbook Pro
set idea_w to 1600
set idea_h to 1440
set idea_base_x to 1680

set iterm_w to 2560 - idea_w - padding
set iterm_h to 1000
set iterm_base_x to idea_base_x + idea_w + padding

#If we're in a single monitor configuration
if widthOfDisplayArea is 1680 and heightOfDisplayArea is 1050 then
    # Override sizes
    set idea_base_x to 0
    set iterm_base_x to 0
    set idea_w to widthOfDisplayArea
    set idea_h to (heightOfDisplayArea - heightOfDock)
    set iterm_w to 1024
    set iterm_h to (heightOfDisplayArea - heightOfDock)
end if

checkRunning("IntelliJ IDEA 11", 10)
checkRunning("iTerm", 0)

placeWindow("IntelliJ IDEA", idea_base_x, 0, idea_w, idea_h)
placeWindow("iTerm", iterm_base_x, 0, iterm_w, iterm_h)

#Helper to launch as necessary
on checkRunning(theName, theDelay)
    if application theName is not running then
        tell application theName to activate
        delay theDelay
    end if
end checkRunning

on placeWindow(theProcess, x, y, w, h)
    tell application "System Events" to tell process theProcess
        set allWindows to (every window)
        repeat with aWindow in allWindows
            set position of aWindow to {x, y}
            set size of aWindow to {w, h}
        end repeat
    end tell
end placeWindow

2 个答案:

答案 0 :(得分:6)

我遇到的问题与我编写的用于处理轻微音频故障的脚本应用程序完全相同。我将它设置为在启动时启动,允许它在辅助访问中,并按照Apple支持上的标识进行签名,并且它仍然在每次启动时都给我错误。

最终为我修复的是将脚本代码复制并粘贴到一个新的脚本文件中,再次将其另存为一个应用程序但使用不同的名称,并在我运行它之前对其进行签名。当我最终运行它时,它问我是否想在Assistive Access中允许它,我做了,然后我将它设置为像之前一样启动。我刚刚重启,它运行没有任何问题。

答案 1 :(得分:1)

Red Five的答案很棒,但还有很多事情需要注意。

任何时候编辑脚本以编辑辅助访问功能的使用,签名&重新允许辅助访问仅适用于脚本中辅助访问功能的预先使用。辅助访问功能的新使用将产生“XYZ不允许辅助访问”。错误。此时,将脚本内容复制到具有不同名称的新脚本似乎是使整个脚本能够使用辅助访问功能的唯一方法。其他不涉及辅助访问功能的编辑将需要重新允许辅助访问,而您无需复制脚本。这使得调试辅助访问功能相当麻烦。

值得注意的是,如果您将代码包装在try块中,您将看不到“XYZ不允许辅助访问”。错误,所以为了调试,你应该注释掉你的try / end-try行。

可能有办法规避对此的需求,例如删除&重新申请代码的签名,但我没有费心去解决这个问题。