IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> C#程序自动更新(Winfrom) -> 正文阅读

[开发工具]C#程序自动更新(Winfrom)

? ? ? ? ------------------------------Winfrom程序的自动更新,或者提示更新-------------------------------------

? ? ? ? 很多时候给用户提供程序的时候,在你自己增加功能,升级版本的时候,如果没有好的服务器和框架,就需要一直打包更新后的程序文件给到对方,以下方法可以避免这个问题,自己更新了之后所有的用户只要登录系统就可以自动更新

效果如下:

?????????为了方便我们测试,在Windows系统的本机上新建一个测试的网站,用于存储更新的exe程序文件,建好了之后我们再上C#代码。

第一步:

? ? ? ? 打开控制面板——程序——Windows功能

第二步?

? ? ? ? ?将以下的功能全部打开,打开之后点击确定,系统会自动帮你安装,我使用的是激活过的win10系统专业版的,如果安装出现了错误的情况,请检查你的电脑是否有正常安装.net,电脑如果有提示更新,请将电脑更新到最新的版本。

?第三步

? ? ? ? ?安装完成后,在电脑搜索栏搜索IIS找到以下程序,右键用管理员形式打开,如果没有找到以下程序,代表第二步没有安装成功,可上网查找“如何新建IIS服务”,借鉴安装过程和报错解决方案。

?第四步

? ? ? ? 找到以下目录,右键新建网站

? ? ? ? 新建的时候会弹出以下选项,主要填写我选择的部分

?

1、网站名称可以根据自己的喜好填写。
2、物理路径指的是你存储网站内容的路径,可以自定义新增一个文件夹,我选择的是在自己的F盘。?

3、我们测试的的话只需要选择自己本机的IP地址,端口尽量设置成别的,如81,82等,以防冲突,我自己设置的是82,主机名指的是你的域名,我们测试的话可以不填写。注意,自己测试的话不要填写域名,因为会影响到后面我们访问网站,我试过用自己的名字,然后我访问的时候发现我的名字已经被人注册过了。

设置完成之后就可以点击确定,生成自己的一个网站

?

?第五步

? ? ? ? 看看我们新建的网站里,浏览目录的功能是否有打开,如果没有打开的话就把此功能打开,方便我们浏览页面,来校验我们设置的网站是否可以在c#代码正常访问。

?设置完成之后点击浏览网站

?以下显示界面,或者显示的是空白页面,代表网站可以正常访问

?如果你的是这一种请检查我上面说的浏览目录的功能是否有打开

?如果你出现的是DNS错误,请检查你的IP地址是否有设置成你新建站点的IP地址,我的是这样设置的,我选择的地方一般情况都可以照抄,至于为什么要这样,我也不清楚。╮(╯▽╰)╭

?第六步

? ? ? ? ?去网上下载一个Updater.Core.dll的类库,添加到程序的引用,直接百度“Updater.Core.dll”就可以找到,我这里随便新增一个winfrom程序用来演示。

添加Configuration的dll,一般可以直接搜索到

?第七步

? ? ? ? 我们的winfrom程序新增项目的时候都会自带一个app.config文件,在文件上配置以下数据

?第八步

? ? ? ? ?在你新建站点的时候,选择的站点路径文件下新增一个txt文件,不知道站点路径在哪里的请回看第四步,自己定义名称,在文件内维护以下内容之后,把后缀改为xml,红色部分需要修改填入,其他都可以复制粘贴

<?xml version="1.0" encoding="utf-8" ?>
<manifest>
? <version>程序初始版本号,如:1.0.0.0</version>
? <description>V1.0.0.0 测试自动更新程序。</description>
? <!--applicationId运用程序ID,需要与客户端配置一样,否则不会进行更新-->
? <myapplication applicationId="对应winfrom项目属性下的,程序集信息的GUID">
? ? <!--暂时没有使用,重新启动exe名称,parameters启动时传入的参数-->
? ? <entryPoint file="生成的exe文件名称,注意带后缀" parameters="1" />
? ? <!--更新文件的目录,相对于更新系统,默认为同级目录-->
? ? <location>.</location>
? </myapplication>
? <!--base表示存放该文件的url-->
? <files base="你建立的站点路径,注意要带上端口号">
? ? <!--文件名称-->
?? ? <file source="生成的exe文件名称,注意带后缀" unzip="true" />?
? </files>
</manifest>

?1、下面是我根据自己建立的网站和程序维护的数据:

?

?备注:applicationId里对应的内容在如下位置,其他的就不用我说了吧

?2、维护好之后保存,改后缀为xml

?

这样就维护好啦?

?第九步

? ? ? ? 在自己新建的winfrom项目程序目录下的debug文件下也新增一个txt文件,这个文件必须命名为updateconfiguration,否则会报错,记住,必须命名为updateconfiguration,按照类似第八步的操作,填入以下内容后更改后缀为config文件。

<?xml version="1.0" encoding="utf-8"?>
<applicationUpdater applicationId="对应winfrom项目属性下的,程序集信息的GUID" manifestUri="网站路径/+第八步新建的xml文件名称,要带上后缀" version="1.0.0.0" title="测试软件-版本更新">
</applicationUpdater>

填好之后如下图所示:

?第十步

? ? ? ? 到了最终的上代码环节,引用以下命名空间,如有无法引用请参考第六步

using System.Configuration;
using Updater.Core;
using System.Diagnostics;
using System.IO;

然后新建一个按钮或者注册一个事件输入以下代码

? ? ? ? ? ? string strUpdate = ConfigurationManager.AppSettings["AutoUpdate"]; // config.AppConfigGet("AutoUpdate");
? ? ? ? ? ? if (!string.IsNullOrEmpty(strUpdate))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? bool autoUpdate = false;
? ? ? ? ? ? ? ? bool.TryParse(strUpdate, out autoUpdate);
? ? ? ? ? ? ? ? if (autoUpdate)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? UpdateClass update = new UpdateClass();
? ? ? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? bool newVersion = update.HasNewVersion;
? ? ? ? ? ? ? ? ? ? ? ? if (newVersion)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (MessageBox.Show("有新的版本,是否需要更新", "更新提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Process.Start(Path.Combine(Application.StartupPath, "Updater.exe"), "SMT");

this.Close();
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? //else
? ? ? ? ? ? ? ? ? ? ? ? //{
? ? ? ? ? ? ? ? ? ? ? ? // ? ?MessageBox.Show("没有要更新的版本,已是最新!", "更新提示", MessageBoxButtons.OK);
? ? ? ? ? ? ? ? ? ? ? ? //}
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? catch (Exception ex)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? MessageBox.Show(ex.Message);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

?把代码放进去之后,去网上下载一个叫Update的自动更新程序,也丢到根目录下就完成啦

下面我们可以自己做以下测试,首先生成exe程序文件打包放到桌面

首次展示的程序界面是这个样子的,然后我们把界面做一下修改和升级版本,之后再把生成的新版本的exe文件丢到我们的网站目录下,再更新网站目录下的xml文件改为升级过后的版本,再打开试试看。

1、更改界面

2、升级版本之后重新生成exe文件

3、把生成的exe文件丢到网站的默认目录下

4、更新网站默认目录下设置好的xml文件里的版本号

?5、保存之后回去重新打开之前复制的低版本的桌面程序

点击更新就出现啦!!!

?点击确定之后会弹出这个

更新完成之后重新打开文件,就是刚刚我升级过的版本啦!

?

记录菜鸟学习的第一章,如果学会了麻烦给小菜鸡点个赞Thanks?(・ω・)ノ

?--------------------------------------------------------------------------------如有侵权请联系我删除-------------

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:07:34  更:2021-09-03 12:09:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 7:44:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码