WiX本地化 – 桌面/程序菜单捷径在升级中不被replace

我们最近在使用WIX 3.5的Windows Installer中包含了对简体Chiense(zh-cn)的本地化支持。 我们产品的当前版本是1.3.0,旧版本(1.2.0)我们没有任何本地化支持。

我们还更改了1.3.0的产品代码以执行重大升级。 并使用MSI转换(使用Wisubstg.vbs和Wilangid.vbs)将本地化支持集成到单个MSI中,而无需使用Bootstrapper。

当我们在升级模式下testing这个简体中文时,桌面和prpogram菜单捷径并没有被replace,而是与中文文本重复。

WiX捷径代码在这里。

<Shortcut Id="StartServiceShortcut" Icon="StartServiceIcon" Name="!(loc.STR_StartServiceName)" Description="!(loc.STR_StartServiceDesc)" Target="[INSTALLLOCATION]bin\myapp.exe" Arguments="-s" WorkingDirectory="INSTALLLOCATION"/> 

product.Wxl

 <String Id="STR_StartServiceName">Start Service</String> <String Id="STR_StartServiceDesc">Start Services</String> 
  • 安装了Windows 7英文版本的1.2版本
  • 将区域设置更改为简体中文,然后运行1.3安装程序。
  • 查看以简体中文显示内容的Windows Installer向导。
  • 安装成功。 但桌面/程序菜单复制新的中文文本。
  • 这两个shorcuts正在解决任何问题。 但卸载并没有删除两个削减。

卸载产品不会删除快捷方式。 我还在程序/function列表中看到了两个条目。 也看到有两个不同的registry项。 产品名称和发布者值是本地化的,其他所有属性都与registry项相同。

我在哪里失踪?

在此先感谢您的帮助!

更新:

将升级语言更改为“0”后,我仍然遇到同样的问题。 看来这个新版本1.3已经被完全安装成一个新产品。 任何帮助!
将升级语言更改为“0”后,我仍然遇到同样的问题。 看来这个新版本1.3已经被完全安装成一个新产品。 任何帮助!

  <Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" /> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <Upgrade Id="$(var.UpgradeCode)"> <UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="0" Property="NEWPRODUCTFOUND" /> <UpgradeVersion Minimum="$(var.RTMProductVersion)" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="0" Property="UPGRADEFOUND" /> </Upgrade> <Product Id="$(var.ProductID)" Name="!(loc.STR_ProductName)" Language="!loc.STR_Language)" Version="$(var.ProductVersion)" Manufacturer="!(loc.STR_Manufacturer)" UpgradeCode="$(var.UpgradeCode)" > 

最后我得到了它。 感谢Alex Shevchuk 从MSI到WiX的博客,第8部分 – 主要升级 。

FindRelatedProducts操作按顺序遍历升级表的每个记录,并将每行中的升级代码,产品版本和语言与安装在系统上的产品进行比较。

所以,将我的代码更改为如下所示后,升级成功。 可能对别人有用。

任何意见,欢迎!

  <Product Id="$(var.ProductID)" Name="!(loc.STR_ProductName)" Language="0" Version="$(var.ProductVersion)" Manufacturer="!(loc.STR_Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" Languages="0" Manufacturer="!(loc.STR_Manufacturer)" /> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <Upgrade Id="$(var.UpgradeCode)"> <UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="0" Property="NEWPRODUCTFOUND" /> <!-- For UPGRADEFOUND Property, the Language attribute should be set to 1033 as previous version supports only English --> <UpgradeVersion Minimum="$(var.RTMProductVersion)" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="1033" Property="UPGRADEFOUND" /> </Upgrade>