- 浏览: 42098 次
- 性别:
- 来自: 上海
最新评论
我们知道在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文件中添加如下代码:
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帮助文档
发表评论
-
格式化字符串攻击原理及示例
2012-07-06 09:51 631一、类printf函数簇 ... -
12章 正则表达式
2012-07-06 09:45 782笔记: 1. 正则表达式是一种"表示法&q ... -
全面分析Linux正则表达式(三)
2012-07-06 09:37 590Linux正则表达式的 ... -
C#实现屏幕录像 网上看到的看起来不错
2012-07-06 09:30 1664using System; using System. ... -
实现google的下拉列表效果
2012-07-05 20:45 799 -
使用Flex和Actionscript开发Flash游戏――碰撞检测
2012-07-02 10:32 560这一部分,我们加 ... -
flex+blazeds+java(将java整合到flex中)
2012-07-02 10:32 579最近项目中需要Flex与Java进行通信,初步选定使用Bl ... -
Flex 捆绑式验证处理
2012-07-02 10:32 569Flex提供的默认的验证器,比如:日期验证器、货币验证器等 ... -
flex用弹出窗体展示gif
2012-07-02 10:31 518GIFPlayer用于在flex中展示GIF图片。 ... -
Flex4 中使用ModuleLoader为子容器 动态加入到TabNavigator导航器容器中的例子
2012-07-01 00:10 604经常在一些工程中看到 选择左侧目录树 右侧添加TAB加载内 ... -
flex用弹出窗体展示gif
2012-07-01 00:10 585GIFPlayer用于在flex中展示GIF图片。 ... -
为什么使用Flex库
2012-07-01 00:10 570上个星期,我写了 ... -
flex动态生成矢量swf字体--java动态生成swf文件
2012-07-01 00:10 925前言 相信很多在线设计的前端WEB应用会用到字体作为素材的 ... -
Flex 遍历组件的实现
2012-07-01 00:10 723Flex有两个阵营组件:spark组件和mx组件,关于sp ...
相关推荐
WiX(Windows Installer XML)是一个开源项目,用于创建Windows安装程序。它使用XML语法来定义安装过程中的各种组件,如文件复制、注册表项、快捷方式等。WiX 3.11是该项目的一个特定版本,它包含了从早期版本继承的...
MSI包包含了应用程序的所有组件、文件、注册表设置和其他安装相关的信息,确保软件能够正确且一致地在用户系统上安装。 标题中的“WIX生成MSI包的核心程序”指的是WiX工具集中用于构建MSI安装包的主要组件和流程。...
WiX(Windows Installer XML)是微软提供的一款开源工具集,用于构建Windows安装程序。它使用XML格式来描述安装过程,并可以生成MSI(Microsoft Installer)文件,这是Windows平台上的标准安装包格式。WiX3.10是WiX...
在本教程中,我们将深入探讨如何使用WiX为C#应用创建专业且功能完备的安装程序。 1. **WiX基本概念** WiX工具集包括多个命令行工具,如 candle(编译器)和 light(链接器),它们将XML源代码转换为MSI(Microsoft...
使用Burn(WiX引导程序),您可以创建安装程序包,以便安装.NET Framework和其他运行时等先决条件以及您自己的产品。Burn允许您下载包或将它们组合成一个可下载的.exe文件。 WiX SDK包括托管和本机库,可以更轻松地...
WiX支持添加、修改和删除注册表项,这对于配置软件环境和与其他系统组件交互至关重要。 **9. 服务安装和配置** 服务是系统级组件,WiX可以处理服务的安装、启动类型设置、依赖关系等,帮助应用程序以服务形式运行。...
WiX(Windows Installer XML)是一个开源工具集,用于创建Windows安装程序。该工具主要用于构建 MSI(Microsoft Installer)格式的安装包,这是一种标准的Windows安装包格式。标题中的"WIX3.5--WIX3.7安装包"指的是...
2. 可以使用条件语句(`<Condition>`元素)来控制安装步骤,如检查系统版本或已安装的应用程序。 3. 通过`<Directory>`元素定义安装路径和文件结构,`<File>`元素指定要包含的文件。 4. 使用`<Feature>`元素定义...
- 使用WiX,开发者可以创建包含所有必要的组件、文件、注册表项、快捷方式等的安装项目。 - 文档《Wix 安装部署教程.docx》应该详细解释了如何创建一个WiX项目,包括设置项目属性、添加文件、处理依赖关系、配置...
"打开wixproj类型文件必备工具wix311.exe" 是WiX Toolset的一个版本,它包含了所有构建Windows安装程序所需的编译器和工具。WiX Toolset 3.11是其中的一个稳定版本,包含了许多功能,如light(链接器)和candle...
在给定的压缩包"**wix311-binaries.zip**"中,包含了WiX工具集的多个组件,如light.exe和candle.exe,这些在打包JavaFX应用程序时与JDK的jpackage工具配合使用。 **light.exe**是WiX工具集的一部分,它是一个链接器...
WiX(Windows Installer XML)是一个开源工具集,用于创建Windows安装程序。它的核心是XML语法,使得构建安装包变得更加灵活和可维护。标题"WIX.zip_wix_wix install"暗示了我们将探讨WiX用于创建安装程序的过程,...
3. **本地化与多语言支持**:WiX支持多语言包,通过添加不同语言的资源文件,可以让安装程序适应不同地区的用户。 六、实战演练 在"WiX教程.doc"文档中,你将找到更详细的步骤和示例,指导你从零开始创建一个简单...
在实际开发中,通常使用如WiX(Windows Installer XML)工具集或InstallShield这样的安装制作工具来创建这类安装程序类。这些工具允许开发者编写脚本或使用图形界面来定义安装过程,然后生成可执行的安装包。...
这个ZIP文件通常包含了构建安装程序所需的所有组件,包括WiX工具、库和源代码。 1. **WiX工具**: - `wix37.exe`:这是WiX工具集的可执行文件,包含了编译和链接WiX源文件(.wxs)的命令行工具,如`candle.exe`...
总的来说,这个压缩包为使用WiX 3.0和3.7版本的开发者提供了构建中文安装程序所需的语言资源,有助于提高用户体验,尤其是在中国的软件部署环境中。通过正确的配置和集成,开发者可以创建出符合中国用户习惯的、完全...