Wix使用笔记(七) 添加系统必备组件的安装程序
- 博客分类:
- 技术杂绘
Wix使用笔记(七) 添加系统必备组件的安装程序
2010年11月02日
我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件。这里以.Net Framework组件作为必备组件为例:
7.1 检测.Net Framework 版本
步骤1:为安装项目添加WiX .NET extensions库的引用
如果是命令行方式使用wix,那么需要在candle和light的时候添加如下参数: 如果在vs中使用wix,那么需要添加WixNetFxExtension.dll的引用,在wix安装目录下可以找到它。
步骤2:为安装项目添加WiX .NET extensions命名空间
添加了.NET extensions引用之后,还必须为源文件添加.NET extensions 命名空间,方式是为Sample.wxs源文件中Wix元素添加如下属性:
步骤3:引用适当版本的Property
在.NET Framework extensions 已经定义了所有现有版本的.NET Framework的Property,包括service pack版本。如果我们需要在安装项目中使用这些属性,就必须使用引用它们;比如我们需要检测.Net Framework 2.0,就必须添加相应的Property引用:
"NETFRAMEWORK20"就是.NET Framework extensions 中预定义的.Net Framework 2.0的属性;如果需要检测中文语言包,那么还必须添加"NETFRAMEWORK20_ZH_CN_LANGPACK" 属性;查看所有现有版本的.NET Framework的Properties,可以翻阅wix 帮助文档。
我们可以在安装程序的启动条件中使用预定义的属性,从而判断系统是否安装指定的.NET Framework组件,如: 上面代码意思是:如果没有安装.Net Framework 2.0, 将会中断安装程序执行,Installed 表示如果在修复或卸载安装时将不会检测.Net Framework组件。
步骤5:编译生成安装程序
在一个没有.Net Framework 2.0的系统环境中运行生成的安装程序,弹出提示安装.Net Framework 2.0的错误,然后安装程序被终止。
现在我们的安装程序已经可以检测.Net Framework 2.0是否安装了,但是一般情况下,我们希望将.Net Framework组件作为安装程序的一部分,当检测到系统没有安装.Net Framework组件的时候会自动安装.Net Framework组件。windows installer不能将这些组件打包到我们安装程序中,但是我们可以跟vs打包一样,使用引导程序(bootstrapper)来实现,引导程序会先执行.Net Framework组件的安装,然后再执行我们的安装程序。下面我们提供2种方法,一种是编写xml代码的方式在Visual Studio中生成带引导程序的安装文件,另一种是使用BMG工具。
7.2 使用Visual Studio制作系统必备引导程序
wix本身不提供引导程序,但是我们可以使用Visual Studio中ClickOnce deployment部件提供的bootstrapper引导程序;下面我们来看看如何为.Net Framework组件生成ClickOnce 引导程序bootstrapper。
步骤1:在Visual Studio中创建并编译wix安装项目
要生车ClickOnce bootstrapper引导程序,我们不能再使用命令行模式,必须使用VS编译环境;在vs2005或以上版本,新建wix项目:
移除Product.wxs,将Sample示例源文件拷贝到wix Project所在的目录,并添加到wix项目中;添加wix命名空间中的wix Extension组件的引用,如图:
使用candle命令编译时,我们使用了变量参数-dVersion=1.0.0,这里同样需要设置,右键项目名称--》属性--》Build选项卡--》设置Build参数:
最后编译生成Sample项目,生成的安装文件在..\bin\Debug\zh-cn下,我们也可以在上面的Build参数中指定安装语言,也可以同时生成多种语言版本的安装程序。 需要注意的是:在使用vs制作中文安装包时,如果引用了WixSqlExtension组件,那么就必须把SqlExtension的中文资源文件( 点击下载)包括在项目中,否则会编译错误。而在命令行模式下制作中文安装包时,可以不使用SqlExtension中文资源文件,默认会使用自带的英文资源文件。 步骤2: 用编辑器打开.wixproj文件
首先,在vs中打开示例中的Sample项目,然后在解决方案管理器(Solution Explorer)中右键Sample项目,选择卸载项目(Unload Project),继续在解决方案管理器(Solution Explorer)中右键Sample项目,选择编辑Sample.wixproj。
步骤3: 添加必备组件的条目
在Sample.wixproj文件的下添加如下代码: Include 特性用于表示应安装的必备组件的名称。ProductName 项元数据是可选的,它作为备用项供生成引擎在找不到包时用作用户友好名称。除非未指定 ApplicationFile,否则这些项不是必选 MSBuild 输入参数。对于必须为应用程序安装的每个必备组件,都应包含一个相应的项。
如果 BootstrapperItems 和 ApplicationFile 参数均未指定,则会导致生成错误。
步骤4:添加生成引导程序的任务
在Sample.wixproj文件中添加如下代码:
SDK\v2.0\BootStrapper\"/>
ApplicationFile指定引导程序在所有必备组件安装完以后开始安装应用程序时使用的文件的路径;$(TargetFileName)是安装程序的名称,如果是制作中文安装包,wix安装工程默认生成的安装文件在输出目录下的zh-cn目录下,这里根据实际生成目录的结构填写不同的路径
ApplicationName是在bootstrapper引导程序执行时显示的应用程序的名称;
BootstrapperItems指定要生成到引导程序中的产品;
ComponentsLocation指定引导程序寻找要安装的安装必备组件的位置。此参数可具有下列值:
HomeSite:指示必备组件由组件供应商托管。 Relative:指示必备组件与应用程序在同一个位置。 Absolute:指示所有组件都将在一个集中的 URL 下找到。该值应当与 ComponentsUrl 输入参数结合使用,ComponentsUrl 指定包含安装必备组件的 URL。 如果未指定 ComponentsLocation,将默认使用 HomeSite。 CopyComponents如果为 true,则引导程序会将所有输出文件复制到 OutputPath 参数指定的路径。BootstrapperComponentFiles 参数的值都应当基于此路径。如果为 false,则不复制文件,而且 BootstrapperComponentFiles 值将基于 Path 参数的值。
OutputPath指定 setup.exe 和所有包文件要复制到的位置,这里设置的目录是应用程序安装文件的输出目录。
Path指定所有可用的必备组件包的位置,示例中的Path路径是对于安装了VS2005的用户而言的,如果是安装了VS2008的用户,则Path的值应该是:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper
步骤5:生成安装程序
保存修改后的Sample.wixproj文件,在解决方案管理器(Solution Explorer)中右键Sample项目,选择重新加载项目(Reload Project),在弹出窗口中选择"是",然后生成项目。
我们来看看效果,在没有.Net Framework 2.0的虚拟机中,运行setup.exe,会弹出安装.Net Framework 2.0的界面,如图:
点击接受会开始安装.Net Framework 2.0组件,安装完.Net Framework 2.0后会自动安装Sample.msi。
7.3 使用BMG工具制作自定义系统必备引导程序
在使用ClickOnce发布时,vs自带了一个系统必备的列表(包括.Net Framework 和c++运行库等),列表中的必备程序我们是可以用上面的方法制作引导程序;但是这种方法只适用于将系统必备列表中的组件打包,而且需要编写一些xml代码,更好的方法是使用BMG(Bootstrapper Manifest Generator)工具,用它可以不用写任何代码为系统必备列表添加新的第三方组件,而且还可以为组件和安装程序创建引导程序。
这里我用一个usb key的驱动程序作为安装必备程序的示例:
1、下载安装BMG
2、打开BMG,版本信息如下:
3、点击菜单File->New打开新建项目对话框,选择Package Manifest项目类型。在弹出的对话框中输入Project Name和Product Code;
5、点击OK,出现如下界面,输入Display Name,其他属性可以选填,然后点击Build生成
7、接着点击菜单->New,项目类型选择MSBuild,点击OK后,出现如下界面:
在General选项卡中输入生成安装文件的名称Name,选择要安装的文件Installer。
8、接着点击Package选项卡,选择.net Framework 2.0 和USBKey Driver
9、点击Build按钮,选择生成目录,确定后生成MSBuild项目,在输出目录下生成安装文件和引导程序如下:
10、运行setup.exe安装引导程序,会出现安装USBKey Driver组件的界面,如下:
这里制作的USBKey Driver必备程序并没有设置启动条件和检查,也就是说不管机器上有没装这个驱动,都会执行驱动安装程序,要设置启动条件和检查,可以在第5步中设置相关的属性,具体可参考bmg帮助文档
发表评论
-
VisualTreeHelper知识点
2012-01-20 01:09 593VisualTreeHelper知识点 2010年08月16 ... -
加快RIA开发效率之Flex插件
2012-01-20 01:08 510加快RIA开发效率之Flex插 ... -
关于Java环境变量的学习
2012-01-20 01:08 630关于Java环境变量的学习 ... -
如何配置Tomcat 5和IIS 5协同工作
2012-01-20 01:08 642如何配置Tomcat 5和IIS 5协同工作 2010年06 ... -
各种编程语言介绍
2012-01-19 08:58 624各种编程语言介绍 2011年07月09日 【IT168知 ... -
对比java和python
2012-01-19 08:57 911对比java和python 2011年04 ... -
Android开发之Android体系架构介绍
2012-01-19 08:57 997Android开发之Android体系架构介绍 15小时前 ... -
[强帖转载]C++、java、.net关系
2012-01-19 08:57 650[强帖转载]C++、java、.net关系 2011年03月 ... -
BusyBox 简化嵌入式 Linux 系统 (转载)
2012-01-19 08:57 561BusyBox 简化嵌入式 Linux 系统 (转载) 20 ... -
选择不对,努力白费。活着就要对得起父母和自己
2012-01-17 01:28 363选择不对,努力白费。活着就要对得起父母和自己 2011年10 ... -
转:“让大家两年不买房”,真有意思啊!!
2012-01-17 01:28 378转:“让大家两年不买房”,真有意思啊!! 2011年11月0 ... -
。。。
2012-01-17 01:27 552。。。 2011年11月19日 浣 -
经典人生哲理之成功法则
2012-01-17 01:27 534经典人生哲理之成功法则 2011年10月13日 澶辫触骞 ... -
第五卷《鏖战雁门(下)》第41章《良夜》
2012-01-15 20:08 578第五卷《鏖战雁门(下)》第41章《良夜》 2011年01月0 ... -
微小说。(5)
2012-01-15 20:08 470微小说。(5) 2011年12月21日 1、他鼓足勇气和 ... -
中华隋唐年间历史上真实的18条好汉(隋炀帝~唐高祖)
2012-01-15 20:08 775中华隋唐年间历史上真 ... -
隋书 卷四十七??列传第十二
2012-01-15 20:08 500隋书 卷四十七??列传第十二 2011年03月29日 韦 ... -
第六卷《霍邑争锋》第49章《谣言》
2012-01-15 20:08 695第六卷《霍邑争锋》第49章《谣言》 2011年01月17日 ... -
巧用hosts文件,解决急手问题
2012-01-11 12:18 534巧用hosts文件,解决急手问题 2011年03月01日 ... -
Struts2实战 读书笔记
2012-01-11 12:18 557Struts2实战 读书笔记 2011年03月01日 1 ...
相关推荐
WIX制作C#应用程序安装包
wix3.11版本安装工具
WIX生成MSI包的核心程序,可以直接的通过脚本生成对应的MSI包,生成过程中修改对应的WMS文件来完成程序包的制作。
使用Burn(WiX引导程序),您可以创建安装程序包,以便安装.NET Framework和其他运行时等先决条件以及您自己的产品。Burn允许您下载包或将它们组合成一个可下载的.exe文件。 WiX SDK包括托管和本机库,可以更轻松地...
WiX3.10版本安装工具
wix教程wix教程wix教程wix教程wix教程wix教程
程序中为wix3.7版本,但对于环境对wix3.5到wix3.7版本的需求都可使用(自己已经亲测可用),具体使用方法见压缩包内的readme文件
cargo-wix:创建Windows安装程序的cargo子命令 的子命令,它使用二进制项目的发行版中的构建Windows安装程序(msi)。 如果可以使用提供的应用程序提供代码签名证书,则它还支持对Windows安装程序进行签名。 快速...
WIX 工具生成 MSI 驱动安装包的脚本,打包工具
WiX Toolset v3.11.1 源码 在使用wix toolset 进行打包安装的时候,常常需要自定义界面,自定义界面就需要参照Wix本身提供的模板,在源码中经常会用到的目录是 wix3-wix3111rtm\src\ext\UIExtension\wixlib
使用wix toolset打包C#程序为安装程序msi的实例。
用于 Docker 的 Windows 安装程序 XML 工具集 (WiX) 目前很难以自动化的方式为所有主要平台创建原生的高质量安装程序。 最困难的是 Windows,因为创建 Microsoft 安装程序 (MSI) 文件的唯一本机方式是使用 Microsoft...
[INFO] Skipping 'MSI 安装程序' because of configuration error '找不到 WiX 工具 (light.exe, candle.exe)。' Advice to fix: 从 http://wix.sf.net 下载 WiX 3.0 或更高版本, 然后将其添加到 PATH。 [INFO] ...
elasticsearch-msi-安装程序一组脚本(在 WIX 工具集之上),用于构建 MSI 安装程序,用于将 Elasticsearch 安装为 Windows 服务。 他们将获取 Elasticsearch 和 Oracle Java Server JRE(和 WIX 工具集)并创建一个...
使用jdk的jpackage 打包时需要用到WiX 工具 (light.exe, candle.exe)
wix development for windows installer
Wix Toolset 最新安装包,也包括VS支持包。安装后在VS上找不到Wix的话,就安装VS对应版本的支持包
Wix安装程序示例 安装程序的复杂示例,使用 WiX 工具集开发。