WiX本地化 - 升级中未替换桌面/程序菜单快捷方式

时间:2012-03-29 13:54:32

标签: windows localization wix

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

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

当我们在简体中文版本升级模式下测试时,桌面和草图菜单快捷方式没有被替换,而是与中文文本重复。

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都在解决任何问题。但卸载并没有删除两个shourt cut。

卸载产品不会移除快捷方式。我还在程序/功能列表中看到了两个条目。还看到有两个不同的注册表项。产品名称和发布者值已本地化,所有其他属性在这些属性中与注册表项相同。

我在哪里错过了?

在预先感谢您的帮助!

更新

将升级语言更改为“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)" >

1 个答案:

答案 0 :(得分:1)

最后我明白了。感谢Alex Shevchuk的博客From MSI to WiX, Part 8 - Major Upgrade

  

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

因此,在将我的代码更改为如下所示后,升级成功。可能对其他人有用。

欢迎任何评论!

  <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>