在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装。安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件导致系统运行出错。本文主要介绍基于DevExpress的Winform程序安装包的制作内容,包括VS2010和VS2013/V2105的不同处理方式。
我们知道,VS2010是最后一个可以使用微软安装包制作工具的VS版本了,所以后面VS2012/2013/2015版本都需要使用第三方安装包制作工具,微软推荐使用Install Shield打包工具,本文以这两个环境进行介绍安装包的制作出来。
1、VS2010使用微软安装包制作工具
在该版本及之前的VS 开发工具,都是使用微软自带的安装包工具进行打包,方便快捷,虽然也听说过 Install Shield等大名鼎鼎的安装包制作,但是集成的东西,总是感觉方便一些,而且也能够应付大多数的安装包制作情景,不知道为什么微软把它从后续的版本中移除。
不过庆幸VS2010版本还是继续能够使用其内置的安装包制作工具,本小节介绍的就是基于这个内置安装包制作工具做我们的DevExpressWinform程序。
1)准备好待发布的安装文件
做安装包的时候,一般可以使用项目引用的方式来构建(如活动项目输出的方式),不过我们可能需要对生成的DLL进行一下混淆等特殊处理,所以一般我们是创建一个目录来放置需要发布的文件的。如下所示,我在Bin目录下创建一个DeployedMis的目录,用来存储待发布的文件的。
然后我们在Debug或者目录里面,把对应的exe或者DLL文件进行混淆操作,我们一般可以选.NET Reactor混淆工具进行处理一下,如下所示。
然后我们把生成的Debug目录的文件复制一份到DeployedMis目录,并把混淆生成的文件替换原有的文件就可以了。最后顺带捎上汉化文件(如zh-Hans目录里面的文件)、RDLC报表文件、Excel导入模板和其他资源文件,如下图所示。
2)制作VS安装包
目前我们就准备好发布的文件了,接下来的就是要启动安装包的制作方面的事情了,先在VS解决方案里面创建一个VS安装包工程项目,如下所示。
然后设置好安装包的一些基础信息,如公司信息、产品名称等关键信息,也就是在安装包的项目里面打开属性,得到界面如下图所示。
然后我们在文件系统视图里面,创建相关的目录,并加入相关的文件,注意【应用程序文件夹】目录下的文件就是我们安装到客户目录的文件内容,在这里加入一些主程序exe,然后会自动引入一些DLL的文件的,所以最终得到下面的工程界面截图。
我们在exe的主程序上面右键,创建一个快捷方式,设置好图标后,复制到用户桌面就会成为一个快捷方式的连接了。
如果我们需要为程序添加一个卸载快捷方式,那么我们在【应用程序文件夹】里面加入C:\Windows\System32\msiexec.exe的系统文件,然后创建一个它的快捷方式,复制到对应的目录上,如下界面所示。
卸载的快捷键还需要设置一些安装包的产品ID才能进行卸载处理,如下所示。
其中属性需要设置Arguments参数为:-x {CB83AA8B-4504-48FF-BF3B-E269CC3244EA},其中-x后面的参数就是我们安装项目的ProductCode内容。
弄好这些,我们编译整个安装包就可以生成一个符合实际生产需要的安装包了,安装包同时也具有程序的卸载功能快捷键了,在Win10系统中的菜单如下图所示。
有时候,为了方便检查是否主程序的自动引用少了某些文件,我们还可以检查【检测到的依赖项】列表,查核是否少了某些文件,如果都符合,那么就肯定没问题了。
如上图所示,我们看到添加主程序后的自动检测的引用文件,就包含了DevExpress的相关DLL了,这样我们做成安装包后,客户安装这个安装包就可以使用DevExpress的界面内容了,而不需要在客户端完整的安装一套DevExpress组件了。
2、VS2013及以上,使用InstallShield安装包制作工具
在VS2013上,我们就需要使用InstallShield进行安装包制作了,我曾经在之前的博客里介绍过利用InstallShield制作安装包的操作《基于InstallShield2013LimitedEdition的安装包制作》,在使用VS2013创建安装包之前,我们需要安装一个InstallShield的版本,其中LimitedEdition是一个可以申请免费账号使用的版本,当然专业版InstallShield是收费,而且费用也不低的了。使用LimitedEdition,我们也可以创建一般的安装包,本文主要介绍基于LimitedEdition版本的安装包制作。
安装完毕LimitedEdition版本后,我们可以在VS的新建项目里面,有一个安装包的创建工程模板了。
在做基于DevExpress的Winfrom系统InstallShield安装包,我们一样要做上面的事情,就是需要准备一个专门的目录用来放置编译并混淆好的DLL,这样我们在InstallShield LimitedEdition加入主程序的时候,会自动引入所需的DLL以及方便添加所需的资源文件了。
InstallShield工具提供了辅助的各个步骤的操作,基本上我们按照要求处理就可以实现了,具体操作指引界面如下所示。
例如,我在云会员系统的客户端安装包,就是使用这个InstallShield工具进行打包的,设置主安装项目的信息如下所示。
在安装包的制作过程中,最为关键的就是所需文件的添加处理了,如果添加正确,就能正常进行编译、安装操作,否则就容易编译过不了。
我们在【Application Files】里面,添加所需的文件,主要添加主程序以及所需的一些文件,相关的引用DLL可以通过依赖进入。操作如下所示。
如果我们单击左边【Files and Folders】,我们就可以更加详细的操作整个安装包的文件和目录内容了。
如可以查看主程序文件的依赖文件操作。
单击上图右键菜单的【Dependencies from scan at build...】的时候,我们可以看到主程序集带入的相关DLL引用,里面有很多DevExpress相关的DLL,我们可以通过检查这个列表,确认是否少了一些特殊的DLL引用,如果少了,我们再添加对应的文件到安装包目录里面就可以了。
接着可以在其他步骤增加快捷方式,如增加启动程序、卸载程序的快捷方式,如下所示。
我们也可以通过【Shortcuts】功能进入更加直观的界面显示,如下所示。
以及图标修改等操作,还有就是可以修改修改默认安装界面,最后可以得到安装包的界面如下所示。
以上就是两种不同方式的安装包制作的过程,希望能够帮助您在使用并发布DevExpress程序的时候有所帮助,也就是如果在VS2010上开发,我们可以使用微软内置的安装包制作工具,如果是VS2012、VS2013、VS2015等版本上,我们就可以使用InstallShield工具进行安装包制作了。两者制作的总体思路和配置信息是差不多的,不过使用界面和方式有所差异,习惯就好。
基于DevExpress的Winform程序安装包的制作的更多相关文章
-
C#软件winform程序安装包制作及卸载程序制作
使用vs2010 winform程序开发的软件的人比较多,程序的开发是为了在不同的人不同的机器使用,为了使不同的机器能使用该软件就需要在制作程序安装包,安装包里必须包含该软件运行所选的所有环境,下面就 ...
-
使用VS2015打包winform程序安装包简单方法(不需要InstallShield)
转载自: DGPLM博客 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)
-
总结开发中基于DevExpress的Winform界面效果
DevExpress是一家全球知名的控件开发公司, DevExpress 也特指此公司出品的控件集合或某系列控件或其中某控件.我们应用最为广泛的是基于Winform的DevExpress控件组,本篇随 ...
-
Mac OS平台下应用程序安装包制作工具Packages的使用介绍
一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...
-
使用WinRar软件制作程序安装包
之前我写过使用好压软件打包程序,见随笔: 使用好压(HaoZip)软件打包EverEdit制作安装程序 - Fetty - 博客园http://www.cnblogs.com/fetty/p/4907 ...
-
用inno Setup做应用程序安装包的示例脚本(.iss文件)(
用innoSetup做应用程序安装包的示例脚本(.iss文件),具体要看innoSetup附带的文档,好象是pascal语言写的脚本. 示例1(应用程序.exe,客户端安装): ;{089D6802- ...
-
【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...
-
制作Linux下程序安装包——使用脚本打包bin、run等安装包
制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...
-
php实现在线下载程序安装包功能
在线下载程序安装包可以很方便在服务器端下载各种程序安装包(Discuz!.phpwind.Dedecms.WordPress....等一些常用程序)并存储在服务器,大大减少站长上传程序安装包时间.默认 ...
随机推荐
-
【Django】--Models 和ORM以及admin配置
Models 数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库 <1>sqlite django默认使用sqlite的数据库 ...
-
MVC, MVP, MVVM比较以及区别(下)
上一篇得到大家的关注,非常感谢.一些朋友评论中,希望快点出下一篇.由于自己对于这些模式的理解也是有限,所以这一篇来得迟了一些.对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己 ...
-
NUC_HomeWork1 -- POJ1088(DP)
D - 滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mic ...
-
ubuntukylin提取root权限及mongoDB部署
UbuntuKylin下安装Mongodb (参照UbuntuKylin下安装Mongodb一文安装成功后的心得) 1.官网下载安装包 http://www.mongodb.org/dr/fastd ...
-
W5500问题集锦(二)
attachment_id=5620" rel="attachment wp-att-5620" style="margin:0px; padding:0px; ...
-
Android中的ContentValues用法
ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而 ...
-
Obj-C 实现 QFileDialog函数
Obj-C 实现 QFileDialog函数(getOpenFileName/getOpenFileNames/getExistingDirectory/getSaveFileName) 1.getO ...
-
人生苦短之---认识Python
认识 Python 人生苦短,我用 Python —— Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...
-
第 9 章 DOM 的增删改查
DOM 的增删改查 本文不会详细讲解,只是简单提及知识要点,详细可以参考<dom高级编程>. 1. document.write document.write('<h1>创建节 ...
-
pyspider源码解读--调度器scheduler.py
pyspider源码解读--调度器scheduler.py scheduler.py首先从pyspider的根目录下找到/pyspider/scheduler/scheduler.py其中定义了四个类 ...