苹果系统。用管理员权限替换共享文件夹中的应用程序
macOS. Replace application in Shared folder with admin priveleges
我们的应用存储在 /Users/Shared/OurAppData/OurApp.app 中。
这样做的原因之一是强制用户使用启动器。
但是,现在我们遇到了问题,当我们想通过启动器更新我们的应用程序时(我们下载 zip 文件,解压缩它并希望用新的应用程序替换我们的应用程序)
try FileManager.default.replaceItemAt(URL(fileURLWithPath : Paths.ourAppPath) , withItemAt: extractedURL)
"You don’t have permission to save the file “OurApp” in the folder “ OurApp Data”."
我的问题是 - 有没有办法处理这种情况?
我想最好的解决方案是提示用户输入登录名和密码以获得权限,并替换该文件?我想这是 Swift 范围之外的东西,可能是 AppleScript,甚至是 .sh.
拜托,帮忙。
谢谢
我建议查看 Sparkle 更新应用程序的框架。
Sparkle 负责检查更新是否可用、下载更新、在需要时询问管理员密码以及在更新后清理下载的文件。
对于大多数应用程序来说,只需将新版本存档为 zip 存档就足够了。
但也可以使用辅助应用程序或主应用程序包外部的代理来更新应用程序。
这可以通过安装程序包 *.pkg
完成。如果您熟悉 Sparkle,"Automatic installation" 引用 here 只会显示 Sparkle UI。在后台,它将使用 macOS 的内置命令行安装程序,/usr/sbin/installer
.
在大多数情况下,与面向用户的安装程序和更新具有相同的 .pkg
是有意义的,这不是必需的。
如果您的应用程序是沙盒,则该框架有几个分支。
我们的应用存储在 /Users/Shared/OurAppData/OurApp.app 中。 这样做的原因之一是强制用户使用启动器。
但是,现在我们遇到了问题,当我们想通过启动器更新我们的应用程序时(我们下载 zip 文件,解压缩它并希望用新的应用程序替换我们的应用程序)
try FileManager.default.replaceItemAt(URL(fileURLWithPath : Paths.ourAppPath) , withItemAt: extractedURL)
"You don’t have permission to save the file “OurApp” in the folder “ OurApp Data”."
我的问题是 - 有没有办法处理这种情况? 我想最好的解决方案是提示用户输入登录名和密码以获得权限,并替换该文件?我想这是 Swift 范围之外的东西,可能是 AppleScript,甚至是 .sh.
拜托,帮忙。
谢谢
我建议查看 Sparkle 更新应用程序的框架。
Sparkle 负责检查更新是否可用、下载更新、在需要时询问管理员密码以及在更新后清理下载的文件。
对于大多数应用程序来说,只需将新版本存档为 zip 存档就足够了。
但也可以使用辅助应用程序或主应用程序包外部的代理来更新应用程序。
这可以通过安装程序包 *.pkg
完成。如果您熟悉 Sparkle,"Automatic installation" 引用 here 只会显示 Sparkle UI。在后台,它将使用 macOS 的内置命令行安装程序,/usr/sbin/installer
.
在大多数情况下,与面向用户的安装程序和更新具有相同的 .pkg
是有意义的,这不是必需的。
如果您的应用程序是沙盒,则该框架有几个分支。