NewLife/XCoder

升级基础组件
大石头 authored at 2021-12-04 09:33:16
cfa60a5
Tree
1 Parent(s) 69307ab
Summary: 6 changed files with 63 additions and 46 deletions.
Modified +9 -9
Modified +4 -4
Modified +37 -20
Modified +6 -6
Modified +3 -3
Modified +4 -4
Modified +9 -9
diff --git a/CrazyCoder/App.xaml.cs b/CrazyCoder/App.xaml.cs
index b2c372f..a7f6fb8 100644
--- a/CrazyCoder/App.xaml.cs
+++ b/CrazyCoder/App.xaml.cs
@@ -94,15 +94,15 @@ namespace CrazyCoder
             var ur = client.Upgrade(channel).Result;
             if (ur != null)
             {
-                var rs = client.ProcessUpgrade(ur);
-
-                // 强制更新时,马上重启
-                if (rs && ur.Force)
-                {
-                    var p = Process.GetCurrentProcess();
-                    p.Close();
-                    p.Kill();
-                }
+                //var rs = client.ProcessUpgrade(ur);
+
+                //// 强制更新时,马上重启
+                //if (rs && ur.Force)
+                //{
+                //    var p = Process.GetCurrentProcess();
+                //    p.Close();
+                //    p.Kill();
+                //}
             }
         }
     }
Modified +4 -4
diff --git a/CrazyCoder/CrazyCoder.csproj b/CrazyCoder/CrazyCoder.csproj
index 94c3b36..232f54d 100644
--- a/CrazyCoder/CrazyCoder.csproj
+++ b/CrazyCoder/CrazyCoder.csproj
@@ -111,19 +111,19 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="MaterialDesignThemes">
-      <Version>4.2.1</Version>
+      <Version>4.3.0</Version>
     </PackageReference>
     <PackageReference Include="MvvmLightLibs">
       <Version>5.4.1.1</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Core">
-      <Version>8.11.2021.1017-beta1</Version>
+      <Version>8.11.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Stardust">
-      <Version>1.5.2021.926-Beta1</Version>
+      <Version>1.5.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.XCode">
-      <Version>10.3.2021.1017-beta1</Version>
+      <Version>10.3.2021.1204</Version>
     </PackageReference>
   </ItemGroup>
   <ItemGroup>
Modified +37 -20
diff --git a/XCoder/Program.cs b/XCoder/Program.cs
index 769ff14..fdc34ad 100644
--- a/XCoder/Program.cs
+++ b/XCoder/Program.cs
@@ -10,6 +10,7 @@ using NewLife.Net;
 using NewLife.Threading;
 using NewLife.Xml;
 using XCode.DataAccessLayer;
+using System.Threading.Tasks;
 #if !NET4
 using Stardust;
 #endif
@@ -84,12 +85,12 @@ namespace XCoder
             _Client = client;
         }
 
-        private static void TryConnectServer(Object state)
+        private static async Task TryConnectServer(Object state)
         {
             var client = state as StarClient;
             var set = XConfig.Current;
-            client.Login().Wait();
-            CheckUpgrade(client, set.Channel);
+            await client.Login();
+            await CheckUpgrade(client, set.Channel);
 
             // 登录成功,销毁定时器
             //TimerX.Current.Period = 0;
@@ -97,28 +98,44 @@ namespace XCoder
             _timer = null;
         }
 
-        private static void CheckUpgrade(StarClient client, String channel)
+        private static String _lastVersion;
+        private static async Task CheckUpgrade(StarClient client, String channel)
         {
+            var ug = new Stardust.Web.Upgrade { Log = XTrace.Log };
+
             // 检查更新
-            var ur = client.Upgrade(channel).Result;
-            if (ur != null)
+            var ur = await client.Upgrade(channel);
+            if (ur != null && ur.Version != _lastVersion)
             {
-                var rs = client.ProcessUpgrade(ur);
+                ug.Url = ur.Source;
+                await ug.Download();
 
-                // 强制更新时,马上重启
-                if (rs && ur.Force)
+                // 检查文件完整性
+                if (ur.FileHash.IsNullOrEmpty() || ug.CheckFileHash(ur.FileHash))
                 {
-                    //StopWork("Upgrade");
-
-                    // 重新拉起进程
-                    var star = "XCoder.exe";
-                    XTrace.WriteLine("强制升级,拉起进程 {0} -upgrade", star.GetFullPath());
-                    Process.Start(star.GetFullPath(), "-upgrade");
-
-                    //var p = Process.GetCurrentProcess();
-                    //p.Close();
-                    //p.Kill();
-                    Application.Exit();
+                    // 执行更新,解压缩覆盖文件
+                    var rs = ug.Update();
+                    if (rs && !ur.Executor.IsNullOrEmpty()) ug.Run(ur.Executor);
+                    _lastVersion = ur.Version;
+
+                    // 去除多余入口文件
+                    ug.Trim("StarAgent");
+
+                    // 强制更新时,马上重启
+                    if (rs && ur.Force)
+                    {
+                        //StopWork("Upgrade");
+
+                        // 重新拉起进程
+                        var star = "XCoder.exe";
+                        XTrace.WriteLine("强制升级,拉起进程 {0} -upgrade", star.GetFullPath());
+                        Process.Start(star.GetFullPath(), "-upgrade");
+
+                        //var p = Process.GetCurrentProcess();
+                        //p.Close();
+                        //p.Kill();
+                        Application.Exit();
+                    }
                 }
             }
         }
Modified +6 -6
diff --git a/XCoder/XCoder.csproj b/XCoder/XCoder.csproj
index 57b6ff0..18c9164 100644
--- a/XCoder/XCoder.csproj
+++ b/XCoder/XCoder.csproj
@@ -376,22 +376,22 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="NewLife.Core">
-      <Version>8.11.2021.1017-beta1</Version>
+      <Version>8.11.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.MQTT">
-      <Version>1.0.2021.1001</Version>
+      <Version>1.0.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Net">
-      <Version>3.6.2020.1002</Version>
+      <Version>3.6.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Redis">
-      <Version>3.9.2021.1001</Version>
+      <Version>3.9.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Stardust">
-      <Version>1.5.2021.1001</Version>
+      <Version>1.5.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.XCode">
-      <Version>10.3.2021.1017-beta1</Version>
+      <Version>10.3.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="SSH.NET">
       <Version>2020.0.1</Version>
Modified +3 -3
diff --git a/XCoder40/XCoder40.csproj b/XCoder40/XCoder40.csproj
index cb50024..692e472 100644
--- a/XCoder40/XCoder40.csproj
+++ b/XCoder40/XCoder40.csproj
@@ -391,13 +391,13 @@
   </ItemGroup>
   <ItemGroup>
     <PackageReference Include="NewLife.Core">
-      <Version>8.11.2021.1017-beta1</Version>
+      <Version>8.11.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.Net">
-      <Version>3.6.2020.1002</Version>
+      <Version>3.6.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="NewLife.XCode">
-      <Version>10.3.2021.1017-beta1</Version>
+      <Version>10.3.2021.1204</Version>
     </PackageReference>
     <PackageReference Include="SSH.NET">
       <Version>2020.0.1</Version>
Modified +4 -4
diff --git a/XCoderLinux/XCoderLinux.csproj b/XCoderLinux/XCoderLinux.csproj
index 088d63f..3815414 100644
--- a/XCoderLinux/XCoderLinux.csproj
+++ b/XCoderLinux/XCoderLinux.csproj
@@ -48,10 +48,10 @@
 
   <ItemGroup>
     <PackageReference Include="GtkSharp" Version="3.24.24.34" />
-    <PackageReference Include="NewLife.Core" Version="8.11.2021.1017-beta1" />
-    <PackageReference Include="NewLife.XCode" Version="10.3.2021.1017-beta1" />
-    <PackageReference Include="System.IO.Ports" Version="5.0.1" />
-    <PackageReference Include="System.Management" Version="5.0.0" />
+    <PackageReference Include="NewLife.Core" Version="8.11.2021.1204" />
+    <PackageReference Include="NewLife.XCode" Version="10.3.2021.1204" />
+    <PackageReference Include="System.IO.Ports" Version="6.0.0" />
+    <PackageReference Include="System.Management" Version="6.0.0" />
   </ItemGroup>
 
   <ItemGroup>