資源簡介
原創的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個文件信息
- 上一篇:C# 俄羅斯方塊源代碼
- 下一篇:C#語法分析器
評論
共有 條評論