我需要在应用程序首次运行步骤中运行脚本,以从先前版本中删除一些旧组件。通常这些组件安装在$ HOME / Library或/ Library中,脚本可以简单地将它们移动到垃圾箱。
问题是,如果用户不是管理员,并且组件位于global / Library中,则脚本需要以管理员身份进行身份验证,否则将失败。我当前的脚本使用AppleScript,但令我惊讶的是,我找不到在脚本中间成为管理员用户的方法。
'do shell script'foo'with administrator privileges'命令,但总是进行身份验证,并且在AppleScript中表达我想要的步骤比使用shell更容易,但并非不可能。
目前,我正面临着尝试在AppleScript中移动文件,捕获移动失败,然后使用身份验证的shell脚本使用'mv'移动文件。这看起来非常麻烦,所以我该怎样做才能让事情变得更整洁?
答案 0 :(得分:2)
我写它是为了使用“do shell script”。首先,我尝试没有管理员权限 - 如果返回错误,我会尝试使用管理员权限。这样,如果不需要用户,则不会提示用户输入管理员凭据。
答案 1 :(得分:0)
我认为您可以为该命令使用sudo前缀,该命令在您上次使用后重新进行身份验证1分钟。所以,例如,mv / something / something就是sudo mv / something / something