diff --git a/.gitignore b/.gitignore index b959cbc02c8ec9a11af5a2eeb1e343394661d1ba..108eeeae36e50874811a24cf452082218b3fea34 100644 --- a/.gitignore +++ b/.gitignore @@ -237,3 +237,8 @@ src/c\#/.vs/GeneralUpdate/FileContentIndex/7f9f4839-4956-40d4-b05d-01d128ee194b. *.v5 src/c\#/.vs/ProjectEvaluation/generalupdate.projects.v5 src/c\#/.vs/ProjectEvaluation/generalupdate.metadata.v5 +/example/winform/TestWinForms/.vs +/example/fileserver/.vs +/example/fileserver/.vs +/example/fileserver/.vs +/example/fileserver/.vs diff --git a/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.metadata.v5.1 b/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.metadata.v5.1 new file mode 100644 index 0000000000000000000000000000000000000000..a614d94d1cf5df6e8f36b9498b5ffd0d0a586ba4 Binary files /dev/null and b/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.metadata.v5.1 differ diff --git a/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.projects.v5.1 b/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.projects.v5.1 new file mode 100644 index 0000000000000000000000000000000000000000..49a7087cb3503dbf730f49eb240d0487529c48e5 Binary files /dev/null and b/example/fileserver/fileserver/.vs/ProjectEvaluation/fileserver.projects.v5.1 differ diff --git a/example/fileserver/.vs/fileserver/config/applicationhost.config b/example/fileserver/fileserver/.vs/fileserver/config/applicationhost.config similarity index 100% rename from example/fileserver/.vs/fileserver/config/applicationhost.config rename to example/fileserver/fileserver/.vs/fileserver/config/applicationhost.config diff --git a/example/fileserver/fileserver/Controllers/UpdateController.cs b/example/fileserver/fileserver/Controllers/UpdateController.cs index 776d839f3f2193a4c22cdd22822af56783f0d57f..4dc97df9a6a927b16aa3a4da2e37ce96f552b8dc 100644 --- a/example/fileserver/fileserver/Controllers/UpdateController.cs +++ b/example/fileserver/fileserver/Controllers/UpdateController.cs @@ -20,7 +20,7 @@ using GeneralUpdate.AspNetCore.DTO; using Microsoft.Extensions.Options; using Newtonsoft.Json; -namespace GPDI.UpdateService.Controllers +namespace fileserver.Controllers { [ApiController] [Route("api/[controller]/[action]")] @@ -43,6 +43,8 @@ namespace GPDI.UpdateService.Controllers [HttpGet] public string Test() { + var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", $"1.0.0.9.zip"); + var md5 = FileUtil.GetFileMD5(path); return "success"; } @@ -71,13 +73,18 @@ namespace GPDI.UpdateService.Controllers } var versions = new List(); - //生成好的更新包文件的MD5码,因为返回给客户端的时候需要同这个来验证是否可用 - //这个md5可以使用单元测试里面的生成md5获取 - var md5 = "cc9f7189676613b906bd7680ea518f0e"; + + var pubTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(); //这里只会是更新主程序,因为升级程序已经在上面直接返回了 string version = "1.0.0.9";//这里设置为9是让程序认为需要更新 + //生成好的更新包文件的MD5码,因为返回给客户端的时候需要同这个来验证是否可用 + //这个md5可以使用单元测试里面的生成md5获取 为了方便测试,直接用升级文件来获取了 + //var md5 = "cc9f7189676613b906bd7680ea518f0e"; + var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", $"{version}.zip"); + var md5 = FileUtil.GetFileMD5(path); + var url = $"http://127.0.0.1:5008/{version}.zip";//更新包的下载地址 var name = version; versions.Add(new VersionDTO(md5, pubTime, version, url, name)); diff --git a/example/fileserver/fileserver/fileserver.csproj b/example/fileserver/fileserver/fileserver.csproj index 3f63efbbf9dd4dc7235a085f9a7a8b63b35be0c2..04c640cec1871bfcd191914ec78f9c2e1dcc0ff5 100644 --- a/example/fileserver/fileserver/fileserver.csproj +++ b/example/fileserver/fileserver/fileserver.csproj @@ -11,6 +11,12 @@ + + + Always + + + diff --git a/example/fileserver/fileserver.sln b/example/fileserver/fileserver/fileserver.sln similarity index 59% rename from example/fileserver/fileserver.sln rename to example/fileserver/fileserver/fileserver.sln index 4b547bdb2743fd6fda9f679fa92a0ab03460e146..ed928d705a302a72f0e47d7634451d0bdf97c0ba 100644 --- a/example/fileserver/fileserver.sln +++ b/example/fileserver/fileserver/fileserver.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fileserver", "fileserver\fileserver.csproj", "{685F1397-5865-46C2-BB5B-D24CAF1532D3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fileserver", "fileserver.csproj", "{78CB204A-9D27-4FEF-BD81-5142732C064F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,15 +11,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {685F1397-5865-46C2-BB5B-D24CAF1532D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {685F1397-5865-46C2-BB5B-D24CAF1532D3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {685F1397-5865-46C2-BB5B-D24CAF1532D3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {685F1397-5865-46C2-BB5B-D24CAF1532D3}.Release|Any CPU.Build.0 = Release|Any CPU + {78CB204A-9D27-4FEF-BD81-5142732C064F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78CB204A-9D27-4FEF-BD81-5142732C064F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78CB204A-9D27-4FEF-BD81-5142732C064F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78CB204A-9D27-4FEF-BD81-5142732C064F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {F8A77069-D4E4-47E1-9522-E6EF9D697BDE} + SolutionGuid = {705DFF17-345B-4058-BDA0-7CFC82234B0D} EndGlobalSection EndGlobal diff --git a/example/fileserver/readme.md b/example/fileserver/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..542cd869c32b5a3778d7641994a7b280f34a7aec --- /dev/null +++ b/example/fileserver/readme.md @@ -0,0 +1 @@ +这是一个文件服务器,集成了版本更新查询和文件下载功能。只是为了方便测试,正式使用时请根据实际情况使用 \ No newline at end of file diff --git a/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.metadata.v5.1 b/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.metadata.v5.1 deleted file mode 100644 index b46ac873ed9c8ae3ea13b9b87f32261ee89ca645..0000000000000000000000000000000000000000 Binary files a/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.metadata.v5.1 and /dev/null differ diff --git a/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1 b/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1 deleted file mode 100644 index 61959b023b72ed8c2fa0c38d584a5a45f84ddb1d..0000000000000000000000000000000000000000 Binary files a/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1 and /dev/null differ diff --git a/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1 b/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1 index 41038806d5dee60c9329ea1bc06a620b08a25575..12ec8e6d03b8814764ef018b54f4a6c3057e3672 100644 Binary files a/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1 and b/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1 differ diff --git a/src/c#/.vs/ProjectEvaluation/generalupdate.projects.v5.1 b/src/c#/.vs/ProjectEvaluation/generalupdate.projects.v5.1 index e2359a41bfd483d48d4d43a05fec3ca3f7da6987..2d18f89f13daae2a0204c19905e10b51c715b2b8 100644 Binary files a/src/c#/.vs/ProjectEvaluation/generalupdate.projects.v5.1 and b/src/c#/.vs/ProjectEvaluation/generalupdate.projects.v5.1 differ diff --git a/src/c#/GeneralUpdate.Zip/GZip/GeneralZip.cs b/src/c#/GeneralUpdate.Zip/GZip/GeneralZip.cs index 7bf306641da045e357503b3966112fbd90e75691..f3c925184d9a624e2fcab4f91dcfc3ca95a416f2 100644 --- a/src/c#/GeneralUpdate.Zip/GZip/GeneralZip.cs +++ b/src/c#/GeneralUpdate.Zip/GZip/GeneralZip.cs @@ -1,5 +1,6 @@ using GeneralUpdate.Zip.Events; using GeneralUpdate.Zip.Factory; +using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; @@ -219,7 +220,7 @@ namespace GeneralUpdate.Zip.GZip if (!fileInfo.Exists) return false; using (var zipToOpen = new FileStream(zipFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read)) { - using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read,false,_encoding)) + using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read, false, _encoding)) { var count = archive.Entries.Count; for (int i = 0; i < count; i++) @@ -230,11 +231,21 @@ namespace GeneralUpdate.Zip.GZip var entryFilePath = Regex.Replace(entries.FullName.Replace("/", @"\"), @"^\\*", ""); var filePath = directoryInfo + entryFilePath; OnUnZipProgressEventHandler(this, new BaseUnZipProgressEventArgs { Size = entries.Length, Count = count, Index = i + 1, Path = entries.FullName, Name = entries.Name }); - var content = new byte[entries.Length]; - entries.Open().Read(content, 0, content.Length); var greatFolder = Directory.GetParent(filePath); if (!greatFolder.Exists) greatFolder.Create(); - File.WriteAllBytes(filePath, content); + //如果是.Net6版本以上,直接使用提取方式 + if (Environment.Version >= new Version("6.0.0")) + { + entries.ExtractToFile(filePath); + } + else + { + var content = new byte[entries.Length]; + entries.Open().Read(content, 0, content.Length); + File.WriteAllBytes(filePath, content); + } + + } } }