Skip to content

SunStarter 发版记录 ​

Rust 原生 Windows 文件检索启动器:直读 NTFS 索引,Everything 式检索 + Listary 式交互

当前版本1.3.1
最近更新2026-10-20
Git 标签1.3.1(另有 1.3.0、1.2.0、1.1.2、1.1.1、1.1.0、1.0.2、1.0.1、1.0.0、v0.1.0)
状态已发布 1.3.1(提供安装包与便携包下载;仓库暂未公开)
平台Windows 10/11(免提权;检索依赖 Everything,未装时按设置自动下载安装)
仓库私有仓库(暂未公开)

1.3.1 — 2026-10-20 ​

卸载前先结束程序,修「安装目录残留 exe」

  • 用户卸载后发现 C:\Program Files\SunStarter\sunstarter.exe 还在:Inno 的 CloseApplications 对托盘常驻程序不一定生效,卸载器删完其它文件后 exe 仍被占用,留下一个没有卸载器的空壳目录
  • windows.iss 增加 [UninstallRun]:卸载前先 taskkill sunstarter.exe(以及旧版可能还在跑的 sunstarter-service.exe),再让 Inno 删目录
  • 便携版 uninstall.ps1 现在会真正删除程序目录(先停进程、移除自启;数据目录默认保留),删除动作延迟到脚本退出后执行;uninstall.cmd 先切到 %TEMP%,避免「目录是当前工作目录」导致 rmdir 失败
  • verify-installer.ps1 复现「程序运行中卸载」场景,断言进程结束且目录删干净
  • 本站验收:package.ps1 出 1.3.1 安装包与便携 zip → verify-package.ps1 → verify-installer.ps1(安装、运行中卸载、断言目录清空)

1.3.0 — 2026-10-20 ​

检索改接 Everything,应用搜索脱离索引,修热键焦点

为什么改:自研 NTFS 索引在真实机器上的检索质量与稳定性不如 Everything,用户反馈「搜索不到应用」「输入不跟手」「热键呼出后打不了字」。这次把检索链路整体换掉,而不是继续修补索引。

  • 新增 sunstarter-search:通过 Everything 官方 IPC(WM_COPYDATA + QUERY2)查询,一次拿回名称 / 路径 / 扩展名 / 大小 / 时间 / 属性;没装时按设置里的下载源自动下载并静默安装(默认官方 stable,可用 everything_download_url / SUNSTARTER_EVERYTHING_URL 指向镜像)
  • 应用搜索不再依赖索引:本地枚举开始菜单 / 桌面 .lnk、UWP AppsFolder 与常见系统功能白名单(控制面板、任务管理器、环境变量等),中文名与拼音都能直接匹配;与 Everything 返回的同名 .lnk 按路径去重
  • 修「热键呼出后输入框拿不到系统焦点」:前台判据改为 GetForegroundWindow,用 Alt 解锁 + AttachThreadInput + SetFocus 真正抢前台;看门狗按真实前台重试
  • 响应:查询防抖 200 ms → 30 ms,工作线程合并积压查询只跑最后一代
  • 删除自研索引 / 服务 / 管道的 6 个 crate 与相关验证脚本;打包只剩一个 sunstarter.exe,安装包不再注册服务

1.2.0 — 2026-10-13 ​

全屏下不再弹出来、对话框自动跟到最近目录,修「呼出后要先点一下才能打字」

  • 全屏 / 专注模式默认屏蔽呼出热键:判定先问系统(全屏独占 / 忙碌 / 放映 / 锁屏),判不出来再用几何兜底——铺满显示器且没有标题栏(只看矩形的话,副屏上最大化的窗口会让那块屏的热键全废);另加用户可配的进程黑名单与托盘里的「禁用呼出快捷键」(会话级、不持久化),不想屏蔽的人在设置里关掉即可。屏蔽是丢掉这一次触发(热键照旧注册),并记 热键被屏蔽 reason=…
  • 对话框自动跳转(Listary 的 Quick Switch):别的程序弹出打开 / 另存为时,自动跳到最近在 SunStarter 里打开过的目录。只跳这两类——「选择文件夹」按确认键可能是「选中并关闭」,猜错会把用户刚打开的框直接关掉;同一个对话框只跳一次,启动器开着时让路。提权程序的目标对话框受 UIPI 限制,界面会说明原因并给出做法(以管理员身份运行),不做自动提权
  • 修「热键呼出后要先点一下才能打字」:窗口是最上层、输入框也确实已聚焦,但 Windows 的前台是带锁的——别的程序正拿着前台时,后台进程申请前台会被忽略,键盘消息全进了那个程序。现在呼出后 600 ms 内反复确认真的拿到系统焦点(拿到就停),并记 启动器已激活 focused=true;顺带修掉「已存在但未激活」分支里先激活再读状态的竞态(那会让「再按一次收起」随机失效)
  • 验证:三条端到端脚本各自真跑——真起无边框全屏窗(新增 fullscreen-probe 探针)看热键是否被屏蔽、宿主探针弹真对话框并用系统 UIA 前后对比(跳转后能在对话框里读到 scripts\ 下的 17 个文件,跳转前一个都没有)、把前台交给记事本后不点任何地方用 Ctrl+V 粘贴剪贴板文本;判定与跳转规则另有单测;打包链路(release 构建 → package → verify-package)整包跑过

1.1.2 — 2026-10-08 ​

修两个「遮罩揭不开」的缺陷

  • 命令模式(输入 >)下列表被「正在搜索…」永久遮住:底栏明明写着「8 条命令」,用户却一条都看不见(search_started 在命令分支 return 前被无条件置位,而清它的是「结果到达」那条路,命令模式永远没有结果到达)
  • 查询出错时遮罩也不会揭开:现在错误路径同样清掉「搜索中」,不会再一直转圈
  • 顺带把发版约束写进仓库档案:版本号、标签、包三者的关系与检查项,避免再出「代码往前走、版本号没跟上」
  • 已知欠缺写成文档而不是留在聊天里:全屏/独占程序下屏蔽快捷键、已安装程序清单两条待办(见 docs/DESIGN.md §12),并改正了能力矩阵里一处「写着已做、代码里没有」的标注

1.1.1 — 2026-10-08 ​

搜索体验:把「还没查完」和「没结果」分开

  • 输入防抖 200 ms:连续键入不再逐字符触发查询
  • 慢查询期间不再显示「未搜索到」——查得慢和真没结果现在分得清
  • 这条路径补上可观测性,之后能直接看出慢在哪
  • 仓库忽略编辑器本地目录(.idea/、.vscode/)
  • 本机实测(1.1.1 发布版 + 便携模式 + 本地快照):搜 kernel 命中 351 条、2.9 ms 返回(显示前 100 条,底部提示「还有 92 条 · 在结果窗口中查看」);输入拼音首字母 wxt 直接命中中文文件名;预览面板文本按宽度换行且可滚动;主窗点「大小」表头就地重排并标注排序只对已取回的 351 条成立。

1.1.0 — 2026-10-08 ​

普通用户也能拉起索引服务

  • 运行时调用服务不再需要提权,只有「注册服务」那一次需要管理员
  • 新增按需提权的 >service 命令
  • 修掉「服务没启动 / 起不来也连不上」这条链:装完就启动、普通用户可拉起、卸载先停服务

1.0.1 — 2026-10-08 ​

  • 调试构建与发布版彻底分成两套身份(窗口标题 / 数据目录 / 单实例互斥体 / exe 属性),两套可同时运行、互不干扰,跑验证脚本不会顶掉正在用的实例
  • 连不上索引服务时把原因说出来:头部标「未连接索引服务」,提示条讲清那是什么、该怎么办;顺手清掉用户机器上已失效的旧快照
  • 文档提醒:要安装、要发给别人的只有 dist/ 里的产物,别去 target/ 里双击

1.0.0 — 2026-10-08 ​

第一个正式版:可以按标准方式分发了

  • 启动器:结果行三列对齐、常显滚动条、「更多」开出任务栏可见的结果窗口、100 条上限
  • 预览面板:文本长行换行 + 正文可滚动,加编码探测(BOM / GBK / UTF-16);图片直接解码预览
  • 应用搜索:UWP / MSIX 应用与文件同列;索引新增「系统目录」位,给结果降噪
  • 卡顿修复:ShellExecuteExW 挪到后台线程(不再卡住 UI 线程);Ctrl+Enter 打开所在目录不再等待 shell 异步通知
  • 完整应用图标:自绘 SVG → 多尺寸 .ico → exe 资源 / 任务栏 / 资源管理器 / 托盘
  • 打包分层:package.ps1 驱动(构建 → 组装载荷 → 平台后端),产物为便携目录、SunStarter-<版本>-win-x64.zip 与 Inno Setup 单文件 setup.exe(向导可选安装目录与数据目录、支持 /VERYSILENT 静默安装、带正规卸载器);打包时目标被占用会改名让位,不要求先停服务
  • 数据目录解析统一为一套规则:portable.txt(便携)→ 安装时选定的 data-dir.txt → %LOCALAPPDATA%\SunStarter

0.1.0 — 2026-09-24 ​

内部迭代版本(未公开发布)

  • 索引内核直接解析 NTFS 的 MFT / USN 日志建库,靠日志增量跟随文件变化
  • 索引以 SYSTEM 服务常驻,界面免提权;服务不可用时退回本地快照查询
  • 免边框启动器与全局热键(默认 Shift+Space),搜索命中高亮、层级收拢、主题可选
  • 右键菜单、预览面板、设置界面与便携模式落地
  • Open/Save 对话框跳转与 Everything 风格查询语法
  • 本机实测(便携模式 + 本地快照):搜索结果命中 1 条、耗时 0.5 ms,命中词高亮并带右侧预览面板

下载 ​

  • SunStarter-1.3.1-setup.exe —— 8.2 MB,Windows 10/11 单文件安装包:向导里可选安装目录与数据目录,支持 /VERYSILENT 静默安装,自带卸载器(卸载前先结束程序)(SHA256 cab40f30…88d2c8f9)
  • SunStarter-1.3.1-win-x64.zip —— 9.5 MB,便携包:解压即用,把 portable.txt.example 改名成 portable.txt 后数据落在程序旁,整包拷走就是搬家(SHA256 d00de691…9b990174)

未签名

这是个人项目、没有代码签名证书:安装包与 exe 首次运行可能被 SmartScreen 拦一下(「更多信息 → 仍要运行」即可),浏览器下载后也可能带「来自 Internet」标记,介意的话对目录跑一次 Get-ChildItem -Recurse | Unblock-File。

安装本身不需要管理员;1.3.x 不再注册索引服务。首次让 SunStarter 自动安装 Everything 时会弹一次 UAC,之后日常使用全程免提权。 仓库暂未公开,源码或定制需求可以邮件联系。