Skip to content

feat(plugin): 支持三态进程权限调用与声明式动作参数编辑 - #176

Merged
ztzpro merged 1 commit into
mainfrom
feat
Sep 30, 2026
Merged

ztzpro merged 1 commit into
mainfrom
feat

Conversation

@ztzpro

@ztzpro ztzpro commented Sep 30, 2026

Copy link
Copy Markdown
Member

feat(plugin): 支持三态进程权限调用与声明式动作参数编辑

改动说明

  • 为宿主的程序启动、命令运行和 Shell 工具调用提供统一的三态权限:
    • Default:保持对应功能原有的默认行为。
    • Administrator:请求以管理员权限启动。
    • StandardUser:通过普通用户桌面 Shell 启动。
  • 显式权限失败或授权取消时,不自动改用其他权限重试。
  • 共用底层启动机制,保留终端选择、启动参数、工作目录和窗口显示选项。
  • 降权调用前检查桌面 Shell 令牌,无法确认其为非管理员上下文时拒绝调用。
  • 为新的启动接口检查 Process 能力,旧接口的权限契约和签名保持不变。

SDK 与插件边界

  • 将 SDK 契约扩展至 1.8,新增 ProcessLaunchMode、LaunchWithMode、RunWithMode 和 InvokeWithMode。
  • 保留 SDK 程序集身份;兼容默认接口实现仅转发 Default,未实现显式模式的旧适配器会明确拒绝请求。
  • 插件负责权限选择、参数声明、解析和校验;宿主负责具体启动机制。
  • 不新增 HostActionFields 或宿主裸配置字段,也不在宿主中识别 launchMode 等插件私有参数键。
  • 增加 FallbackParameterKey 与 FallbackValueMap,由插件声明通用旧值回填规则;已保存的新值优先,回填不自动写盘。

UI 与生命周期

  • 在一级动作编辑区和二级动作编辑器中复用 PluginParameterForm,渲染插件声明的附加参数。
  • 使用既有 Enum 参数控件承载三态选项,不为权限选择新增专用表单。
  • 新版插件未预加载时,编辑当前认领动作可按需取得参数声明,不修改启用或预加载偏好,也不批量加载其他插件。
  • 参数校验仍保持只读,不触发惰性加载。
  • 编辑继承动作时写入本地覆盖,避免修改全局动作。
  • 重建和关闭表单时释放字段引用及订阅,二级动作保存继续使用统一参数校验入口。

兼容性与限制

  • 主程序发布版本、界面版本占位文本和安装脚本版本保持 1.8.0-beta.4,本 PR 不进行 beta.5 版本提升或发布。
  • SDK API 1.8 属于本次功能契约变更,不等同于提升主程序发布版本。
  • 三态选项需要插件提供对应参数声明;旧版插件不会自动出现新选项。
  • 配套三个插件的生产清单目前要求最低宿主 1.8.0-beta.5,因此在发布版本同步前仍会被当前 beta.4 的版本门禁拒绝。
  • ShellTool 的显式权限仅支持 CMD、PowerShell、Windows Terminal、Git Bash、VS Code 启动;不适用于剪贴板、回收站等非进程动词。
  • 打包应用激活不支持管理员模式;启动模式不是插件沙箱,也不阻止目标应用自行提权或复用已有实例。

- 将 SDK 契约扩展至 1.8,新增 ProcessLaunchMode 和三个显式权限调用入口,保留旧接口与 SDK 程序集身份
- 统一进程启动机制,支持默认、管理员和普通用户三态,显式权限失败或授权取消时不自动回退
- 为普通用户启动增加桌面 Shell 令牌检查,保留启动参数、工作目录和窗口显示选项
- 为新的启动接口落实 Process 能力门禁,并正确传递宿主启动失败结果
- 在一级、二级动作编辑界面渲染插件声明的附加参数,通过 ExtensionData 保存,不识别插件私有权限参数键
- 增加通用旧值回填规则,支持旧 Launch 配置兼容,并避免打开表单时自动写盘
- 编辑认领动作时仅按需激活当前已启用插件,不改变启用或预加载偏好,参数校验仍不触发加载
@ztzpro
ztzpro merged commit d4ecc8c into main Sep 30, 2026
1 check passed
@ztzpro
ztzpro deleted the feat branch September 30, 2026 08:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant