我也是第一次做,网上找了自动更新的源码,
优采云 发布时间: 2021-05-12 20:00
我也是第一次做,网上找了自动更新的源码,
c#Winform程序自动更新实现方法
更新时间:2017年2月19日11:59:05作者:zhaozhimao
这是我第一次完成Winform程序的自动更新。我在Internet上找到了自动更新的源代码。后来,根据我在Internet上看到的某些方法,我尝试了很长时间,最终仍然遇到书写错误,因此我花了钱让别人帮助成功调试,以下是我自己的工作,因此大家可以从中学到东西,如果有任何错误,请纠正我
这是我第一次完成Winform程序的自动更新。我在Internet上找到了自动更新的源代码。后来,根据我在Internet上看到的某些方法,我尝试了很长时间,最终我仍然遇到书写错误,因此我花了钱让别人帮助我成功进行调试。以下是我自己的工作,以便每个人都可以从中学到。如果有任何错误,请纠正我。
1、因为我通过服务器的IIS发布了自动更新,所以我在更新之前将程序手动复制到IIS服务器的目录中并进行一些更改,以便可以正常自动更新客户端。因此,第一步是不熟悉IIS服务器(我的系统窗口8):
根据上述方法,选择后单击“确定”,系统将自动添加这些内容,然后:
在创建网站之后,将需要更新的写入文件放入与您选择的物理路径相对应的文件目录中,就可以了。
2、 网站建立之后,下一步就是找到一种更新方法,即将文件从服务器更新到客户端。至于具体过程和中心思想,我将不做详细介绍。在线上有很多。
3、找不到自动源代码下载地址。如果需要,请留下您的电子邮件地址,我会再次发送。
4、从自动源代码生成一个类库,然后在您的主程序中引用该类库,然后将下图中的两个文件和您的主程序放在同一文件夹中:
5、主程序的调用,在主程序中的调用,我将其放在登录表单之前,因为我无法控制程序是否需要更新,因此我需要建立一个进程,是在数据库中创建一个表。包括两个字段
如上所示,“新建”字段用于保存最新版本,而“旧”字段用于保存以前的版本。
using Mulaolao.Forms;
using Mulaolao.Procedure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Mulaolao.Other;
using System.Threading;
using StudentMgr;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
namespace Mulaolao
{
static class Program
{
//private static Mutex mutex;
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main( )
{
Application.EnableVisualStyles( );
Application.SetCompatibleTextRenderingDefault( false );
//读取表
DataTable da = SqlHelper.ExecuteDataTable( "SELECT * FROM R_UpdateforOrder" );
string news = "", old = "";
//如果表中没有任何数据,则直接登录,不用更新
if (da.Rows.Count < 1)
{
//设置登录成功之后关闭登录窗体 显示主窗体
Login lg = new Login( );
lg.StartPosition = FormStartPosition.CenterScreen;
lg.ShowDialog( );
if (lg.DialogResult == DialogResult.OK)
{
Application.Run( new Form1( ) );
}
else
{
return;
}
}
else
{
//如果表中的新版本和老版本一致,也不需要更新
news = da.Rows[0]["New"].ToString( );
old = da.Rows[0]["Old"].ToString( );
if (news == old)
{
//设置登录成功之后关闭登录窗体 显示主窗体
Login lg = new Login( );
lg.StartPosition = FormStartPosition.CenterScreen;
lg.ShowDialog( );
if (lg.DialogResult == DialogResult.OK)
{
Application.Run( new Form1( ) );
}
else
{
return;
}
}
else
{
//如果表中的新版本和老版本不一致 则需要把老版本更新成新版本 同时启动自动更新窗口
SqlHelper.ExecuteNonQuery( "UPDATE R_UpdateforOrder SET Old=@Old", new SqlParameter( "@Old", news ) );
System.Diagnostics.Process.Start( Application.StartupPath + @"\AutoUpdate.exe" );
}
}
}
}
}
下一步就是您所需要的。完成后,更新后的主程序将自动启动。
6、告诉我有关UpdateList.xml的主要参数:
以下是我编写的程序的更新版本(表中的新字段)。它放置在客户端第三张图片的版本更新文件夹中。每次更新服务器之前都要运行此程序,以将数据库更新到最新版本:
以上内容是一种不太先进的方法,我花了很多钱才把自己扔掉。不可能。谁让我很快进入这个行业,就没有经验,我也无法成为高级人才。欢迎大家及时纠正我。实际上,主要步骤:首先建立IIS服务器->创建一个新的网站->将主程序文件,更新文件和版本更新放在同一文件夹中->主程序调用更新程序(主要是确定何时自动更新哪些内容)->配置自动更新文件中的参数->在数据库中构建版本比较表->在更新之前覆盖服务器上的程序,修改内容自动更新xml文件,然后运行版本更新-->等待客户端自行更新