Wix Setting language and code page attributes
When you localize your MSI package, you'll need to alter your Productand Package elements to suit. To do so, you'll leverage code pages and locale identifiers (LCIDs). So the first thing to do is define what we mean by these terms.
Alocale identifieris an ID used to classify a particular language and the region where it's spoken. It serves the same purpose as an IETF language tag, such as "en-us", but is formatted as a number. For example, "1033" means English as spoken in the United States. A full chart of LCIDs can be found at Microsoft's MSDN web site by searching for locale ID. The URL is:
http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
Although that page also provides LCIDs in hexadecimal form, you should always use the decimal form in WiX.
A code pageis an add-on of extra printable characters that aren't covered in the basic set of 128 ASCII characters. I might as well break the news that WiX does not use Unicode. It has to do with the fact that Windows Installer itself doesn't have strong support for Unicode. For most tasks, this shouldn't present much of a problem. ASCII covers all of the English alphabet and common punctuation marks. You can see a chart displaying ASCII at:
http://msdn.microsoft.com/en-us/library/60ecse8t%28VS.80%29.aspx
However, it doesn't cover non-Latin characters (such as Chinese) or characters with accents over them such as those found in French and Spanish. So, to print the accents marks over Spanish letters, you'll need a code page. Without it, your installer won't know how to render the characters you want. A full list of code pages can be found at Microsoft's MSDN website:
http://msdn.microsoft.com/en-us/library/dd317756
As an example, you could specify a code page of "950" to make Traditional Chinese characters available. In the following sections, we'll see how the Productand Packageelements make use of LCIDs and code pages.
The Package element
First, let's look at the Packageelement. Its job is to sum up details about the installer such as who the author is and what platform it supports. Another important piece of information it publishes is the language that's supported. An MSI package only lists one supported language and it does so by setting the Packageelement's Languagesattribute. The attribute name is plural because the Packageelement is also used in merge modules and they can list multiple supported languages. Here's an example that sets the supported language to 1033(English - United States):
<Package Compressed="yes"
InstallerVersion="301"
Manufacturer="Awesome Company"
Description="Installs Awesome Software"
Languages="1033" />
When the end user launches the installer, their computer looks to the Packageelement to find out what the supported language is. If that language isn't installed locally, an error will be displayed telling the user so.
Here's a message I got when I tried to install an MSI package that specified an LCID of 1085, Yiddish, as the supported language:
Also, if your own development computer doesn't have that language installed, an exception will be thrown when you try to build the WiX project, as shown in the following screenshot:
Windows Installer stores the supported language in something called the Template Summaryproperty. You can find more information about it at the following website:
http://msdn.microsoft.com/en-us/library/Aa372070
Open your MSI with Orca and select View| Summary Informationto see it. It will be listed as the Platformand Languagesfields.
Getting back to the Languagesattribute on the Packageelement, you have the option of using a localization variable instead of a hardcoded value, as in the following example:
<Package Compressed="yes"
InstallerVersion="301"
Manufacturer="Awesome Company"
Description="Installs Awesome Software"
Languages="!(loc.LocaleId)" />
Here, we've specified the variable !(loc.LocaleId)for the Languagesattribute. The value for this variable will be filled in by a WiX localization file (.wxl). Here's a sample .wxlfile that defines this variable for Spanish localization:
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="es-es" Codepage="1252"
xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="LocaleId">1034</String>
<!--Other strings defined here-->
</WixLocalization>
The Packageelement has another attribute called SummaryCodepagethat's used to set the code page for the summary properties. Summary properties are the details shown when you right-click on an MSI file and view its Properties. If any of these use characters outside of the ASCII set, they'll need a code page to display them.
You could set a hardcoded value, as in this example:
<Package Compressed="yes"
InstallerVersion="301"
Manufacturer="Awesome Company"
Description="Installs Awesome Software"
Languages="!(loc.LocaleId)"
SummaryCodepage="1252" />
Here we've specified that the code page to use is 1252, which is the code page containing additional Latin character such as the copyright symbol and characters with accents. If you don't specify the SummaryCodepageattribute it defaults to 1252. You might explicitly set this attribute if you use extended characters such as those for Chinese. If we had used Chinese characters in, for example, theDescriptionattribute, we would have had to specify a code page such as 950
You can also use a localization variable like this:
<Package Compressed="yes"
InstallerVersion="301"
Platform="x86"
Manufacturer="Awesome Company"
Description="Installs Awesome Software"
Languages="!(loc.LocaleId)"
SummaryCodepage="!(loc.SummaryCodepage)" />
Wix Setting language and code page attributes的更多相关文章
- 转载:Character data is represented incorrectly when the code page of the client computer differs from the code page of the database in SQL Server 2005
https://support.microsoft.com/en-us/kb/904803 Character data is represented incorrectly when the cod ...
- 关于windows系统里locale、code page、ANSI编码的问题
最近把公司代码库里的代码同步下来之后编译了下,竟然出问题.问下同事说代码库肯定没问题,而我啥也没改,那到底那里出问题了呢? VS2018报的错误是:error RC2001: newline in c ...
- IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page
提示:IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page 今天 ...
- Linear to physical address translation with support for page attributes
Embodiments of the invention are generally directed to systems, methods, and apparatuses for linear ...
- error C2220: warning treated as error - no 'object' file generated warning C4819: The file contains a character that cannot be represented in the current code page (936).
用Visual Studio2015 编译时,遇到如下编译错误: error C2220: warning treated as error - no 'object' file generated ...
- 微软BI 之SSIS 系列 - ETL 转换时关于 Code Page (1252 and 936) 转换错误的原因和解决方法
开篇介绍 最近经常碰到在 ETL 练习中出现这种转换失败的问题,试了多种方式,同样的代码同样的源结构和表结构但是一直不能成功执行,包报错.一般有这么几种错误: Error at DST_LOAD_DA ...
- error RC1205: invalid code page
Get followings error and warnings when building project: error RC1205: invalid code pagewarning C400 ...
- nginx启动报错(1113: No mapping for the Unicode character exists in the target multi-byte code page)
使用windows版本的nginx启动时遇到(1113: No mapping for the Unicode character exists in the target multi-byte co ...
- failed (1113: No mapping for the Unicode character exists in the target multi-byte code page), client: 127.0.0.1...
nginx部署网站后,访问域名,网页显示 500 Internal Server Error ,经查看发现nginx的error.log中有报错: failed (1113: No mapping ...
- 刨根究底字符编码之七——ANSI编码与代码页(Code Page)
ANSI编码与代码页(Code Page) 一.ANSI编码 1. 如前所述,在全世界所有国家和民族的文字符号统一编码的Unicode编码方案问世之前,各个国家.民族为了用计算机记录并显示自己的字符, ...
随机推荐
- 益赛普等TNFi持续治疗强直性脊柱炎的长期疗效观察(≥3年)
北大深圳医院风湿免疫科在2021年发表了益赛普等TNFi持续治疗强直性脊柱炎的长期(≥3年)疗效观察[1]. 入排条件严苛,坚持随访不容易 观察对象是2009-2019年间就诊于该科室的AS患者,需有 ...
- git拉取新分支、删除分支、修改远程分支
1.拉取新分支 git checkout master 切换到master分支 git pull 更新到最新代码 ...
- 03#Web 实战:实现下拉菜单
实现过程 实现一个简易的鼠标悬停菜单项显示其子项的下拉框控件.将用到 CSS 绝对定位.流式布局.动画等:JQuery 鼠标移入和移出事件.DOM 查找.效果图如下: HTML 结构: <div ...
- PostgreSQL事务隔离级别
一.概念 并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制.PostgreSQL使用了多版本并发控制技术的一种变体:快照隔离San ...
- because another server process exited abnormally and possibly corrupted shared memory
一.环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.1.1 二.症状 Red Hat 7.2操作系统部署HGDB 4.1.1后,日志经常出 ...
- LeetCode-851 喧嚣与富有
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/loud-and-rich 题目描述 有一组 n 个人作为实验对象,从 0 到 n - 1 编号, ...
- c# 游戏设计:地图移动
想实现一个小游戏,先做地图移动.步骤记录如下: 1.百度到一张大的迷宫地图,放在项目的debug目录下,备用. 2.创建一个winform项目,不添加任何界面元素. 3.添加数据成员如下: Pictu ...
- QP之QEP事件分配流程分析
*********************************1*********************************** QActive *AO_Blinky = &l_bl ...
- python 读取xls文件
import xlrdfrom xlrd import xldate_as_tuplefrom IPScriptUtil import *from serverTest import *import ...
- RBAC访问控制
案例:为指定用户授权访问不同命名空间权限,例如公司新入职一个小弟,希望让他先熟悉K8s集群,为了 安全性,先不能给他太大权限,因此先给他授权访问default命名空间od,读取权限. 实施大致步骤: ...