Dan Delivers

项目案例

个人项目 · Windows 应用

AutoDark:Windows 主题自动切换,已上架 Microsoft Store。

随日出日落自动切换 Windows 11 浅色和深色模式。由 Danilo Stoletovic 开发并发布至 Microsoft Store,一款专注于开与关的小工具。

应用

  • AutoDark 应用图标
  1. 问题

    多年来,我一直想让 Windows 跟着日光切换模式。试过的替代方案却带来了我并不需要的复杂度和后台活动。一个简单的 Windows 功能,不该靠复杂的软件来实现。我想要的是一个开关,不是再给自己找个业余爱好。

  2. 解决方案

    我用 .NET 开发了一款原生 Windows 应用,界面只有简洁的开关。AutoDark 根据 Windows 定位或手动输入的坐标计算日出日落,白天用浅色模式,晚上用深色模式,并将定时执行交给 Windows Task Scheduler。关闭窗口就会退出应用;关闭自动化则会移除任务,并恢复之前保存的主题设置。

  3. 小工具,就专心做小事

    功能专一、后台资源占用低,是设计时的约束条件。没有托盘图标,也没有常驻服务:Windows 只在需要时启动短暂执行。无需账号,没有遥测,也没有迷宫一样的设置。这些是架构选择,不是性能基准测试结论。

  4. 一打包,规则就变了

    与 Windows 主题集成,必须考虑 MSIX 的行为差异。未打包的应用仅对注册表做小范围修改;当前的打包版本则通过 Windows Theme Manager 应用复制后的主题,切换浅色/深色模式,但不应用其中的壁纸、光标、图标和声音。这个接口没有公开文档,所以兼容性要靠测试,不能靠想当然。打包应用的计划任务使用不依赖版本号的执行别名,而不是带版本号的安装路径。

  5. 沙盒说:不行

    提交商店还意味着要处理功能权限限制。被拒绝的 unvirtualizedResources 功能权限已被移除。在另一次独立的 AppContainer 实验中,探测程序启动和 Theme Manager 初始化都成功了,但应用随包附带且可读取的主题时遭到拒绝,访问 Task Scheduler 也失败了。这只是一次技术探索,并非已发布的沙盒功能。当前生产版本的清单保留了 runFullTrust,用于以普通桌面用户身份执行,并不请求提升为管理员权限。这些本地实验既不能证明所有 Windows 构建版本上的行为,也不能确定商店当前上架的具体程序包版本。

  6. 交付也是工程的一部分

    我围绕应用的程序包标识、版本、资源和执行别名,完成了 MSIX 打包与验证,并准备好了供手动提交到 Partner Center 的程序包。商店页面信息、隐私和功能权限声明、权限限制、兼容性检查,都属于交付工作。光是构建成功,还不能把应用送到用户手里。

  7. 成果

    AutoDark 是一款可用的应用,已以 Danilo Stoletovic 为发布者名称在 Microsoft Store 公开上架。这就是里程碑:一款真正实用的工具,用户能通过公开分发渠道安装。上架商店代表获得分发渠道,不代表获得微软背书。

  8. 按钮反倒是最简单的部分

    一个小小的界面背后,可能藏着大量平台适配工作。打包会改变执行行为,权限模型可能直接挡住核心功能,分发也有自己的要求。心得就是:交付软件不只是写代码,还包括兼容性、打包,以及真正把它交到用户手里。

从 Microsoft Store 获取 AutoDark(在新标签页中打开)

以 Danilo Stoletovic 的名义发布于 Microsoft Store。

亲自看看

相关服务: Web 应用与 AI 集成

我的技术栈

样样都会,没一样精。
照样把整套东西他妈的做完上线

  • React
  • TypeScript
  • Node.js
  • Python
  • Kotlin
  • Flutter
  • C#
  • Docker
  • Linux
  • Cloudflare
  • Vercel

遇到了类似的问题?