LaunchDaemon协助


0

我有以下.sh脚本,这些脚本在下载后会从App Store删除Sierra。这适用于mac osx 10.10或10.11上的任何用户。

但是,是否可以有人添加代码,以便该应用程序(sierra.app)在开始下载后实际上就删除了,而不是当前完成下载时就删除了。

此外,osascript显示消息一旦删除就不会显示。我该如何工作?

这是脚本。

#!/bin/bash

Version=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)    

if [[ $Version -ge 12 ]]
then  
launchctl unload /Library/LaunchDaemons/net.infor.sierra.plist
rm -f /Library/LaunchDaemons/net.infor.sierra.plist
rm -f /usr/local/bin/sierra.sh
exit 0

else
rm -rf /Applications/Install\ macOS\ Sierra.app/
osascript -e 'tell app "System Events" to display dialog "macOS sierra is not allowed on computers at this time." with title "Technology Notice" buttons {"OK"} default button "OK" giving up after 30'
fi

这是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>net.infor.sierra.plist</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/sierra.sh</string>
</array>
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
    <key>/Applications/Install macOS Sierra.app/</key>
    <true/>
</dict>
</dict>
<key>OnDemand</key>
<true/>
</dict>
</plist>

不是答案,只是一个评论,但FWIW,而不是使用三个管道和三个实用程序来处理输出sw_vers,即sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2,只使用awk本身做的所有东西greptailcut正在做的,例如:Version=$(sw_vers | awk '{FS = "."};/ProductVersion/{print $2}')
user3439894

守护程序在没有GUI的情况下运行。代理可以连接到窗口服务器。
fd0

fd0创建测试脚本以创建名为Install macOS Sierra.app的目录时,为什么不仅会删除.app还会显示启动消息?
sql1 2013年

Answers:


1

并不是一个真正的答案,但可能暗示下一步的打算...

要更早地捕获它,您必须在下载文件夹中对其进行拦截。我想每个人的文件夹名称都会有所不同-我的位置在
/private/var/folders/nc/c83zpk8x7kd9qrxrd3nnbfym0000gn/C/com.apple.appstore

如果您通过以下方式启用调试菜单,则可以从App Store应用>调试>显示下载文件夹...中找到它:
defaults write com.apple.appstore ShowDebugMenu -bool true

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.