Damon Lu
Damon Lu
> 游戏无需迁移到 Application Support 目录。万一真有权限问题(App Sandbox 限制),也是迁移到 Containers 目录,但这种方式打包的 HMCL 没有该限制。 开启沙盒化使用 `Containers` 存放游戏,当然这不是说不行,只不过 HMCL 已经在使用 `Application Support` 这个目录了,官方启动器也会把游戏本体放在这个目录,说白了默认其实可以直接使用官方启动器的目录 `~/Library/Application Support/minecraft`,如果依旧希望分开也可以在已有的 `hmcl` 目录中存放游戏(例如 `~/Library/Application Support/hmcl/minecraft`),这样 HMCL 产生的文件也不会那么分散,如果要彻底卸载启动器也会方便一些,同时允许玩家自己在有读写权限地方创建新的游戏目录 虽然应用程序有权限在 App Bundle...
建议有关维护者将此问题转移到Discussion,此问题依旧需要进一步研究,毕竟macOS的GateKeeper、XProtect、隔离机制、TCC都不太好搞定(除非禁用系统完整性保护,否则连sudo都搞不定)
> > 建议有关维护者将此问题转移到Discussion,此问题依旧需要进一步研究,毕竟macOS的GateKeeper、XProtect、隔离机制、TCC都不太好搞定(除非禁用系统完整性保护,否则连sudo都搞不定) > > 禁用的话一大堆萌新会觉得 HMCL 是病毒要威胁计算机:-( macOS的权限限制过于严格导致的后果 😂,为了实现这一目标,并尽可能减少用户的误解,唯一能做的就是尽可能顺着macOS的“偏好”来进行开发
关于此问题我还意识到一个关键点:HMCL 本身可能无法更新整个 App Bundle(如果 `Resources` 目录变为只读,HMCL 本身也无法更新) 我目前有以下解决方法: ## 1. 只通过 Homebrew Cask 进行分发 > 此方案的实现的基础是 #4229 的完成 将 HMCL 以 `hmcl`、`hmcl-prerelease`、`hmcl-nightly` 三个包来分发不同的更新频道版本 但需要注意的是,Homebrew 即将收紧未签名的 Cask 安装,`--no-quarantine` 的移除让通过 Tap 添加的软件源也没法简单的绕过...
> 我认为可以在第一次启动时将 HMCL 本体移动或复制到 `Application Support` 目录中,更新时修改 `Application Support` 中的副本,这样(应该?)可以避免权限问题。 此方法不能实现对App Bundle本身的更新,若我要更新HMCLauncher for macOS以尝试同步HMCLauncher for Windows加入的新功能,可能依旧需要引入Sparkle,但两个不同的更新总有些膈应,是否有更好的解决方案?