LaunchAgent 脚本在用户输入时停止 window OS X Safari

LaunchAgent Script stops at user input window OS X Safari

我正在尝试为极端新手计算机用户设置 Mac,以便除他们的用户帐户外一切都准备就绪。

问题在于,如果没有访问用户帐户的权限,很难安装一些东西,例如 Safari 扩展。我已经 Chrome 和 Firefox 设置 - 我想为他们安装一些基础知识,甚至在他们第一次加载时单击安装按钮也会让人们感到困惑,我希望它完全放手。

我正在尝试安装 Adblocker。到目前为止,我得到它以便脚本在终端 运行 时完美运行,但是当 运行 作为 LaunchAgent 时,它在需要用户输入的 Safari 上获得安装扩展 window 并停止。

它不应该停止,因为最初我让 AppleScript 单击菜单然后我决定在键盘上启用完整的选项卡控制并让 cliclick 按下选项卡和 space(用户可以)也安装。

正如我所提到的,运行 作为一个脚本,它工作得很好,但由于某种原因,当扩展安装 window 出现时,当 Launchagent 运行 在登录时脚本停止运行.

这是一个错误,还是一个极端的安全功能?如果 windows 弹出,我是否必须调整我的 plist 以告诉 Launchagent 不要更改脚本的工作方式,我是否需要在我的脚本中添加更多内容以使其在 运行 启动时表现不同?

这是主要部分,改编自网上的比特

# HARDCODED VALUE FOR "PATHTOEXTENSION" IS SET HERE
pathToExtension="/ext/safari.safariextz"

# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 4 AND, IF SO, ASSIGN TO     "PATHTOEXTENSION"
if [ "" != "" ] && [ "$pathToExtension" == "" ];then
pathToExtension=
fi

# Error if variable appName is empty
if [ "$pathToExtension" == "" ]; then
    echo "Error:  No value was specified for the pathToExtension variable..."
    exit 1
fi

# Turn on full tab control for keyboard
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3

### Launch Safari if not open
osascript -e 'tell application "Safari"
activate
end tell'

### Prompt the user to install the extension given @ 
osascript -e 'tell application "Safari" 
    open "'"$pathToExtension"'"
tell application "System Events"
            tell process "Safari"
                set frontmost to true
            end tell
        end tell
end tell'

#Run cliclick to press tab and space on the keyboard to install extension
sleep 0.7s
cliclick kp:tab kp:space

### Close Safari
osascript -e 'tell application "System Events"
if ((name of processes) contains "Safari") then
    tell application "Safari" to quit
end if
end tell'

### Open Getting Started PDF
osascript -e 'tell application "Preview"
open "/Applications/Tutorials/Quick Start Guide.pdf"
end tell'

### Cleanup - delete launch agent so it doesn't run on next boot
rm ~/Library/LaunchAgents/com.ext.install.plist

### Exit silently, as will error if exists & if times out for whatever reason
exit 0

运行 脚本的 plist 是这样的...

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.ext.install</string>
<key>Nice</key>
<integer>20</integer>
<key>ProcessType</key>
<string>Interactive</string>
<key>ProgramArguments</key>
<array>
    <string>/Users/Shared/install-ext.command</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/com.ext.install.err</string>
<key>StandardOutPath</key>
<string>/tmp/com.rxt.install.out</string>
</dict>
</plist>

顺便说一句,日志中没有报告错误。希望有人能提供一些见解。

正在保存:

安装-ext.command

# HARDCODED VALUE FOR "PATHTOEXTENSION" IS SET HERE
pathToExtension="/Users/Shared/ext/wpa.safariextz"

# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 4 AND, IF SO, ASSIGN TO     "PATHTOEXTENSION"
if [ "" != "" ] && [ "$pathToExtension" == "" ];then
pathToExtension=
fi

# Error if variable appName is empty
if [ "$pathToExtension" == "" ]; then
    echo "Error:  No value was specified for the pathToExtension variable..."
    exit 1
fi
### Prompt the user to install the extension given @ 
osascript -e 'tell application "Safari"
activate 
    open "'"$pathToExtension"'"

end tell
delay 2
tell application "System Events"
    tell process "Safari"
        click button "Install" of window 1

    end tell
end tell'

### Exit silently, as will error if exists & if times out for whatever reason
exit 0

我告诉 Safari 单击“安装”按钮。而不是使用第三方应用程序。

修改文件使其成为可执行文件。

按原样使用您的 LaunchAgent

手动加载 LaunchAgent 运行 代码。但是果然也得到了提示授权install-ext.command控制电脑

所以我必须授权。那先。

然后 LaunchAgent 的任何后续加载都按预期工作,包括在登录时。