Wix Toolset总结

来源:互联网 发布:软件加注册码工具 编辑:程序博客网 时间:2024/05/16 19:05
一、五种UI对话框
设置对话框:eg. <UIRef Id=”WixUI_Minimal” />

WixUI_Advanced:提供了与WixUI_Minimal类似的一键安装形式,但提供了高级选项按钮。高级选项中,我们可以选择该产品是安装给当前用户还是给所有用户的
     WixAppFolder:指定默认选择当前用户(WixPerUserFolder)还是所有用户(WixPerMachineFolder)。
     ApplicationFolderName:来指定产品所安装在的默认文件夹。

WixUI_Minimal:最小的预定义对话框集合,其将Welcome对话框和协议同意对话框结合,选择协议后就直接安装了。这种对话框集合适用于我们的产品没有自定义部件以及不支持变更安装目录的情况。


WixUI_Mondo:Welcome、协议同意、安装类型选择、部件选择等自定义安装的对话框,但其不支持安装目录的变更。当我们的产品默认情况下不安装全部部件时,这样典型安装(typical)和完全安装(complete)之间就有个明显的区别,此时推荐使用WixUI_Mondo


WixUI_FeatureTree:与WixUI_Mondo的区别是WixUI_FeatureTree省略了安装类型对话框。协议同意对话框之后就直接到部件(Feature)选择对话框了。当我们的产品默认是安装所有部件时,更推荐采用WixUI_Feature而不是WixUI_Mondo。


WixUI_InstallDir:不支持用户选择安装的部件,但是其增加了让用户选择安装目录的对话框。在Wix文件中需要一个Id为“WIXUI_INSTALLDIR”的属性来产品要安装的目录的ID(ID必须是全部大写,大写的目的是为了能够让用户在对话框中选择的自定义目录能够回写到相对应ID的Directory元素)。

二、Windows Installer与MSI

Windows Installer:微软Windows操作系统自带的软件安装和配置服务,其实现了软件安装的业务逻辑:如何安装软件?如何修改注册表键值?如何创建快捷方式?如何操作网站目录或注册服务?等等。

Windows Installer技术:由两部分组成:客户端安装程序服务(Msiexec.exe)和Microsoft软件安装包文件(MSI)。

MSI:Windows Installer是从一个数据库中来获取软件安装的相关信息。MSI文件就是一个Windows Installer的数据库。它包含了:
  • 安装一种产品所需信息、安装(或卸载)程序所需的指令和数据
  • 它将程序的组成文件和功能关联起来
  • 它还包含有关安装过程本身的信息,如目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。


MSI数据库的几个重要表说明:


表名

说明

Directory

指定了产品的目录结构,包括源目录结构和目标目录结构

Component

指定了产品的基本组件结构。

Feature

Component的组合就称为Feature,是用户选择安装的可视部件

File

指定了需要安装到目标目录的文件

ShortCut

记录了产品需要在目标计算机上安装快捷方式所需的信息。

Register

记录了产品需要在目标计算机上注册的注册表键值信息。

Property

记录了产品安装过程中所需的属性值。


说明:
     Feature和Component的区别 :
  • Feature是逻辑上的而Component是物理上的
  • Feature是应用或产品所有功能的一个子集,用户可以独立地选择是否安装。Component是产品或应用的最小组成单元,它可以由一个文件,或一个快捷方式,或一个注册表键值,或它们的组合来组成。
  • Feature是由Component组成的。Feature具有树状嵌套结构,最大深度为16
  • Component是产品或应用的一小片,每个Component都要由一个唯一的GUID值来标识,以便Windows Installer进行跟踪。若某个Component没有GUID值,则安装时不会被安装注册,无GUID的Component一般用于只在安装时的功能实现,例如删除某些临时文件等。
     Directory表:
  • 指定了产品安装的目录结构,包括目标目录结构、源目录结构
  • 有三个表项:标识符ID、父目录Directory_Parent和DefaultDir。Directory_Parent指向该目录的父目录,ID和DefaultDir的值来确定目标目录结构和源目录结构
  • 目录结构有且仅有一个根目录,且根目录的标识符必须指定为TARGETDIR(TARGETDIR是Windows Installer预定义的属性)(SourceDir默认的属性值为.msi文件所在的路径)。如果属性TARGETDIR的值被指定了,则目标根目录为TARGETDIR的属性值;若该属性未有值,则目标根目录为Windows Installer预定义属性ROOTDRIVE的值。而源根目录则为SourceDir的属性值。


三、五个必需属性

每个安装包必须要有五个必需属性(Required Properties):ProductCode、ProductLanguage、Manufacturer、ProductName和ProductVersion。

五个必需属性

属性名

说明

ProductCode

唯一的、大写的GUID值,用于标识要安装的产品。

ProductLanguage

指示了用户界面上除写入数据库的字符串外的其余字符串所用的语言的数字ID(如1033、2046)。

Manufacturer

指示产品生产厂商的字符串值。

ProductName

产品名称

ProductVersion

产品版本号,版本号的格式为major.minor.build,其中major和minor最大数字为255,build的最大数字为65535。


四、说明
1、定义目录

目录通过<Directory>元素来定义,其描述了我们要安装在目标计算机上的文件夹结构,例

Id=TARGETDIR:是Windows Installer要求必须有的,并且其是我们安装目录结构的根目录。
Id=ProgramFilesFolder:指定了目标计算机上的Program Files文件夹,ProgramFilesFolder是Windows Installer预定义的一个属性,通常其属性值为C:\Program Files\。
Id=INSTALLFOLDER :该标识符Id可以在.wxs文件中任意地方进行引用 ,指定了我们安装的软件在Program Files文件夹下的子文件夹,这里该子文件夹命名为HelloWorld,另外该Id采用全大写字母,是为了能够在安装的命令行或者用户界面中对该值进行定义,这样也可以改变我们安装的产品在目标计算机上的路径(WiX中Id为全大写形式的属性值可称为全局属性,其值可以在命令行或者用户界面上进行改变)。
2、Component
Component是安装的基本单元,由文件,或快捷方式,或注册表键值,或它们的组合来组成的。于是,要将一个文件添加到安装包中,则需要两个元素<Component>和<File>,例
<Component Id="ProductComponent" Guid="B5F0C012-49D6-4C63-AFCA-0CE6C24C6D7D">
    <File Id="HelloWorld" Source="HelloWorld.exe" />
</Component>

  • <Component>元素在定义在目录的<Directory>元素下的,每一个Component必须有且只有一个关联目录
  • <Component>元素的Id用于在.wxs文件的任意地方引用该<Component>元素
  • Guid元素指定的GUID值则是用于Windows Installer对该Component进行跟踪的,<Component>元素的GUID值必须的全大写,并且是唯一的。
  • <File>元素将指定我们要安装的HelloWorld.exe文件。属性Id的值HelloWorld用于标识该<File>元素,可在.wxs文件任意地方通过其来引用该<File>文件。而属性Source指定了文件HelloWorld.exe在我们机器上的路径,这样WiX就可以找到它并把它添加的安装包MSI文件中。
3、开始菜单快捷方式

设置开始菜单快捷方式的安装目录结构:

ProgramMenuFolder是Windows Installer预定义的一个属性,其值为目标机器的开始菜单目录。Id为TARGETDIR的<Directory>必须是唯一的根目录,于是第一个<Directory>就放在该根目录下面。第二个<Directory>是在开始菜单目录下创建一个名为HelloWorld的子目录。

注明我们的快捷方式信息:

说明:
  • <DirectoryRef>元素引用了我们在开始菜单目录下定义的子目录HelloWorld,表示我们要安装的快捷方式就放在该HelloWorld子目录下,<Component>来包含我们的快捷方式
  • <Shortcut>:指定了要创建的快捷方式的信息—Name指定了快捷方式的名字;Description指定了快捷方式的描述信息,当鼠标移到该快捷方式上时,其会以ToolTip方式显示;Target指定了快捷方式引导的目标文件,其中[INSTALLFOLDER]解析出Id为INSTALLFOLDER的<Directory>所指向的目标目录的路径,所以本快捷方式将引导路径C:\Program Files\HelloWorld\下的HelloWorld.exe文件;WorkingDirectory则指定了该快捷方式的工作目录。
  • 更改快捷方式的图标,通过<Icon>元素加载一个图标文件,然后通过<Shortcut>元素的Icon属性引用该图标文件即可。
  • <RemoveFolder>元素表明在卸载HelloWorld这个应用程序时(On=”uninstall”)将删除Id为ApplicatioinProgramsFolder的目录(即我们在开始菜单目录下创建的子目录HelloWorld)。
  • <RegistryValue>元素指定了一个在创建快捷方式时注册到注册表的信息。这是创建快捷方式时必需的元素,因为快捷方式不能作为一个Component的KeyPath。
4、添加卸载快捷方式

通过<Shortcut>元素实现
<Shortcut Id="UninstallHelloWorld"          Name="Uninstall"          Target="[SystemFolder]msiexec.exe"          Arguments="/x [ProductCode]"          Description="Uninstall HelloWorld" />

说明:
  • Target:指出可运行程序msiexec.exe的位置,msiexec.exe是Windows Installer提供的客户端安装卸载程序服务。
  • SystemFolder:是Windows Installer预定义的属性,其值表示目标机器的System32文件夹所在路径,通常为C:\Windows\System32。
  • Argument:将安装包的ProductCode传递给msiexec.exe,告知要卸载的是哪一个产品。

参考文献:
http://www.cnblogs.com/lienhua34/archive/2012/10/20/2732100.html
http://blog.csdn.net/duanzilin/article/details/5951709
http://www.tuicool.com/articles/iUniMb


0 0
原创粉丝点击