博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wix 安装部署(五) Bootstrapper 捆绑安装
阅读量:6908 次
发布时间:2019-06-27

本文共 2430 字,大约阅读时间需要 8 分钟。

原文:

     Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来。可惜有很多加了锁的功能在InstallShield Limited Edition 版本中是用不了的。 但基本满足安装需求了。按照这个目录(下图)一个一个去配,配出来的也像样了(这里就不说了)。但是无法定制行为,以及打补丁等。wix又是一个极端,完全依赖xml。这两天想解决自动检测.net framework版本没有就自动安装的功能和注册dll的就很费劲。 在Windows Installer中分别在Redistributables和Registry中设置就行了,特别是注册,可以直接把目录从你自己的电脑上拖过来。但今天要讲的,就是wix中的Bootstrapper 项目,制作一个捆绑安装程序,也是Windows Installer中没有的。将多个需要安装的文件,按照顺序一次性装完。

      

一、Bootstrapper 初识 

     起因:wix的Setup 项目是无法自动安装.net framework的,必须要通过bootstrapper 应用程序去驱动wix中的Burn引擎来安装。在wix中只能判断有无合适的版本再终止安装。前提是要引入WixNetFxExtension.dll。xml代码如下

    所以需要新建一个bootstrapper 项目

   

  会生成一个Bundle的wxs文件 支持四种文件格式

  • <MsiPackage>
  • <ExePackage>
  • <MspPackage>
  • <MsuPackage>
ContractedBlock.gif
ExpandedBlockStart.gif
View Code

二、如何捆绑

    目的:检测.net版本,没有匹配的就自动安装,然后再安装我们自己的工程。

   1.先在Bootstrapper工程中引用WixNetFxExtension.dll 这个动态链接库中 已经包含了各种.net 版本

   2.在Chain 元素中添加安装清单。

    这里PackageGroupRef Id的意思就是没有.Net Framework4.0就从web上下载了安装,当然你如果安装了4.5,这个是向下兼容的,不会再给你装一个4.0。其他版本的如下所示:

NetFx40Web

.Net Framework 4.0 Full web setup.

NetFx40Redist

.Net Framework 4.0 Full standalone setup.

NetFx40ClientWeb

.Net Framework 4.0 Client Profile web setup.

NetFx40ClientRedist

.Net Framework 4.0 Client Profile standalone setup.

NetFx45Web

.Net Framework 4.5 web setup.

NetFx45Redist

.Net Framework 4.5 standalone setup.

   这里的MsiPackage就是我们自己的打包工程,会在.net版本确定之后安装,且地址对就行了,没有必要复制到根目录下,生成的时候他会自动一个exe安装文件。 但是 所以在Bootstrapper中的安装程序都是没有窗口的。安装顺序一个个默默的装完,没有上一步,下一步。和Click Once部署的一样。一次性装完。

  

  3.安装文件设置。

    上面就是一个简单的捆绑安装程序了,我们还可以进一步配置。 可以现在Fragment元素中把文件先设置好,在加入到链表中。

 ExePackage 就是专门针对exe文件,MsiPackage正对msi文件,其他以此类推。说几个重要的属性:Compress=“yes” 表示是压缩,no的话,debug中这个安装包就会独立出来,全部是yes的话最终就一个exe文件。

Permanent="yes" 表示如果是卸载的话,这个文件会保留,为no的话,用户卸载的时候会一起卸载掉。VersionNT 变量代表系统,5.1指的是xp

4.判断是否注册。 

  我们用RegistrySearch来搜索注册表,切可以制定检测顺序 

这里的表示的就是在执行Path之后在执行第二个注册表搜索,且结果你存储在Variable中的,而这个Variable就可以作为,是否安装的一个条件。

  这种一次性安装的方式还是觉得不太好,有些强制性。这里只做个简单的参照。

 很多PC软件都是可以自动检测版本,下载更新,VS自带的ClickOnce也可以运行前自己动检测,发现新版本会去提示下载更新,需要借助一个发布网站就行。但那个可配置性就更  低了。应该还有其他的方法,求路过大侠指点一二。

转载地址:http://maycl.baihongyu.com/

你可能感兴趣的文章
从0开始学java——JUnit4 复习,其实基本思想还是那些,不过采用了新的注释格式的语法...
查看>>
lintcode:Length of Last Word 最后一个单词的长度
查看>>
GNU M4 - GNU Project - 免费软件基金会(FSF)
查看>>
OCP-1Z0-051-名称解析-文章7称号
查看>>
keepalived双BACKUP加nopreempt失效、手动监控服务脚步。
查看>>
form表单回车提交问题,JS监听回车事件
查看>>
ubuntu12.04 修改登陆用户 为root
查看>>
silverlight开发实例(Prism+MVVM+RIA)(二)--创建shell及用户登录
查看>>
jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select
查看>>
Project Euler 85 :Counting rectangles 数长方形
查看>>
MYSQL查询某字段中以逗号分隔的字符串的方法
查看>>
Excel设置下拉菜单并隐藏下拉菜单来源单元格内容
查看>>
Java8初体验(二)Stream语法详解
查看>>
微服务架构——不是免费的午餐
查看>>
基于HTML5的Web SCADA工控移动应用
查看>>
VS 2015相当不错的功能:C#交互窗口
查看>>
hive复杂类型与java类型的对应
查看>>
[Ubuntu] ubuntu10.04系统维护之Wine的安装
查看>>
iOS获取UIView上某点的颜色值
查看>>
cocos2d-x 3.0 android mk文件 之 自己主动遍历*.cpp文件
查看>>