我们的应用程序存储在/Users/Shared/OurAppData/OurApp.app中。 其中一个原因是强制用户使用启动器。
但是,现在我们已经遇到了问题,当我们想要通过启动器更新我们的应用程序时(我们下载zip文件,提取并希望用新的应用程序替换我们的应用程序)
try FileManager.default.replaceItemAt(URL(fileURLWithPath : Paths.ourAppPath) , withItemAt: extractedURL)
"您无权将文件“OurApp”保存在“OurApp数据”文件夹中。"
我的问题是 - 有办法处理这种情况吗? 我想推广用户登录和密码权限的最佳解决方案,并替换该文件?我想这是Swift范围之外的东西,可能是AppleScript,甚至是.sh。
请帮助。
由于
答案 0 :(得分:0)
我建议您查看用于更新应用程序的Sparkle框架。
Sparkle处理检查是否有更新,下载更新,如果需要请求管理员密码,以及在更新后清理下载的文件。
对于大多数应用程序来说,将新版本存档为zip存档就足够了。
但也可以使用帮助应用程序或主应用程序包 之前的代理更新应用程序。
这可以使用安装程序包*.pkg
完成。如果您熟悉Sparkle,则引用here的“自动安装”将仅显示Sparkle UI。在后台,它将使用macOS的内置命令行安装程序/usr/sbin/installer
。
在大多数情况下,与面向用户的安装程序和更新具有相同的.pkg
是有意义的,这不是必需的。
如果你的应用程序是沙箱,那么框架有几个分支。