Commit 9766e32a authored by tr's avatar tr

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

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