快捷搜索:  汽车  科技

wix产品分析(Wix安装部署)

wix产品分析(Wix安装部署)来一个小demo♫ ♫ ♫1.先安装Wix311.exe,其实两者并无先后之分。没有过多的操作,在安装界面点击下面这个图标即可。☆注意:如果有电脑管家类的软件,可能会拦截开机启动之类的,请不要阻止否则可能引起安装不成功。 2.安装vs扩展,Votive2017.vsix。直接双击即可安装。

前置条件

1、安装wix程序:https://github.com/wixtoolset/wix3/releases/tag/wix311rtm,选择底部的 wix311.exe, 截稿时最新版为3.11

2、安装vs2017扩展工具:https://marketplace.visualstudio.com/items?itemName=RobMensching.WixToolsetVisualStudio2017Extension 我这里选择的是vs2017版的扩展如果您都做对了,您的电脑里将存在以下两个文件:

wix产品分析(Wix安装部署)(1)

安 装

1.先安装Wix311.exe,其实两者并无先后之分。没有过多的操作,在安装界面点击下面这个图标即可。

wix产品分析(Wix安装部署)(2)

☆注意:如果有电脑管家类的软件,可能会拦截开机启动之类的,请不要阻止否则可能引起安装不成功。

2.安装vs扩展,Votive2017.vsix。直接双击即可安装。

♫ ♫ ♫

来一个小demo

创建一个WPF项目

成功后,您的解决方案面板结构是这样的

接下来对刚刚的WPF应用程序做一点简单的处理,请自由发挥。我这里将窗口背景色改为黑色,并放入一张wix官方的图片。

需要安装的程序,我们就制作好了,接下来,进入主菜:制作一个安装程序,将刚刚制作的WixWpfApp安装到自己的电脑中。

关闭刚刚运行起来的程序,在解决方案面板中添加一个新项目

wix产品分析(Wix安装部署)(3)

这里选择wix项目

至此,您的解决方案面板是这样的

wix产品分析(Wix安装部署)(4)

添加WixWpfApp项目的引用

wix产品分析(Wix安装部署)(5)

wix产品分析(Wix安装部署)(6)

至此,您的解决方案面板是这样的

在打开的Product.wxs文件中,修改以下2个地方:

1、Product节中,找到Manufacturer属性,默认是空的,这里是填作者或者公司的名字 这里暂时不支持中文;

2、找到最底部的ComponentGroup节点,在注释的后边(这里的注释完全可以删除)添加以下内容

<Component Id="ProductComponent">

<File Source="$(var.WixWpfApp.TargetPath)" />

</Component>

修改完后的文件是这样的

至此我们所有的编码工作就结束了。

运行起来!!!

解决方案面板中选中WixWpfAppSetup项目,右键,重新生成

底部看到如下信息,则编译成功

至项目所在文件夹下即可找到安装程序

WixWpfAppSetup.msi即为我们需要的安装程序

双击!!!

至此,一个简(zhuang)单(bi)但(qie)完(sao)整(qi)的应用程序,就被安装到我们的计算机中了。

您是否也发现了一些问题

点击WixWpfAppSetup.msi 就可以安装了。 但这个时候的安装很快,因为比较简单不会有什么进度条,上一步下一步的,安装完成之后桌面和菜单栏中都没有图标,因为你还没有配置让它有。但在c盘下的Rrogram Files(X86)下面可以找到WixWpfAppSetup这个文件夹,打开他里面就是WixWpfApp的exe。可以执行。

还有一个问题就是,只要改变一次这个WixWpfApp,重新生成,那么打包文件也会自动生成一个新的,如果你没有改变,只是重复点生成,打包文件是不会更新的。这其实就是借助了MSBuild的机制,自动生成打包文件。当然这个程序的卸载目前就去控制面板中手动卸载吧。

解释一下

Product.wxs XML文档元素

Wix本身就是基于XML,因此定义了很多特定的元素,这里只是初步认识,深入了解还是需要后面的不断测试。

感兴趣的朋友可以查阅官方文档:http://wixtoolset.org/documentation/manual/v3/

* Product节点 父级只有wix,主要由Id Language,等属性

Id:产品的GUID,GUID可以借助VS-->工具--->创建GUID 会有六种格式来供选择,这里用4 5 6。不要括号。

Language:指所在地区使用的语言,为数字编号

Manufacturer:制作厂商

Name:产品名称

UpgradeCode:产品更新的GUID

Version:版本号

//列举几个常见的区域代号

语言 语言-国家 Language Codepage

English en-us 1033 1252

Simplified Chinese zh-cn 2052 936

Traditional Chinese zh-tw 1028 950

※ 详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/product.html

*Package节点 记录一些安装包的信息

InstallerVersion:安装此安装包需要的最小Windows Installer版本,用Windows Installer的主要版本乘以100 加上Window Installer的次要版本。 比如 “200” 代表的是Windows Installer2.0 而405代表的是Windows Installer4.5.

Compressed: 这个为Yes 表示在源文件中含有压缩文件,对于Merge Module这个属性不必设置。反正为 NoType。

InstallPrivileges:字面意思为安装优先级,有limited 和 elevated两种 后者是默认值。

InstallScope: 值为枚举类型,字面意思为安装范围,值必须是perMachine 或者 perUser。

※详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/package.html

*MajorUpgrade节点 这个元素支持防止降级

AllowDowngrades:即回到低版本,如果设置为No(默认值) 会被阻止,这个时候DowngradeErrorMessage 属性必须设置,以给出提示。

DowngradeErrorMessage:当你安装一个低版本的安装包时会给出的提示。

※详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html

*Feature节点 一个特性表,特性是可安装的最小单元。 子元素中的ComponentGroupRef 是和 ComponentGroup对应的。前者相当于一个安装目录,后者记录了安装文件的具体位置。

Id:是唯一的

Title:就是个短的说明。

Level:安装的等级,值为0 会使这个特性无效,默认值为1

Absent:这个属性定义User是否有权在用户接口中去选择使某个特性不安装(absent),值为allow或者disallow之一

※ 详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/feature.html

*Fragment节点 元素是在wix中创建一个安装数据库的基础块(msi文件就是个数据库),定义之后,是不可改变的(目前不太理解....ORZ)。它的子元素中含有*Ref的元素必须有对应的单元,比如在Fragment中含有两个Component元素,那么 你必须在Feature中用ComponentRef 与Component对应. 默认生成的文档中含有两个Fragment块。 一个包含的是Directory 一个包含的是ComponentGroup ,前者指的是安装目录,后者顾名思义就是Component的一个集合。

※ 详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/fragment.html

*Directory节点 产品的安装目录。第一个Directory Id=TARGETDIR 是根目录,每一个wix工程都会有这个目录元素,第二个Id=ProgramFilesFolder 对应的就是C:\Program Files\ ,64位的就在x86下,第三个元素就是我们自己的应用程序所在的文件夹,最终形成就是c:\Program Files\My Application Name 在默认的提示中 也可以看见在Component 中添加安装文件,资源,注册表等。这里可以看见最里面的Directory的Id=INSTALLFOLDER是和第二个Fragment中的ComponentGroup的Directory属性是一致的。在Component中就是每一个你需要安装的单元以及它的位置。

※ 详见:http://wixtoolset.org/documentation/manual/v3/xsd/wix/directory.html

$(var.WixWpfApp.TargetPath)是wix引用变量。

综上,Directory定义了安装目录,Component定义了组件及位置,Feature定义了组件在安装时的一些特性。Product和package等定义了安装包的信息。所以还是比较语义化的。

下一节中我们将继续进行优化这个项目

源代码码云上可以获取,地址如下:

https://gitee.com/fengxici/sharpDemo-WixInstaller

欢迎拍砖。

wix产品分析(Wix安装部署)(7)

猜您喜欢: