tiny11 国际版多语言镜像:4 个任务完成区域与语言定制
【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder
跟着做完你能得到一个 tiny11 国际版安装 ISO:安装器按指定语言显示、登录后区域格式符合目标国家、额外语言包已内置。只改 2 个文件,操作全部是 DISM 命令加注册表写入。
动手前:环境清单与要改的文件
- Windows 11 宿主机,PowerShell 5.1 以管理员运行
- 目标版本的 Windows 11 官方 ISO(任意来源、任意原始语言)
- 与该系统版本匹配的语言包 .cab(只想沿用源语言可跳过)
- 要改的两个文件:tiny11maker.ps1 和 autounattend.xml
- 一块空闲空间充足的暂存磁盘,脚本会在那里挂载镜像
语言包版本必须和 ISO 的 build 完全一致,混版是构建失败最常见的源头。
任务 1:读出源镜像的默认语言代码
目标
先弄清源镜像默认用什么语言,这个代码是后面所有核对的基准。
操作
脚本里已内置这一步:镜像挂载后跑dism /Get-Intl,用正则把语言代码抠出来打进日志:
$imageIntl = & dism /English /Get-Intl "/Image:$($ScratchDisk)\scratchdir" $languageLine = $imageIntl -split '\n' | Where-Object { $_ -match 'Default system UI language : ([a-zA-Z]{2}-[a-zA-Z]{2})' }人话就是:把当前挂载镜像的默认 UI 语言读出来打印,你只需运行构建时盯着日志看。
完成标志
日志出现Default system UI language code: en-US这类行;若输出 not found,说明源 ISO 信息不全,先换源再构建。
任务 2:语言包放哪个目录、安装代码插哪一行
目标
把目标语言装进当前挂载的镜像,让多语言镜像自带语言包。
操作
在脚本同目录建LanguagePacks文件夹,把 .cab 丢进去;再找到脚本中Mounting complete! Performing removal of applications...这一行(约第 196 行),在后面插进循环:
$languagePacks = Get-ChildItem -Path "$PSScriptRoot\LanguagePacks" -Filter *.cab foreach ($lp in $languagePacks) { & 'dism' '/English' "/image:$($ScratchDisk)\scratchdir" '/add-package' "/packagepath:$($lp.FullName)" }它逐个把文件夹里的 .cab 装进scratchdir挂载的镜像。这段只在挂载期间有效,位置别挪。
完成标志
日志里每个语言包都有一条成功行、无错误码;装好的系统里该语言能直接在设置中启用。
任务 3:autounattend.xml 里区域字段怎么改
目标
决定安装器界面用什么语言、键盘怎么选。这一项由应答文件说了算,注册表管不着。
操作
在 autounattend.xml 的<settings pass="windowsPE">段下新增Microsoft-Windows-International-Core-WinPE组件节点——放错 pass(比如 oobeSystem)整个节点就失效。节点里填 5 个字段:
SetupUILanguage/UILanguage:安装器与初始 UI 语言,如zh-CNInputLocale:初始键盘,0409:00000409(美式英语)这类冒号分隔格式SystemLocale/UserLocale:安装器系统区域和用户区域格式
文件现有内容只负责 OOBE 跳过,加这块不冲突。
完成标志
XML 无多余或缺失标签;语言码都是zh-CN式写法,InputLocale冒号分隔,符合微软规范。
任务 4:注册表预置区域与默认语言
目标
让系统装完就默认使用指定区域和 UI 语言,登录不再沿用源语言。这一步是区域定制的核心,别跳。
操作
在脚本的注册表写入段(Loading registry...之后,约第 288-364 行),用现成的Set-RegistryValue函数补两组写入:
Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\International' 'LocaleName' 'REG_SZ' 'zh-CN' Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\MUI\Settings' 'PreferredUILanguages' 'REG_MULTI_SZ' 'zh-CN'第一组改的是Control\International,可再补一个Locale值00000804(中文-中国),两者共同决定日期、数字、货币格式;第二组把目标语言写进PreferredUILanguages,决定用户登录后的默认语言。注意前缀zSYSTEM是脚本reg load出来的临时键名,别手滑改成真实路径。
完成标志
日志逐条出现Set registry value: …,没有 error 行。
效果核对:打开哪里、看到什么算对
用产出的 ISO 装一次系统,逐项打勾:
- 安装器界面→ 显示语言和键盘选择与 autounattend 里
UILanguage/InputLocale一致 - 设置 > 时间和语言 > 语言和区域→ 语言列表包含你加的语言包,默认语言等于
PreferredUILanguages - 同页区域格式→ 日期、数字、货币与
LocaleName吻合,不再沿用源镜像区域 - 构建日志→
Get-Intl输出的语言码与源 ISO 语言对得上,证明构建过程没漏步
踩坑排查 ⚠️:语言包装不上、区域不生效怎么办
现象:dism 添加语言包报错误码
- 可能原因:语言包与镜像版本不匹配(最常见);暂存盘空间不足;.cab 文件损坏
- 处理:核对包与 ISO 的 build;检查暂存盘剩余空间;重新下载。要深挖就给每条 dism 命令追加
| Out-File "$PSScriptRoot\LanguagePackInstall.log" -Append保留完整日志
现象:装完系统区域仍不生效
- 可能原因:区域组件写进了错误的 pass;应答文件取值格式不合规范;注册表值根本没写进去
- 处理:确认组件在
windowsPE里;复查语言码与InputLocale写法;在日志里搜Set registry value确认写入成功 - 隐藏坑:脚本结尾会删掉本地
autounattend.xml,下次运行重新下载干净版——改过的话,每次构建前都得再改一遍
扩展方向:做成语言包选择菜单
做完这些,下一步很自然:把LanguagePacks改成构建前的交互式勾选菜单,再让默认语言、区域码变成参数一次传入,一套脚本就能产出面向多国的多语言镜像。构建参数细节可查 tiny11maker.ps1 与 README.md。
【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考