首页 > 代码库 > Winform客户端发布与升级:ClickOnce
Winform客户端发布与升级:ClickOnce
最近一直在用公司老员工留下的一套发布和升级系统,显得麻烦繁琐,然后想着用一套新的发布和升级方式。找网上搜索了很多相关的资料,发现了vs自带的发布方法,可能是之前没有仔细研究过,经过两天的研究和测试,解决了在学习过程中的疑问和如何正确使用的方法。
在说明我在学习过程中的这套方法前,我先来说说目前使用的旧的发布和升级方式,希望做一个对比,这样才能更好的体现新方式的优势。
一、旧的发布和升级方式
1.发布
所谓发布,就是将程序打包成安装包,然后在用户电脑端安装。使用的大宝软件是一个比较老的工具,也是我们公司用的比较多的工具:SetupFactory,该工具的使用方法很简单,各位读者可以自行研究。
2.升级
目前采用的方式是:公司老员工自制的一套升级工具,update.exe 和 update.ini。主要升级经过如下:
我们知道升级分为客户端和服务端。客户端主要指用户使用的程序,服务端主要是最新版本的程序。因为考虑到安装所需要的时间和网速的限制,并不是采用QQ等目前大多数桌面程序的升级方式--直接下载全新的安装包,然后重新安装--我们采用的是只更新需要更新的文件,一般是.dll 和.exe文件。也就是只下载安装根目录中的文件,这样每次更新的文件就比较下了。
首先在系统登录成功后,启动客户端update.exe文件,update.ini保存用户端程序的版本,当出现用户端版本低于服务器版本(专门有数据库存放系统版本),然后开始升级系统,下载本次升级的文件。
我们采用的是服务器放在ftp服务器上,每次更新时,版本的改动和文件的覆盖到服务器等操作繁琐,还容易出现错误。
二、ClickOnce 发布与升级
在旧的升级系统的弊端后,一直在寻找新的方式,我之后的博客中也会一直更新该部分的内容,现在是这方面的一部分。
操作方式现截图如下:
1.创建项目,正常编译运行程序后,右键项目-->发布
2.开始发布设置:注意这里你需要部署一个IIs不武器,这里选择将发布文建直接放到新创建的IIs上。
3.然后一直操作下去,接着是显示的操作。
4.点击确定后,弹出网页。你也可以到对应iis中看,你会发现有多个文件存在目录中。
你的目录中缺少红框部分:dotnetfx40,这部分多出的部分是我后面主要说明的内容。
5.好了,可以直接点击安装或者直接到目录中点击setup.exe,开始程序的安装。
那么我主要说的是为什么是红框部分呢?出现什么问题来呢?
因为我们看见有些用户电脑运行环境没有对应的netFramework版本,这样他们可能没法安装系统了,或者需要到微软去下载对应的运行环境。你们知道,微软官网打开比较慢,况且下载程序,有时候会给用户很差的体验或者干脆下载失败,考虑网络环境的问题,我们想到能不能我们提前将需要的环境下载好,当用户需要时,直接从我们这边下载不就很快嘛!
那么这样想了,怎么做呢?请按下面截图
当你点击“系统必备”后,会弹出下面截图:
在红框1中表明系统需要的运行环境,红框2表示运行环境怎么获取。
比如:你的系统需要的运行环境是.net4.0 ,那么红框1中勾选截图中对应的一栏。
在红框2中,有三个选项第一个选项是从官网选择下载,第二、三个选项是选择本地下载(发布程序时程序员提前下载后了的)。
我的问题是,当我想实现前面提过的方式,也就是红框2中的选择方式,那么一直会出错,弹出找不到对应的安装包。
实例截图:你们的可能和我的错误可能不一样,但都是缺少安装包文件。
怎么办,需要网上找答案,你会发现有个重要的提示:http://go.microsoft.com/fwlink?LinkId=239883.
你到微软官网去查,你发现有对应的操作介绍,按照其方法去做。
其实道理很简单就是讲各运行平台的。如我缺少的是.net4.0的,找到对应的目录
-------------------------------------------------------------------------------------------------------------
默认情况下,路径为 32 位系统上的 C:\Program Files\Microsoft SDKs\Windows\v8.0a\Bootstrapper\Packages 和 64 位系统上的 C:\Program Files (x86)\ Microsoft SDKs\Windows\v8.0a\Bootstrapper\Packages。
-------------------------------------------------------------------------------------------------------------
在对应平台下找到packge.xml文件复制http://go.microsoft.com/fwlink?LinkId=xxx的链接,将下载的文件保存进入对应平台中。我的是dotnetfx40
分别拷贝或者修改文件,操作完毕后,显示的结果。
具体怎么操作我在下面有截图操作。
按照上面方式:如果你下载的是简体中文安装包文件,那么你需要下载对应的中文简体版本语言包,并放到语言包文件夹中。--这个地方是我之前一直错误的情况。
我来谈谈我在学习中出现的问题。
不知道说的对不对,如果错误,可以和我联系,谢谢。
之前我之前是没有添加 zh-chs或者zh-cht文件夹等文件的,然后一直出错,后来新增了zh-chs,并将zh-Hans文件考到其中,修改了对应的关键字zh-Hans-->zh-chs
运行后发现ok 了,想想是不是由于vs2012 简体中文不识别zh-hans/zh-hant关键字,反而改成zh-chs/zh-cht后好了。
好了,说道最前说的,我在iis中多了dotnetfx40文件,我们会发现,里面存放的是什么文件呢?
这个是我们之前从官网上下载的文件。那么要是用户端没有对应.net 就可以从这里下载.netframework。
那么升级怎么处理的呢?
因为这是每次我们发布后,在上面截图中的版本部分的数字一直在自动升级变大,那么用户每次启动程序后(setup.exe)--这里可以直接双击setup.exe,如果有新版本就会自动升级,不用我们考虑升级中带来的拷贝文件和版本手痛改动等等问题,同时操作简单,希望以后的程序我会在运用到这种升级方式。
感谢各位读者,听我说了这么久!
Winform客户端发布与升级:ClickOnce