博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wix 安装部署教程(四) 添加安装文件及快捷方式
阅读量:6250 次
发布时间:2019-06-22

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

原文:

      通过之前三篇的介绍,大家对wix的xml部署方式也应该有一些认识,今天天气不错,再来一发。主要介绍桌面,开始菜单,卸载等功能的如何添加。希望园友们支持!

一、如何添加文件

     Demo打包程序很简单,就一个exe,但实际过程中,往往还要引用一些dll,配置文件。我们如何安装到目标文件下呢。这个就比windows installer 麻烦些了,在windows installer中直接一个添加引用就可以了。 但wix也不麻烦,首先要明白各个元素的作用,Directory定义了安装目录,ComponentGroup和DirectoryRef包含的Component和File 定义文件的正真的路径。然后Feature 就是一个安装清单,告诉wix需要安装的文件是哪些。 我们试着在安装目录下增加一个文件,放入一个dll和一个xml文件。

    1.先在wix工程中新建一个文件夹,把我们需要打包的文件copy进来。

    2.再修改目标文件夹。在Setup07下面加入一个Id="Demo"的Directory

   3.定义需要添加的文件的位置。在Framment 元素块。添加一个DriectoryRef 元素,id指向Demo,

   如果想保持文件,在卸载的时候不被删除,用Permanent

 

我们可以看见,对于ComponentGroup直接用的是Dirctory属性INSTALLFOLDER指向上个Fragment中的Directory。他其中的file都可以安装在Setup07文件夹下。而我们的DirectoryRef 的Id指向我们创建的Demo文件夹,这里要说明的是Component 安装组件的意思,是必须和feature元素对应起来的,且其中可以包含多个File。然后修改我们的Feature元素。添加一段。关于Guid,直接在VS -工具-创建GUID 再copy出来就行。 不用每次都那么生成,把生产的随便改几个数字也行。

 这个ComponentRef就直接对应了id为Variable.xml的Component的元素,告诉wix 需要安装一个这样的组件。 这样在生成就可以安装了。在你的C:\Program Files (x86)\Setup07\Demo 目录下就可以看见dll和xml文件了。 

  上面的ComponentGroup也可以改掉。 效果一样。

.......
View Code

二、增加菜单栏快捷方式

   我们先在菜单栏中加入快捷方式

   1.在安装目录Fragment元素中,添加一个Directory。记住这个要插入在<Directory Id="TARGETDIR" Name="SourceDir"> 下面。

  这里的ProgramMenuFolder就是只的windows的开始菜单,第二级的directory就是要在菜单中显示的文件,名称为wixsetup。

   2.接下我们再这个目录下加入快捷方式,需要用DirectoryRef元素了。Shortcut 就是生成快捷方式的元素。

  需要说明的是,Target的写法,指向我们安装目录下的exe,中括号中加入directory的Id,再紧跟应用程序的名字。 这里的RemoveFolder和Registry元素,官方文档说是为了避免出现ICE 验证错误才结合Shortcut一起出现,我也有点晕,只能先加上了。感兴趣的可以看下这里的 对这种验证的解释。vs生成出错,都是ice开头的。

最后我们在feature中加入Component的列表。

  在编译生成,安装完成后,我们的菜单栏中就会出现WixSetup/Mysetup的目录。打开可以运行,但这个时候快捷方式的图标还没有改变,先记住这个问题,再继续往下走。

 最近发现一个奇怪的问题,需要做成快捷方式的exe,他们的id必须和文件一直,否则这个快捷方式在安装之后找不到这个exe。

.... 

 而如果换成加密的那种id,却找不到。

 此时的全代码如下

1
NOT Installed AND NOT PATCH
Installed AND PATCH
1
1
1
LicenseAccepted = "1"
1
1
1
1
WixUI_InstallMode = "Change"
WixUI_InstallMode = "InstallCustom"
1
WixUI_InstallMode = "InstallCustom"
WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"
WixUI_InstallMode = "Change"
WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"
WixUI_InstallMode = "Update"
1
1
1
1
1
WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed
View Code

三、增加网页和卸载快捷方式

  在菜单栏的基础上,再增加一个Web快捷方式,可以跳转到你的门户网站。需要3步

   1.先引入WixUtilExtension.dll  这个就不多说了(之前引用过)。

   2.在工程的命名空间中加入这个扩展。这个就相当于c#的using了。

  3.在二中的Component中加入

  和之前的Shortcut在同一级。 这样就ok了。再次安装多出一个online的快捷方式,点击跳转到指定网页。

  我们再增加个卸载的快捷方式,现在只需要再添加个Shortcut就行了,Id为UninstProduct

Target指向msiexec.exe 这才是正真执行卸载的程序,[SystemFolder] 对应它的位置。Argument通过productcode告诉它哪个是要卸载的程序。/x 就是卸载命令到这里差不多就完成了。但是之前图标没有换过来。这里就给第一个Shortcut加上一个图标。 修改为

 就在这个内部加入了一个Icon属性和元素。Id命名的时候建议加上一个Icon,然后ico的图标制作,可以找在线的。这一块的代码如下

View Code

效果图如下:开始菜单栏中有三个图标,第一个是我们的应用程序,这个ico 看起有点模糊了。在线和卸载的图标是默认的,没有修改

四、增加桌面快捷方式

   现在我们还差一个桌面的快捷方式。经过几番摸索,还是整出来了。

  1.需要先增加一个文件目录 ,这就代表了再桌面。

 2.再加入Shortcut,这个shortcut就不能在之前的那个地方写了,因为那是菜单栏的。 必须用DirectoryRef ,但icon还是可以用同样一个

 注意,下面那个RegistryValue不加不行,果然ICEXX.... 报错。需要注册一下。 这样,再编译安装,桌面出现了快捷方式,程序运行时,在windows窗口下方的图标也变了,不再是默认的windo程序的图标了。

  这一节就到这了,明天继续努力。还是那句老话:周六加班不容易,看过路过,有帮助的就顶一个。 :)

    

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

你可能感兴趣的文章
I00024 出钱买羽
查看>>
原生js实现点击下载图片
查看>>
WinCE winform 开发注意事项
查看>>
linux下文件的一些文件颜色的含义
查看>>
OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能
查看>>
Leetcode | Binary Tree Zigzag Level Order Traversal
查看>>
websotrm注册码
查看>>
迭代器(Iterable)和for..in..的三种协议
查看>>
Gephi可视化(一)——使用Gephi Toolkit创建Gephi应用
查看>>
判断浏览器是否为顶层窗口
查看>>
数据结构化与保存
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
没有发布过产品的程序员不知道什么是真正的软件
查看>>
图论 - Travel
查看>>
服务器设计笔记(3)-----消息队列
查看>>
吐槽一下wp toolkit ToggleSwitch控件
查看>>
Ubuntu16.04上Docker的安装及基本用法
查看>>
步步为营 C# 技术漫谈 四、垃圾回收机制(GC)
查看>>
WPF基础之体系结构
查看>>
Linux源码-等待队列注释
查看>>