v0.3.0 — English interface
The interface now follows your system language. Everything a user sees — item names and descriptions, the current/target values, check findings, manual follow-ups, dialogs, the exported HTML report — comes in English unless Windows is set to Chinese.
A few items still target Chinese users specifically (the Microsoft Pinyin IME switches); they simply won't apply otherwise.
How it's built
No .resx. The user-facing strings here are mostly whole sentences with interpolation — item descriptions, detection findings, manual steps — and a resource file would split them into several hundred keys where a missing translation or a mismatched format string fails silently at runtime. Both languages sit at the call site instead:
L.S("显示文件扩展名", "Show file extensions")and in XAML, {local:Loc Zh='检查项', En='Checks'}. One sentence is one edit, and a reviewer sees both languages on the same screen. The language is picked from CultureInfo.CurrentUICulture at startup.
Logs and internal exception messages stay in Chinese — they go to a log file and the reader is a developer.
Fixed along the way
- The "recommended" badge lost its green background. The
DataTriggercompared the displayed status text against the literal string 推荐, so the badge stopped working the moment the label was translated. It now binds a boolean instead. The same trap — UI logic comparing display text — is now written into the contributor rules. TaskCatalogcached shared words instatic readonlyfields, which are fixed at type initialization, so rebuilding the catalog in another language returned the old strings. They're properties now.- Randomly failing tests. The language flag is process-wide static, and xunit runs test classes in parallel by default — the localization tests would flip it to English while another class was asserting Chinese text. Parallelization is disabled for the assembly.
Also in this release
software.json gained name_en / note_en, so Chinese products show as WeChat, DingTalk and Feishu with English install notes. The repository now has an English README.
Install
Download both files, keep them in the same folder, and run WinHomestead.exe:
| File | Why |
|---|---|
WinHomestead.exe |
Single file, all dependencies embedded |
WinHomestead.exe.config |
Binding redirects and runtime declaration — it won't start without this |
Requires Windows 11 22H2 or later and an administrator account. No .NET install needed — it runs on the .NET Framework 4.8 that ships with Windows.
Important
This exe is not code-signed, so Windows will show a SmartScreen box. Click More info → Run anyway if you want to proceed; otherwise build from source or verify the checksums below.
Checksums (SHA256)
21D01AE75093F01EE8AFA30A605FE707B2175010EC1D026DC36D1DCA8024C423 WinHomestead.exe
FACB7DA0FBCCD9D6341D74F09A47E66D4E22558320E6D29C464F51C831574238 WinHomestead.exe.config
Verify with Get-FileHash .\WinHomestead.exe -Algorithm SHA256.
Unchanged
No uninstalling Microsoft's built-in apps, no disabling services, no touching Windows Update, no changes to UAC / SmartScreen / memory integrity, no DNS or hosts tinkering, no network access. A restore point is created before the first change of each session, original values are journaled, and a failed item rolls back from that record.
Full changelog: v0.2.0...v0.3.0
中文说明
界面现在跟随系统语言:中文系统显示中文,其余显示英文。用户能看到的文字——任务名称与说明、当前/目标值、检查项结论、手动步骤、对话框、导出的 HTML 报告——全部双语。
微软拼音那三个开关仍然只对中文用户有意义,其他语言下用不上。
怎么做的
没有走 .resx。这个项目的用户可见文字大多是带插值的整句(任务说明、检测结论、手动步骤),资源文件把它们拆成几百个键之后,漏译和格式串对不上都不会在编译期暴露。改成中英并列写在调用点:
L.S("显示文件扩展名", "Show file extensions")XAML 里对应 {local:Loc Zh='检查项', En='Checks'}。改一句就是改一处,评审时两种语言在同一屏里。语言在启动时按 CultureInfo.CurrentUICulture 定。
日志与内部异常消息保持中文:它们进的是日志文件,读者是开发者。
顺带修的三个问题
- 「推荐」徽标的绿底会失效:
DataTrigger拿显示文本跟字符串「推荐」比,文案一换语言就对不上。改成绑定布尔属性。这类「界面逻辑比较显示文本」的坑已写进贡献规则。 TaskCatalog用static readonly字段缓存共用词:字段在类型初始化时就定死,换语言重建目录取不到新值。改成属性。- 测试随机失败:语言标志是进程级静态,而 xunit 默认并行跑不同测试类——双语测试把语言扳到英文时,别的测试正好在断言中文文案。已禁用该程序集的测试并行。
其他
software.json 新增 name_en / note_en,微信、钉钉、飞书在英文下显示为 WeChat、DingTalk、Feishu,安装备注也有英文版。仓库新增英文 README。
安装
下载上面两个文件,放在同一个目录,双击 WinHomestead.exe。需要 Windows 11 22H2 及以上 + 管理员账户,无需安装 .NET。
这个 exe 没有代码签名,Windows 会弹 SmartScreen 蓝框。确认要运行就点「更多信息」→「仍要运行」;不放心可以自己从源码构建,或者比对上面的校验和。
没有变的部分
不卸载微软预装应用,不禁用系统服务,不动 Windows Update,不碰 UAC / SmartScreen / 内存完整性,不改 DNS 与 Hosts,不联网。每次会话第一次执行前创建系统还原点,写操作的原值先记进 journal,单项失败按记录自动回滚。