我们最近使用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>
卸载产品不会移除快捷方式。我还在程序/功能列表中看到了两个条目。还看到有两个不同的注册表项。产品名称和发布者值已本地化,所有其他属性在这些属性中与注册表项相同。
我在哪里错过了?
在预先感谢您的帮助!
更新
将升级语言更改为“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)" >
答案 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>