Commit 9766e32a authored by tr's avatar tr

1、自动更新程序及主界面更新逻辑优化

parent defedf95
......@@ -15,11 +15,9 @@ namespace AutoUpdate
{
public partial class Form1 : Form
{
SmpDB _db = new SmpDB();
DataSet _ds = null;
string _link = "";
string _path = "";
string _exeName = "";
string _path = ""; //更新根路径
string _exeName = ""; //程序名称(即进程名称)
string _exportName = "AppHome"; //程序导出路径,此默认为AppHome
public Form1(string[] args)
{
......@@ -32,6 +30,8 @@ namespace AutoUpdate
}
}
private void Form1_Shown(object sender, EventArgs e)
{
try
{
//参数检查
if (string.IsNullOrEmpty(this._path) || string.IsNullOrEmpty(this._exeName))
......@@ -42,15 +42,19 @@ namespace AutoUpdate
{
this.AppUpdate(); //应用更新
}
}
finally
{
//异步等待
Task.Run(() => Thread.Sleep(2000)).Wait();
//关闭窗口
this.Close();
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//启动原程序
var startup = $@"{this._path}\AppHome\{this._exeName}.exe";
var startup = $@"{this._path}\{this._exportName}\{this._exeName}.exe";
if (File.Exists(startup))
{
ProcessStartInfo info = new ProcessStartInfo()
......@@ -65,17 +69,13 @@ namespace AutoUpdate
private void AppUpdate()
{
this._link = Utils.GetDbLinkString("192.168.1.204", "sa", "sa", "FTT_Work");
this._ds = this._db.GetData(this._link, "SELECT TOP 1 * FROM dbo.FTT_AutoUpdate ORDER BY UDate DESC", "FTT_AutoUpdate");
if (this._ds.Tables[0].DefaultView.Count == 0)
{
this.textBox1.Text = "未发现新版本!";
}
else
string link = Utils.GetDbLinkString("192.168.1.204", "sa", "sa", "FTT_Work");
DataTable dt = new SmpDB().GetDataTable(link, "SELECT TOP 1 * FROM dbo.FTT_AutoUpdate ORDER BY UDate DESC", "FTT_AutoUpdate");
if (dt.DefaultView.Count > 0)
{
//结束原进程
var pp = Process.GetProcessesByName(this._exeName);
foreach (var p in pp)
var processes = Process.GetProcessesByName(this._exeName);
foreach (var p in processes)
{
if (!p.HasExited)
{
......@@ -84,7 +84,7 @@ namespace AutoUpdate
}
this.AddProcessText(10);
//获取更新数据
var drv = this._ds.Tables[0].DefaultView[0];
var drv = dt.DefaultView[0];
var fileName = drv["UName"].ToString();
var bytes = drv["UData"] as byte[];
//默认解压覆盖指定目录
......
......@@ -60,6 +60,9 @@ namespace Tools
}
//用TabControl模拟MDI效果
this.tabControl1.MouseDoubleClick += TabControl1_MouseDoubleClick;
//检查更新
this.CheckUpdate(true);
}
#region 基础:关闭、最大化、最小化
......@@ -195,15 +198,18 @@ namespace Tools
/// <summary>
/// 系统:检查更新
/// </summary>
private void CheckUpdate()
private void CheckUpdate(bool IsSilentWhenNotFound = false)
{
var updateTime = MyUtils.Utils.AppSettings("UpdateTime");
var link = MyUtils.Utils.GetDbLinkString("192.168.1.204", "sa", "sa", "FTT_Work");
var dt = new MyData.SmpDB().GetDataTable(link, $"SELECT TOP 1 UDate FROM dbo.FTT_AutoUpdate WHERE UDate > '{updateTime}' ORDER BY UDate DESC", "FTT_AutoUpdate");
var dt = new MyData.SmpDB().GetDataTable(link, $"SELECT TOP 1 UDate, URemark FROM dbo.FTT_AutoUpdate WHERE UDate > '{updateTime}' ORDER BY UDate DESC", "FTT_AutoUpdate");
if (dt.DefaultView.Count > 0)
{
var drv = dt.DefaultView[0];
if (!Utils.TipYN($"发现新版本,是否立即更新?\r\n\r\n{drv["URemark"]}"))
return;
//记录更新时间
var date = Convert.ToDateTime(dt.DefaultView[0]["UDate"]);
var date = Convert.ToDateTime(drv["UDate"]);
MyUtils.Utils.AppSettings("UpdateTime", date.ToString("yyyy-MM-dd HH:mm:ss.fff"));
//启动自动更新
var info = new ProcessStartInfo()
......@@ -218,7 +224,7 @@ namespace Tools
//退出运行环境
Application.Exit();
}
else
else if(!IsSilentWhenNotFound)
{
Utils.Tip("当前已是最新版本!");
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment