Repository navigation
设置里的「更新」能用了:下载核对、关实例,交给命令行换上后重新打开管理器 - #115
Merged
Merged
Conversation
原文说 AUTO-MAS 调用 modavd update、按这里的更新源和 CDK 下载,两处都不对: AUTO-MAS 到 v5.8.0 还是用自己的更新器,更新源和 CDK 读它自己的设置。 改成写清这里只能检查新版本、用和不用 AUTO-MAS 各自怎么更新、这里的设置 管什么。按钮照旧不可用。
- 补全组件完成:先说可以新建实例了,再说用 AUTO-MAS 的可以去添加。 - 问题包没找到 AUTO-MAS:只请用 AUTO-MAS 的附上它的日志,不用的不用管 (管理器、命令行、summary.txt 三处);隐私说明里 AUTO-MAS 日志写成 找到它时才有;qemu 命令行读不到时不再说多半是 AUTO-MAS 以管理员运行。 - 复制配置信息:「AUTO-MAS 版本」「用的脚本」两行并成「怎么用的 (自己玩 / AUTO-MAS 及版本 / MAA、M9A 等脚本)」;没开实例时不再叫人 在 AUTO-MAS 里开着实例再双击运行。 - portBase 的建议写「默认值」,不写「和 AUTO-MAS 一样」;换包恢复失败的 提示先说下次更新时恢复。 对照旧脚本输出的测试照原来的做法,把这些有意改动的行列进对照表,基准文件不动。
所有语言都只用 ModAVD 这个名字:日志、报错、命令行帮助、问题包和配置信息的 标题都换掉,问题包文件名改成 ModAVD-问题信息-<时间>.zip。和中文相邻时加空格。 AUTO-MAS 只看错误码,不看消息文字,改名不影响对接。对照旧脚本输出的测试把 旧名字列进有意改动的对照表;对照 AUTO-MAS 原逻辑的 Python 参考和 jsonord 的 样例跟着换了文字,pycases.json 用 gen_pycases.py 重新生成。
管理器不能在自己运行时换掉自己,所以分三步: - 更新任务(kind update,根任务,独占)先下载、核对、暂存新版,实例照常开着; 已经是最新就到此为止。 - 正常关掉所有在运行的实例(不取消正在新建的,关不掉就失败)。 - 用 StartOrphan 启动根目录的 tools\modavd.exe update install --after-pid <管理器 pid> --reopen <管理器程序> --reopen-arg ...,管理器随后退出。 命令行等管理器退出、换上新版,把结果写进 .update\manager-result.json,再按 原来的参数重新打开管理器;换不上也照样打开,暂存的新版留着。新管理器启动时 读走这份结果,页面提示一次。tools\modavd.exe 不存在或版本和管理器不同时, 开任务前就拒绝。
- 关实例前先查:别的进程在跑这个根目录的 modavd(如 modavd mcp)、有实例正在 新建、暂存的版本不比装着的新,就一台都不关(审查 P2-2、P3-1)。 - 交给命令行后不再开新任务;退出前还有任务就取消并等它收尾(P2-1)。 - 启动命令行半秒后确认它还在,不在就不退出、报错(P3-3)。 - 新版要求的 AUTO-MAS 版本显示在设置和确认框里(P2-3)。 - 只在 Windows 上允许点「更新」(P3-5)。
# Conflicts: # internal/emu/launch.go
# Conflicts: # README.en.md # README.md # internal/ui/API.md
# Conflicts: # internal/adb/adb.go # internal/emu/start.go
…-button # Conflicts: # internal/ui/web/js/update.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
管理器「设置」里的「更新」按钮现在能用了。点了以后,管理器下载、核对新版,正常关掉在运行的实例,交给命令行换上新版,换好后自动重新打开管理器。
叠在 #111 上:#111 改了同一个
update.js的文字。先合 #111,这个 PR 的 diff 才只剩下面这些。为什么要交给命令行
管理器不能在自己运行时换掉自己(
update install发现ModAVD.exe在跑就什么都不动),所以分三步:kind是update,根任务,和别的任务互斥)。先下载、按清单核对、暂存好(同modavd update prepare,实例照常开着);已经是最新就到此为止。ModAVD.exe或tools\modavd.exe(比如modavd mcp);预检过了,再正常关掉所有在运行的实例(同
stop --all,不取消正在新建的)。host.StartOrphan启动根目录的tools\modavd.exe update install --after-pid <管理器 pid> --reopen <管理器程序> --reopen-arg ...,输出追加到logs\modavd-update.log。半秒后确认它还在跑,任务才算成功,之后不再接任何新任务。约 1.5 秒后管理器退出,页面窗口自己关掉。命令行这边:
.update\manager-result.json。--root,以及--port、--no-window、--dev)重新打开管理器。换不上(比如有程序占着)也照样重新打开,暂存的新版留着,下次不用重下。开任务前就拒绝的情况:
tools\modavd.exe;tools\modavd.exe的版本和管理器不一样(旧命令行不认新选项)。改了什么
internal/ui/update_apply.go(新):更新任务、关实例、交接、退出。ui.Options.Reopen由cmd/modavd-gui给。internal/ui/jobs.go:更新任务和别的任务互斥。backend加了StopTargets。internal/update/handoff.go(新):命令行写给管理器的结果文件。internal/cli:update install加--after-pid、--reopen、--reopen-arg,只能和install一起用,--reopen要完整路径。API.md、README:POST /api/update/apply、UpdateView的can_install、handoff,以及命令行新选项。测试
go vet在 Windows、darwin/arm64、linux/amd64 上都通过,go test ./...通过,update.js、actions.js过了node --check。update install换包前那同一套扫描,实测时换包那一步走过它。另审
另一个代理按整包更新的标准审了,结论是「能合」,没有 P0、P1。
modavd mcp(P2);required_automas(P2);ModAVD.exe的空档(P2);和 AUTO-MAS 的关系
AUTO-MAS 用它自己的更新器、自己的更新源和 CDK,这里不改它。
modavd update时一样。