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,如果有新版本就会自动升级,不用我们考虑升级中带来的拷贝文件和版本手痛改动等等问题,同时操作简单,希望以后的程序我会在运用到这种升级方式。

感谢各位读者,听我说了这么久!

时间: 2025-01-05 05:49:49

Winform客户端发布与升级:ClickOnce的相关文章

winform客户端利用webClient实现与Web服务端的数据传输

由于项目需要,最近研究了下WebClient的数据传输.关于WebClient介绍网上有很多详细介绍,大概就是利用WebClient可以实现对Internet资源的访问.无外乎客户端发送请求,服务端处理请求.回应请求.所以,我下面就简单描述下学习过程中遇到的一些问题: 1.关于Winform客户端请求 WebClient wc = new WebClient();//初始化webclient string path = "http://192.168.1.115:8089/Handler1.as

[WinForm] VS2010发布、打包安装程序(超全超详细)

1. 在vs2010 选择"新建项目"→" 其他项目类型"→" Visual Studio Installer→"安装项目": 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1."应用程序文件夹"表示要安装的应用程序需要添加的文件: 2."用户的'程序'菜单"表示:应用程序安装完,用户的"开始菜单"中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放

【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章

[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何使用客户端发布BLOG(重点) ② 如何快速发布微信公众号文章 ③ 如何批量上传图片到blog ④ 如何批量上传图片到微信公众号上     Tips: ① 本文在itpub(http://blog.itpub.net/26736162)

基于服务(Web Service)的文件管理Winform客户端实现(二)

上一篇主要介绍文件管理服务有哪些方法,实现了哪些功能. 基于服务(Web Service)的文件管理Winform客户端实现(一) 本篇将根据文件服务服务实现Winform客户端设计.开发. 3.       文件管理Winform客户端程序实现 文件管理客户端是使用VS2008 C#开发Winform 程序.通过调用文件管理服务实现,达到数据库操作与程序显示完全分离.基于此文件管理服务,并不只局限于开发Winform程序,同样适用于WebForm程序. 3.1.    主界面设计 新增Winf

Windows Docker 客户端发布

还记得之前为了演示需要在Windows 8.1上编译和安装Docker客户端的文章吗?如今已经可以忽略掉了.为什么?本博已经交代清楚,因为出于快速拥抱开源和新兴项目的新趋势,微软已经宣布和Docker公司一起快速推出了Windows版本的Docker客户端1.6版本了,如今我们已经可以和在MAC和Linux上一样使用Docker客户端技术了,这样作为微软平台的开发者需要连接和是选用Docker的开发环境就方便多了.当然Windows也已经发布了Nano(Windows 服务器端的虚拟容器服务,这

基础!winForm客户端最常用的几个基本属性

客户端应用程序 - 是需要安装在用户电脑上才可以使用的程序特点:不需要联网也可以打开使用部分功能但是现在的情况是许多功能依然需要互联网的支持 代码部分在用户电脑上执行 WinForm常用窗体属性: 布局: AutoScroll:当控件内容超出可见区域是否显示滚动条: Autosize:当控件内容有超出时是否自动调整窗口: Location:控件左上角相对于其容器的坐标: StartPosition:窗口运行的位置,居中之类的,CenterScreen--居中,Manual--屏幕左上角: Max

GitHub客户端发布托管代码

初试GitHub及客户端使用 突然想分享代码,于是记起来曾几何时有人提到过GitHub这个东西,于是便各种百度,注册申请了一个账号,下载了windows客户端,全英文网站就连新手教程也是全英的,现在想想也是很佩服自己,哈哈. GitHub在我看来就是一个工程的进度说明吧,其实质似乎也是这样吧,我们可以把这个看成一个文件管理系统,根目录就是我们设置的用户名,其实就是网站服务器下的一个文件夹吧,每个用户都会在官网服务器的相应目录下生成一个以特有用户名命名的文件夹,我们上传的所有文件都在这个文件夹下,

Winform客户端引用WCF客户端后,部分类无法正常使用

在项目中用到WCF,项目的结构是这样的: 在SPI项目中编写该解决方案中公共的类及函数: 在WCFService项目中写的是svc文件及WCF服务接口: 在Client中添加WCF服务引用的时候该WCFService项目,然后再UI项目中初始化Client的实例.通过该实例WCFService中的方法. 问题: 有时会出现这么一种情况,在UI中通过初始化Client的实例.通过该实例WCFService中的方法MethodA,该方法的入参是SPI中类ConnectionInfo的实例,然后在UI

winform客户端 远程广域网访问SQL数据库的各项配置

各类学习网站都没有详细而简单的提供一套完整远程解决方案.也由于其中涉及非软件开发知识.通过认真学习和实践,在这里给出完整全面的解决方案,以供有需要的网友参考研究. (原创:唐飞 QQ:87671675 ,有更好建议的可留言,或者加QQ互相学习交流.) 从外网访问SQL数据库服务器 分四步论证逐一完成: 一.针对电信,联通,移动 宽带供应商的要求: 1.公网固定IP或拨号获得的公网动态ip(某些100开头的ip地址为私网ip将无法实现远程访问,只能用特殊域名工具绑定). 2.公网动态ip 绑定的域