[翻译] WiX 教程 - 入门 - 软件包

原文地址:http://wix.tramontana.co.hu/tutorial/getting-started/the-software-package

上一节 << 返回目录 >> 下一节     

a)      软件包

我们的第一个WiX例子将安装一个非常简单的假想的程序:它包含了一个可执行文件,一个DLL库和一本用户手册。我们希望这些文件被复制到指定的文件夹里。我们还要创建两个快捷方式显示在用户开始菜单的常用程序里,此外,我们还将添加一个带图标的快捷方式在用户桌面,用来启动我们的程序。

就像这个安装包一样简单,底层的Windows Installer将提供大量的功能,包括自动将我们的程序加到“控制面板 > 添加/删除程序”中。为确保Windows Installer可以持续追踪我们的程序,我们需要提供一些识别身份的办法。虽然所有应用程序都有可读的名称,但Windows需要的不是单单一个名字,而是相对唯一的身份标识:GUID(长十六进制数,例如CE26AD1E-00D5-4E03-8CBE-6DA5C23AA833)用以识别我们安装包的每个部分。GUID生来免费,任何时候,你想生成多少就可以生成多少。他们保证是独一无二的,无论谁在自己的电脑里生成,他们都不会和你的产生冲突。有很多工具可以生成GUID,包括非常简单的C程序,该程序几乎可在你选择的任意的C/C++编译器中编译。如果你使用了不同的编程语言,你也可以调用必要的Win32函数(CoCreateGuidStringFromCLSID)。另外,很多程序编辑器和集成开发环境工具都可以在需要的时候往源代码中插入新创建的GUID值(在微软的Visual Studio中,你可以给此“宏”添加快捷方式)。如果你使用的工具生成的是小写的十六位字符,在写入WiX之前将他们转化成大写。

在此教程中的所有GUID值,包括那些可以下载的例子中,都是无效的——第一部分总是被写成YOURGUID。这就意味着如果你没有准备自己的GUID值,例子是不能直接被编译的(如果你硬要尝试,你会得到“致命错误 CNDL0027:根据其数据类型,属性‘id’包含非法值。”)。是有点儿小小的不便,但还是有必要的,可避免那种极小的可能性:很多人照搬例子,忘记修改GUID值,造成冲突的风险。还得注意,你得替换整个GUID值:不要将来自不同GUID的值混合在一起(也就是说,不要只替换YOURGUID,而是替换整个值)。依照原样使用生成出来的GUID值,才能保证其唯一性。

首先,你需要两个GUID值,一个给Product,一个给安装 Package(事实上,在任意一个真实的项目中,你还需要一个UpgradeCode GUID值;在你开工之前,一定要看看其他章节的内容)。同时,还需要其他两个GUID值给文件使用,因为稍后你可能需要引用这些文件,你创建的每个PackagePackage GUID值必须不同。更简单些且对新手来说不容易忘记的办法是,我们可以输入一个星号,让WiX自动创建一个——但是得记住,这个只能用于创建Package GUID值:所有其他的GUID值必须是唯一且将来也保持不变。在我们SampleFirst.wxs的最开始部分是所有关于这个产品的其他文字信息:

 

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
 
  <Product Name='Foobar 1.0' Id='YOURGUID-86C7-4D14-AEC0-86416A69ABDE' UpgradeCode='YOURGUID-7349-453F-94F6-BCB5110BA4FD'
    Language
='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>
 
    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer"
      Comments
='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.'
      InstallerVersion
='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

 

 

         当然,Product NameDescription都靠你了。对于Version属性,使用标准的major.minor.build格式。Windows Installer将会忽略可能的第四位.revision,因他在被用来区别版本时表达不同的意思。

         如你所知,XML在格式上非常自由。使用缩进和空行,随您的意。用引号括起所有的属性值,但你可以任意选择使用单引号或双引号。这样很容写那些包含引号的值(比如上面的Description),仅仅保证你使用另一种引号括起这个字符串。

         你可以使用UTF-8ANSI编码创建XML文件。如果你不打算使用除了普通的ASCII字符和那些在标准ANSI字符集中可用的标以重音符号的字母之外的其他任意字符,例子中使用的windows-1252设置刚好能满足。如果在你的用户界面上需要更大的或者不同的字符集,换成UTF-8并且使用合适的Language Codepage值。举例来说,如日语:

 

<?xml version='1.0' encoding='utf-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <Product Language='1041' Codepage='932' ...>
  <Package Languages='1041' SummaryCodepage='932' ...> 

 

上一节 << 返回目录 >> 下一节  

 

posted @ 2012-03-27 23:09  shalahu  阅读(2949)  评论(0编辑  收藏  举报