当前位置: 首页 > news >正文

基于DevExpress的Winform程序安装包的制作

在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装。安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件导致系统运行出错。本文主要介绍基于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工具进行安装包制作了。两者制作的总体思路和配置信息是差不多的,不过使用界面和方式有所差异,习惯就好。

 

相关文章:

  • RocketMQ 基本概念
  • 学习设计接口api(转)
  • 【刘文彬】EOS技术研究:合约与数据库交互
  • Altium Designer 8.0不为人知的27个技巧
  • React-redux的原理以及使用
  • Spring MVC JSP页面加载不完全的问题
  • 工程师笔记|浅析AI平台的架构设计
  • Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)
  • 使用docker遇到的问题
  • 武汉区块链软件技术公司:区块链将如何优化产业链?
  • echarts简单使用
  • .NET项目中存在多个web.config文件时的加载顺序
  • Linux工具性能调优系列三:swap问题定位
  • Ubuntu 12.04 root账户开启及密码重设
  • ipv6最长前缀匹配算法
  • 「译」Node.js Streams 基础
  • 【前端学习】-粗谈选择器
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java取消线程实例
  • LeetCode18.四数之和 JavaScript
  • mysql外键的使用
  • 简单基于spring的redis配置(单机和集群模式)
  • 简单易用的leetcode开发测试工具(npm)
  • 前端
  • 前端面试题总结
  • 思考 CSS 架构
  • 为什么要用IPython/Jupyter?
  • HanLP分词命名实体提取详解
  • Prometheus VS InfluxDB
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ()、[]、{}、(())、[[]]命令替换
  • (10)STL算法之搜索(二) 二分查找
  • (2020)Java后端开发----(面试题和笔试题)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)虚函数剖析
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET gRPC 和RESTful简单对比
  • .NET 材料检测系统崩溃分析
  • .net 设置默认首页
  • .net 中viewstate的原理和使用
  • .NET4.0并行计算技术基础(1)
  • .Net中的设计模式——Factory Method模式
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @ModelAttribute 注解
  • @Pointcut 使用
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成