苹果系统。使用admin priveleges替换Shared文件夹中的应用程序

时间:2017-10-30 14:28:32

标签: swift macos cocoa applescript macos-high-sierra

我们的应用程序存储在/Users/Shared/OurAppData/OurApp.app中。 其中一个原因是强制用户使用启动器。

但是,现在我们已经遇到了问题,当我们想要通过启动器更新我们的应用程序时(我们下载zip文件,提取并希望用新的应用程序替换我们的应用程序)

try FileManager.default.replaceItemAt(URL(fileURLWithPath : Paths.ourAppPath) , withItemAt: extractedURL)
  

"您无权将文件“OurApp”保存在“OurApp数据”文件夹中。"

我的问题是 - 有办法处理这种情况吗? 我想推广用户登录和密码权限的最佳解决方案,并替换该文件?我想这是Swift范围之外的东西,可能是AppleScript,甚至是.sh。

请帮助。

由于

1 个答案:

答案 0 :(得分:0)

我建议您查看用于更新应用程序的Sparkle框架。

Sparkle处理检查是否有更新,下载更新,如果需要请求管理员密码,以及在更新后清理下载的文件。

对于大多数应用程序来说,将新版本存档为zip存档就足够了。

但也可以使用帮助应用程序或主应用程序包 之前的代理更新应用程序

这可以使用安装程序包*.pkg完成。如果您熟悉Sparkle,则引用here的“自动安装”将仅显示Sparkle UI。在后台,它将使用macOS的内置命令行安装程序/usr/sbin/installer

在大多数情况下,与面向用户的安装程序和更新具有相同的.pkg是有意义的,这不是必需的。

如果你的应用程序是沙箱,那么框架有几个分支。