Wix学习整理(2)——HelloWorld安装添加UI

原文:Wix学习整理(2)——HelloWorld安装添加UI

在前一篇随笔Wix学习整理(1)——快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程。下面我们修改Wix源文件来给安装程序添加UI。

1 Wix的预定义UI简介

Wix toolset提供的WixUIExtension.dll包(在目录C:\Program Files\WiX Toolset v3.6\bin下)中提供了五种UI对话框集合,分别是WixUI_Advanced、WixUI_FeatureTree、WixUI_InstallDir、WixUI_Minimal和WixUI_Mondo。下面分别对这五种预定义UI对话框集合进行简单的说明。

WixUI_Advanced对话框集合

WixUI_Advanced提供了与WixUI_Minimal类似的一键安装形式。不过其在协议界面提供了配置高级选项的按钮。在高级选项中,我们可以选择该产品是安装给当前用户还是给所有用户的,在Wix文件中需要一个Id为“WixAppFolder”的属性(Property),指定默认选择当前用户(WixPerUserFolder)还是所有用户(WixPerMachineFolder)。另外,需要一个Id为“ApplicationFolderName”的属性来指定产品所安装在的默认文件夹。

<Property Id=”ApplicationFolderName” Value=”HelloWorld” />
<Property Id=”WixAppFolder” Value=”WixPerUserFolder” />
<UIRef Id=”WixUI_Advanced” />

WixUI_FeatureTree对话框集合

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

<UIRef Id=”WixUI_FeatureTree” />

WixUI_InstallDir对话框集合

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

<Property Id=”WIXUI_INSTALLDIR” Value=”INSTALLFOLDER” />
<UIRef Id=”WixUI_InstallDir” />

WixUI_Minimal对话框集合

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

<UIRef Id=”WixUI_Minimal” />

WixUI_Mondo对话框集合

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

<UIRef Id=”WixUI_Mondo” />

下面我们的用例就设置WixUI_Mondo对话框集合。

2 制作带UI界面的HelloWorld.msi

修改Product.wxs文件,内容如下

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 3          <Product Id="*" Name="HelloMSI" Language="1033" Version="1.0.0.0" Manufacturer="LEH" UpgradeCode="1de12ee7-2e94-42ac-979f-06245a0ade30">
 4                    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
 5                    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
 6
 7                    <Directory Id="TARGETDIR" Name="SourceDir">
 8                             <Directory Id="ProgramFilesFolder">
 9                                      <Directory Id="INSTALLFOLDER" Name="HelloWorld">
10                                                <Component Id="ProductComponent" Guid="B5F0C012-49D6-4C63-AFCA-0CE6C24C6D7D">
11                                                         <File Id="HelloWorld" Source="HelloWorld.exe" />
12                                                </Component>
13                                      </Directory>
14                             </Directory>
15                    </Directory>
16
17                    <Feature Id="ProductFeature" Title="HelloWorld" Level="1">
18                             <ComponentRef Id="ProductComponent" />
19                    </Feature>
20
21                    <UIRef Id="WixUI_Mondo" />
22          </Product>
23 </Wix>

相对比之前的Product.wxs文件,这个文件只是添加了上面标红的<UIRef Id=”WixUI_Mondo” />一行语句而已。若想使用其他的预定义对话框集合,只需将红色语句变更为相应对话框集合的用法语句即可。

下面开始编译和链接该文件以生成.msi文件。编译命令还是不变,

candle Product.wxs

链接的命令为

light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"

其中-ext选项指定了特定的扩展包WixUIExtension.dll,其运行结果如下,

 

编译和链接后,在文件Product.wxs所在目录即生成了HelloWorld.msi文件。

3 验收我们的成果

双击HelloWorld.msi文件,可以看到如下安装的交互界面, 

选择Typical,然后Next,

完工!现在HelloWorld.exe文件已成功安装在目录C:\Program Files\HelloWorld下。

时间: 2024-11-05 12:23:50

Wix学习整理(2)——HelloWorld安装添加UI的相关文章

Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式

原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些在安装时添加的内容,在卸载时也会自动地删除.但是,到目前为止,我们的卸载只有两种方式:通过原始安装包或控制面板中的卸载或更改程序.现在,我们来学习Wix如何为我们的HelloWorld在安装时在开始菜单中提供卸载的快捷方式. 一 添加卸载快捷方式 添加卸载的快捷方式也是通过<Shortcut>元素

Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析

原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows Installer安装数据包.msi文件所需的信息. .wxs的文件格式为: <?xml version="1.0"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> - </Wi

Wix学习整理(5)——安装时填写注册表

原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.详细介绍参考维基百科--注册表. 如何操作注册表? 通过工具Windows操作系统自带工具regedit.exe即可对注册表进行添加.删除.修改等操作. 注册表的五个分支 注册表有五种分支:HKMU.HKCR.HKCU.HKLM和HKU.下面对这五种注册表分支进行简单介绍, HKMU:全称HKE

Wix学习整理(1)——快速入门HelloWorld

原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Installer安装包数据库的元素.关于Wix的详细介绍,查看Wix Tutorial. 通过http://wix.codeplex.com/,我们下载最新的Wix toolset,并进行安装. 2 1+1=2 动手实践是感受最深的方式.下面我们就通过制作一个简单的HelloWorld安装包来感受一下Wix.

Wix学习整理(6)——安装快捷方式

原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注册信息的基础上为HelloWorld的安装包添加安装快捷方式.下面我们将以安装开始菜单快捷方式为实例详细地阐述一下Wix的关于安装快捷方式的基础知识. 首先,我们要定义好目录结构. 开始菜单快捷方式的安装目录结构与应用软件的实际安装目录结构不一样. <Directory Id="Program

Wix学习整理(3)——关于Windows Installer和MSI

原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和配置服务,其实现了软件安装的业务逻辑:如何安装软件?如何修改注册表键值?如何创建快捷方式?如何操作网站目录或注册服务?等等.Windows Installer技术由两部分组成:客户端安装程序服务(Msiexec.exe)和Microsoft软件安装包文件(MSI). 关于MSI Windows In

Wix打包系列(七) 添加系统必备组件的安装程序

原文:Wix打包系列(七) 添加系统必备组件的安装程序     我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Framework组件作为必备组件为例:         7.1 检测.Net Framework 版本         步骤1:为安装项目添加WiX .NET extensions库的引用     如果是命令行方式使用wix,那么需要在candle和light的时候添加如下参数: -ext W

【Cocos2d-x for WP8 学习整理】(1)创建一个新项目

原文:[Cocos2d-x for WP8 学习整理](1)创建一个新项目 喜大普奔                         10.1假期之前看到了一个很振奋的消息,就是随着Cocos2d-x 2.2的发布,WP8/WIN8有史以来第一次的合并到主版本了. 之前 V2.X 在preview 版本持续了好久,搞的我一直以为微软已经放弃这么个强大的引擎了,只去支持Unity了,结果很意外的在 2.2的更 新版本,这一次,终业余兵终于转职业了,作为一直以来都被边缘化的WP开发者,我表示十分特别

Wix打包系列(四) 自定义UI

原文:Wix打包系列(四) 自定义UI     除了标准的安装界面,如果我们要在安装时需要提供一些额外的信息时,这时就需要自定义界面来显示和录入这些信息.         4.1  自定义对话框     如上一章中我们测试数据库的连接串在源文件中定义的,如果我们需要用户安装时输入数据库信息,就需要添加一个如图的对话框.     开始之前,我们先看看标准的WixUI_Mondo UI包含哪些对话框: 1: BrowseDlg 2: CustomizeDlg 3: DiskCostDlg 4: Li