返回 DeepSeek-Reasonix
WINDOWS_APP_IDENTITY.zh-CN.md
根目录 / docs / WINDOWS_APP_IDENTITY.zh-CN.md
1 # Windows 应用身份
2
3 Reasonix Desktop 的 Electron 窗口、launcher、Go 桌面进程、快捷方式和通知统一使用
4 不随版本变化的 AppUserModelID `io.reasonix.desktop`,通知显示名称仍为 `Reasonix`。
5 它与 Reasonix Studio 的 `io.reasonix.studio`、旧 Tauri 桌面端的
6 `dev.reasonix.desktop` 分离。Wails Studio v2.10.0 和旧 Reasonix Desktop 曾共用
7 `Reasonix`,新版 Desktop 不再使用这个共享身份。
8
9 ## 安装与升级
10
11 使用安装根目录的 `Reasonix.exe` 打开桌面端;`reasonix-cli.exe` 是独立的命令行入口。
12 新安装和解压到空目录的 ZIP 只提供这个 GUI 入口。已有安装原本存在的
13 `reasonix-launcher.exe` 会保留,且不设置强制删除期限,以兼容旧固定项、自定义快捷方式
14 和脚本。受控升级会用同一份已验证启动器字节更新两个名字。`versions/` 中的程序,
15 包括 Electron 的 `app/Reasonix.exe`,仍是内部组件。
16
17 在任何 Electron 窗口显示前,Desktop 会在永久 launcher 存在时,将窗口的重新启动
18 命令和图标优先设为 `Reasonix.exe`,必要时回退到旧 launcher。新建任务栏固定项因此不会依赖版本目录内的 Electron 程序,
19 也不会依赖启动时临时传入的服务路径环境变量。
20
21 安装器在启动 Desktop 前,为刚创建的准确快捷方式路径设置身份。它调用已安装的
22 launcher 维护命令 `--repair-shortcuts <绝对.lnk路径...>`;该命令只修复已有且属于
23 本安装的链接,随后退出,不创建窗口、不启动服务或旧版迁移器。
24
25 正常启动 launcher 和桌面进程时,也会修复安装目录、个人及公共桌面、个人及公共
26 开始菜单 Programs 目录(含 Reasonix 子目录),以及当前用户任务栏固定目录内名称
27 以 Reasonix 开头的已有链接。名称本身不能
28 证明归属:解析后的目标必须是当前安装内可识别的入口,指向外部的目录联接不被接受。
29
30 归属已确认且身份为空或旧 `Reasonix` 的链接会采用新身份。已经使用新身份的链接,
31 仍可修复过期的目标和图标。明确标注 Studio、Tauri 或未知身份的链接,即便名称为
32 Reasonix 也会保留原样;其他独立安装不会被修改。
33
34 标准入口 `Reasonix.exe` 存在时,指向旧 `reasonix-launcher.exe`、
35 `versions/<版本>/reasonix-desktop.exe`、`versions/<版本>/app/Reasonix.exe` 或平铺的 `app/Reasonix.exe`
36 的链接会迁回永久入口,之后删除旧版本目录也不会让快捷方式失效。修复保留启动参数、
37 描述、窗口显示状态、自定义图标和自定义工作目录;仅在工作目录为空或指向被迁移程序
38 的旧目录时,才改为安装根目录。安装器修复已有链接,不通过重建覆盖其属性。
39 只有旧 launcher 存在时继续使用这个有效入口,不生成失效链接。
40 仍在使用的平铺 Go 安装保留其有效 Go 入口。
41
42 无法读取或写入的链接会记录警告,留待后续启动重试;进程不会退回共享旧身份。
43 Windows Explorer 可能保留固定项缓存;若链接修复后仍显示为单独图标,可取消固定,
44 从永久 launcher 启动 Desktop 后重新固定。
45
46 ## 共存与回退
47
48 签名更新载荷和 `/REASONIXSTAGE=1` 仍包含 `reasonix-launcher.exe`,因为已经安装的
49 旧更新器依赖该名称。安装后的布局单独决定:旧更新器可以直接升级,也可能继续生成
50 两个入口;新更新器保留已有旧入口,但不会在单入口安装中额外创建它。
51 `current.json` schema 1、`versioned-v1` 和签名载荷 schema 均不变。
52
53 便携 ZIP 应解压到新目录,或使用应用内更新。手工覆盖解压会保留旧文件,且不提供
54 事务安装保障;残留旧 launcher 可能仍是上一版字节,后续受控更新会同步更新。
55 若快捷方式或脚本可能引用它,不要为了节省空间自行删除。`current.json` 损坏时,
56 应使用完整安装器修复,不要把快捷方式改指向保留的旧版本。
57
58 升级通过既有完整发布单元机制同步交付 launcher、Electron 和 Go 二进制。
59 回退须恢复完整旧版本。旧 launcher 或旧桌面端可能恢复旧快捷方式身份,再次完整
60 升级后会重新修复自有链接;不同版本二进制混用不属于身份兼容保证。
61
62 旧 `Reasonix` 通知注册和通知历史不删除、不迁移,因为已安装的 Studio 仍可能使用它们。
63 新版 Desktop 通知使用自己的注册。绑定于旧身份的 Windows 通知偏好不会复制到新身份。
64
65 Studio 自身 Electron 运行时和通知身份的统一单列后续修复。Desktop 不修改 Studio
66 文件,不自动升级或卸载 Studio。
67
68 ## 合并前验证
69
70 运行 Windows 原生应用身份、launcher、通知测试,Electron 类型检查与测试,以及安装器
71 打包检查。源码检查与模拟调用不能证明 Explorer 最终的任务栏分组行为。
72
73 在 Windows 11 上,分别将候选版本与 Studio v2.10.0、当前 Studio 版本同时运行。
74 使用独立测试安装与数据目录,覆盖首次安装、旧固定项升级、两种启动顺序、固定与取消
75 固定、从各自固定项重启、最小化与恢复、通知来源隔离,以及删除旧 Desktop 版本目录后
76 启动。两款产品必须独立分组并启动正确应用;记录实际构建版本,以及安装版和便携版
77 是否完成验证。
78
78 lines MARKDOWN