• 大小: 190KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-30
  • 语言: C#
  • 标签: C#  WPF  自动更新  

资源简介

原创的C#/WPF通用自动更新模块源码,具有使用简单、节省服务器空间与流量、可完全自定义更新内容展示等特点。详细介绍与使用方法可见我的文章 https://blog.csdn.net/q408774831/article/details/81876761 刚才的传错了

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Threading.Tasks;
using System.Windows;

namespace EnneaCode.UniversalUpdater
{
   public partial class App : Application
   {
      /// 
      /// 
      /// 

      /// 
      protected override void onstartup(StartupEventArgs e)
      {
         if (e.Args.Length == 3)
         {
            try
            {
               var infoPath = e.Args[0];        // 0:updateInfo序列化配置路径
               var destPath = e.Args[1];        // 1:更新目标文件夹
               var baseUri = e.Args[2];         // 2:获取更新的基础uri
               var bf = new BinaryFormatter();
               var fs = File.Open(infoPath FileMode.Open FileAccess.Read FileShare.Read);
               var info = bf.Deserialize(fs) as ecUpdateInfo;     //读取updateInfo
               fs.Dispose();
               if (!CheckAccessControl(info destPath))
               {
                  if (CheckIsElevated())
                  {
                     MessageBox.Show(“无法获取更新位置的文件写入权限。“ “更新失败“ MessageBoxButton.OK MessageBoxImage.Error);
                  }
                  else
                  {
                     var exePath = Assembly.GetExecutingAssembly().Location;
                     var args =
                        $“\“{infoPath}\“ “ +
                        $“\“{destPath}\“ “ +
                        $“\“{baseUri}\““;
                     Process.Start(new ProcessStartInfo(exePath args) { Verb = “runas“ });
                  }
                  Environment.Exit(0);
               }
               var w = new WindowProgress(info destPath baseUri);
               w.ShowDialog();
            }
            catch (Exception ex)
            {
               MessageBox.Show($“{ex.GetType()}\n{ex.Message}\n\n{ex.StackTrace}“ “更新失败“ MessageBoxButton.OK MessageBoxImage.Error);
            }
         }
         MessageBox.Show($“请以指定的参数启动此程序。“ “错误“ MessageBoxButton.OK MessageBoxImage.Error);
         Environment.Exit(0);
         base.onstartup(e);
      }
      /// 
      /// 检查目前执行的代码是否获取了管理员权限。
      /// 

      /// 
      bool CheckIsElevated()
      {
         bool result;
         using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
         {
            WindowsPrincipal principal = new WindowsPrincipal(identity);
            result = principal.IsInRole(WindowsBuiltInRole.Administrator);
         }
         return result;
      }
      /// 
      /// 对更新列表中的文件进行写入权限检查。
      /// 

      bool CheckAccessControl(ecUpdateInfo info string destPath)
      {
         var dis = i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\
     文件         189  2018-04-12 14:38  EnneaCode.UniversalUpdater.Upload\App.config
     目录           0  2018-08-10 14:12  EnneaCode.UniversalUpdater.Upload\bin\
     目录           0  2018-08-10 14:12  EnneaCode.UniversalUpdater.Upload\bin\Debug\
     目录           0  2018-08-10 14:12  EnneaCode.UniversalUpdater.Upload\bin\Release\
     文件        3108  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\EnneaCode.UniversalUpdater.Upload.csproj
     文件         291  2018-04-12 16:09  EnneaCode.UniversalUpdater.Upload\EnneaCode.UniversalUpdater.Upload.csproj.user
     目录           0  2018-08-10 14:12  EnneaCode.UniversalUpdater.Upload\obj\
     目录           0  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\
     文件         871  2018-04-16 10:39  EnneaCode.UniversalUpdater.Upload\obj\Debug\DesignTimeResolveAssemblyReferences.cache
     文件       13691  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件           0  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.csproj.CopyComplete
     文件          42  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.csproj.CoreCompileInputs.cache
     文件        1097  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.csproj.FileListAbsolute.txt
     文件       56563  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.csprojAssemblyReference.cache
     文件       20992  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.exe
     文件       32256  2018-08-20 21:36  EnneaCode.UniversalUpdater.Upload\obj\Debug\EnneaCode.UniversalUpdater.Upload.pdb
     文件           0  2018-04-12 14:38  EnneaCode.UniversalUpdater.Upload\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2018-04-12 14:38  EnneaCode.UniversalUpdater.Upload\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2018-04-12 14:38  EnneaCode.UniversalUpdater.Upload\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
     目录           0  2018-08-10 14:12  EnneaCode.UniversalUpdater.Upload\obj\Debug\TempPE\
     目录           0  2018-08-13 11:15  EnneaCode.UniversalUpdater.Upload\obj\Release\
     文件           0  2018-04-12 20:15  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.csproj.CopyComplete
     文件          42  2018-07-05 09:33  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.csproj.CoreCompileInputs.cache
     文件        1182  2018-07-05 09:33  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.csproj.FileListAbsolute.txt
     文件       69024  2018-07-05 16:48  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.csprojAssemblyReference.cache
     文件       19456  2018-07-05 16:50  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.exe
     文件       30208  2018-07-05 16:50  EnneaCode.UniversalUpdater.Upload\obj\Release\EnneaCode.UniversalUpdater.Upload.pdb
     文件           0  2018-04-12 20:14  EnneaCode.UniversalUpdater.Upload\obj\Release\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2018-04-12 20:14  EnneaCode.UniversalUpdater.Upload\obj\Release\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2018-04-12 20:14  EnneaCode.UniversalUpdater.Upload\obj\Release\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
............此处省略81个文件信息

评论

共有 条评论