zoukankan      html  css  js  c++  java
  • 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中,有三个选项第一个选项是从官网选择下载,第二、三个选项是选择本地下载(发布程序时程序员提前下载好了的)。

    -------------------------------------------------------------------------------------------------------------------------------------------

    注意:

    1.选项一:从官网上下载,不要下载安装包,包括平台安装包和语言包,有windows系统自动识别去下载。

    2.选项二:开发人员已经下载好了的,放在C:Program FilesMicrosoft SDKsWindowsv8.0aBootstrapperPackages 或C:Program Files(x86)Microsoft SDKsWindowsv8.0aBootstrapperPackages 

    3选项三:开发人员已经下载好了的,需要放在对应选择目录的文件中,比如你可以你要dotnetfx40,你就将选项二准备好的文件夹全部拷贝到对应目录中(包括安装包和语言包)

    ------------------------------------------------------------------------------------------------------------------------------------------

    我的问题是,当我想实现前面提过的方式,也就是红框2中的选择方式,那么一直会出错,弹出找不到对应的安装包。

    实例截图:你们的可能和我的错误可能不一样,但都是缺少安装包文件。

    怎么办,需要网上找答案,你会发现有个重要的提示:http://go.microsoft.com/fwlink?LinkId=239883.

    你到微软官网去查,你发现有对应的操作介绍,按照其方法去做。

    其实道理很简单就是讲各运行平台的。如我缺少的是.net4.0的,找到对应的目录

    -------------------------------------------------------------------------------------------------------------

    默认情况下,路径为 32 位系统上的 C:Program FilesMicrosoft SDKsWindowsv8.0aBootstrapperPackages 和 64 位系统上的 C:Program Files (x86) Microsoft SDKsWindowsv8.0aBootstrapperPackages。

    -------------------------------------------------------------------------------------------------------------

    在对应平台下找到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。

    那么升级怎么处理的呢?

    因为这是每次我们发布后,在上面截图中的版本部分的数字一直在自动升级变大,那么用户每次启动程序后(带application后缀程序)--这里可以直接双击application程序。如果未安装程序则启动setup.exe,如有新版本就会自动升级,不用我们考虑升级中带来的拷贝文件和版本手动改动等等问题,同时操作简单,希望以后的程序我会在运用到这种升级方式。--这里我将发布文件路径和升级文件放到一个目录了,这样的好处是,每次发布就是最新版本,不需要将发布的程序再拷贝到iis中了。

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

  • 相关阅读:
    ZOJ 2588 Burning Bridges
    POJ 1966 ZOJ 2182 Cable TV Network
    HDU 5348 MZL's endless loop
    HDU 5352 MZL's City
    Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
    ZOJ 1119 SPF
    HDU 3452 Bonsai
    HDU 1520 Anniversary party
    POJ 2239 Selecting Courses
    POJ 1144 Network
  • 原文地址:https://www.cnblogs.com/zhaosw/p/6175591.html
Copyright © 2011-2022 走看看