项目案例
个人项目 · Windows 应用
AutoDark:Windows 主题自动切换,已上架 Microsoft Store。
随日出日落自动切换 Windows 11 浅色和深色模式。由 Danilo Stoletovic 开发并发布至 Microsoft Store,一款专注于开与关的小工具。
应用
问题
多年来,我一直想让 Windows 跟着日光切换模式。试过的替代方案却带来了我并不需要的复杂度和后台活动。一个简单的 Windows 功能,不该靠复杂的软件来实现。我想要的是一个开关,不是再给自己找个业余爱好。
解决方案
我用 .NET 开发了一款原生 Windows 应用,界面只有简洁的开关。AutoDark 根据 Windows 定位或手动输入的坐标计算日出日落,白天用浅色模式,晚上用深色模式,并将定时执行交给 Windows Task Scheduler。关闭窗口就会退出应用;关闭自动化则会移除任务,并恢复之前保存的主题设置。
小工具,就专心做小事
功能专一、后台资源占用低,是设计时的约束条件。没有托盘图标,也没有常驻服务:Windows 只在需要时启动短暂执行。无需账号,没有遥测,也没有迷宫一样的设置。这些是架构选择,不是性能基准测试结论。
一打包,规则就变了
与 Windows 主题集成,必须考虑 MSIX 的行为差异。未打包的应用仅对注册表做小范围修改;当前的打包版本则通过 Windows Theme Manager 应用复制后的主题,切换浅色/深色模式,但不应用其中的壁纸、光标、图标和声音。这个接口没有公开文档,所以兼容性要靠测试,不能靠想当然。打包应用的计划任务使用不依赖版本号的执行别名,而不是带版本号的安装路径。
沙盒说:不行
提交商店还意味着要处理功能权限限制。被拒绝的 unvirtualizedResources 功能权限已被移除。在另一次独立的 AppContainer 实验中,探测程序启动和 Theme Manager 初始化都成功了,但应用随包附带且可读取的主题时遭到拒绝,访问 Task Scheduler 也失败了。这只是一次技术探索,并非已发布的沙盒功能。当前生产版本的清单保留了 runFullTrust,用于以普通桌面用户身份执行,并不请求提升为管理员权限。这些本地实验既不能证明所有 Windows 构建版本上的行为,也不能确定商店当前上架的具体程序包版本。
交付也是工程的一部分
我围绕应用的程序包标识、版本、资源和执行别名,完成了 MSIX 打包与验证,并准备好了供手动提交到 Partner Center 的程序包。商店页面信息、隐私和功能权限声明、权限限制、兼容性检查,都属于交付工作。光是构建成功,还不能把应用送到用户手里。
成果
AutoDark 是一款可用的应用,已以 Danilo Stoletovic 为发布者名称在 Microsoft Store 公开上架。这就是里程碑:一款真正实用的工具,用户能通过公开分发渠道安装。上架商店代表获得分发渠道,不代表获得微软背书。
按钮反倒是最简单的部分
一个小小的界面背后,可能藏着大量平台适配工作。打包会改变执行行为,权限模型可能直接挡住核心功能,分发也有自己的要求。心得就是:交付软件不只是写代码,还包括兼容性、打包,以及真正把它交到用户手里。
亲自看看
相关服务: Web 应用与 AI 集成
我的技术栈
样样都会,没一样精。
照样把整套东西他妈的做完上线