You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wix v5引导程序本地化Bug:卸载/修改界面无法自动切换语言

Wix v5引导程序卸载界面语言不匹配问题解决

问题根源

直接运行引导程序时,Wix标准BA能自动识别系统语言并加载对应thm.wxl翻译文件;但通过「应用和功能」或控制面板卸载时,Windows会调用注册的卸载命令启动引导程序,此时BA的语言检测逻辑未触发,或者翻译文件的路径无法被正确读取,导致默认回退到英文界面。

解决办法

1. 确保翻译文件被部署到卸载缓存目录

卸载时引导程序会从Windows Installer的缓存目录读取资源,需要把thm.wxl文件作为Bundle级别的Payload(而非仅BootstrapperApplication的子Payload),保证卸载时能访问到:

<Bundle>
  <!-- 其他原有配置 -->
  <!-- 将翻译文件作为Bundle的Payload -->
  <Payload Name="2058\thm.wxl" SourceFile="2058\thm.wxl" />
  <Payload Name="3084\thm.wxl" SourceFile="3084\thm.wxl" />
  
  <BootstrapperApplication>
    <bal:WixStandardBootstrapperApplication Theme="rtfLicense"/>
    <!-- 这里的BA子Payload可以保留,也可以合并到Bundle的Payload中 -->
  </BootstrapperApplication>
</Bundle>

2. 配置Bundle本地化支持

在Bundle中显式声明支持的语言,让标准BA在卸载场景下也能识别系统语言:

<Bundle>
  <!-- 声明各语言的本地化文件 -->
  <Localization Culture="en-US" SourceFile="en-US\thm.wxl" />
  <Localization Culture="es-MX" SourceFile="2058\thm.wxl" /> <!-- 2058对应西班牙语(墨西哥) -->
  <Localization Culture="fr-CA" SourceFile="3084\thm.wxl" /> <!-- 3084对应法语(加拿大) -->
  <!-- 其他原有配置 -->
</Bundle>

3. 给卸载命令添加语言参数

Windows默认的卸载命令不带语言参数,需要手动在注册表卸载项中添加/lang参数,传递系统语言ID给引导程序:

<Bundle>
  <!-- 其他原有配置 -->
  <RegistryValue 
    Root="HKLM" 
    Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[WixBundleManufacturer]_[WixBundleName]" 
    Name="UninstallString" 
    Value="[System64Folder]msiexec.exe /x [WixBundleOriginalSource] /lang [SystemLanguageId]" 
    Type="string" 
  />
</Bundle>

4. 验证缓存文件是否存在

安装完成后,检查C:\ProgramData\Package Cache\<你的Bundle GUID>目录下,是否存在2058和3084文件夹及对应的thm.wxl文件。如果没有,说明Payload配置有误,需重新调整Bundle的Payload设置。


内容的提问来源于stack exchange,提问作者bsbllshrtstp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:52:13