• 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中了。

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

  • 相关阅读:
    【VS开发】【图像处理】RGB各种格式
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】ActiveX开发注意事项
    【VS开发】ActiveX开发注意事项
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
    vim 编辑 windows下的文本时出现乱码, 修改配置后 已解决
    Centos 中扩展 软件源 的安装 之 epel ( 为yum 扩展软件源 EPEL源 )
  • 原文地址:https://www.cnblogs.com/zhaosw/p/6175591.html
Copyright © 2020-2023  润新知