------------------------------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,红色部分需要修改填入,其他都可以复制粘贴
1、下面是我根据自己建立的网站和程序维护的数据:
备注:applicationId里对应的内容在如下位置,其他的就不用我说了吧
2、维护好之后保存,改后缀为xml
这样就维护好啦
第九步在自己新建的winfrom项目程序目录下的debug文件下也新增一个txt文件,这个文件必须命名为updateconfiguration,否则会报错,记住,必须命名为updateconfiguration,按照类似第八步的操作,填入以下内容后更改后缀为config文件。
对应winfrom项目属性下的,程序集信息的GUID" manifestUri="网站路径/+第八步新建的xml文件名称,要带上后缀" version="1.0.0.0" title="测试软件-版本更新">
填好之后如下图所示:
第十步到了最终的上代码环节,引用以下命名空间,如有无法引用请参考第六步
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♪(・ω・)ノ
--------------------------------------------------------------------------------如有侵权请联系我删除-------------



