diff --git a/example/fileserver/.vs/fileserver/config/applicationhost.config b/example/fileserver/.vs/fileserver/config/applicationhost.config
new file mode 100644
index 0000000000000000000000000000000000000000..600d758493f78ceece75d3d6fe15dfd6847f1415
--- /dev/null
+++ b/example/fileserver/.vs/fileserver/config/applicationhost.config
@@ -0,0 +1,972 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/fileserver/fileserver.sln b/example/fileserver/fileserver.sln
new file mode 100644
index 0000000000000000000000000000000000000000..4b547bdb2743fd6fda9f679fa92a0ab03460e146
--- /dev/null
+++ b/example/fileserver/fileserver.sln
@@ -0,0 +1,25 @@
+
+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}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ 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
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {F8A77069-D4E4-47E1-9522-E6EF9D697BDE}
+ EndGlobalSection
+EndGlobal
diff --git a/example/fileserver/fileserver/Properties/launchSettings.json b/example/fileserver/fileserver/Properties/launchSettings.json
new file mode 100644
index 0000000000000000000000000000000000000000..235e6c38d8449e37d1d47919470836289d3a2ec4
--- /dev/null
+++ b/example/fileserver/fileserver/Properties/launchSettings.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:47751",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "fileserver": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": true,
+ "launchUrl": "UpdateLog.html",
+ "applicationUrl": "http://localhost:5008",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/example/fileserver/fileserver/appsettings.Development.json b/example/fileserver/fileserver/appsettings.Development.json
new file mode 100644
index 0000000000000000000000000000000000000000..0c208ae9181e5e5717e47ec1bd59368aebc6066e
--- /dev/null
+++ b/example/fileserver/fileserver/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/example/fileserver/fileserver/appsettings.json b/example/fileserver/fileserver/appsettings.json
new file mode 100644
index 0000000000000000000000000000000000000000..10f68b8c8b4f796baf8ddeee7551b6a52b9437cc
--- /dev/null
+++ b/example/fileserver/fileserver/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/example/fileserver/fileserver/fileserver.csproj b/example/fileserver/fileserver/fileserver.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..3f63efbbf9dd4dc7235a085f9a7a8b63b35be0c2
--- /dev/null
+++ b/example/fileserver/fileserver/fileserver.csproj
@@ -0,0 +1,16 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
diff --git a/example/fileserver/fileserver/wwwroot/1.0.0.9.zip b/example/fileserver/fileserver/wwwroot/1.0.0.9.zip
new file mode 100644
index 0000000000000000000000000000000000000000..d992d70f9005d5474706d12fcac15b8b5121101f
Binary files /dev/null and b/example/fileserver/fileserver/wwwroot/1.0.0.9.zip differ
diff --git a/example/fileserver/fileserver/wwwroot/UpdateLog.html b/example/fileserver/fileserver/wwwroot/UpdateLog.html
new file mode 100644
index 0000000000000000000000000000000000000000..77ee24832b13979a51465f317daa49576b1d967f
--- /dev/null
+++ b/example/fileserver/fileserver/wwwroot/UpdateLog.html
@@ -0,0 +1,18 @@
+
+
+
+
+更新日志
+
+
+
+本次更新日志
+
+
+1. 修复了若干个bug
+2. 添加了若干个新功能
+3. 具体请更新后体验
+
+
+
+
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..6c3065cf1b806627cc5e59ed6ba6df2c2c9e492b
Binary files /dev/null and b/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.metadata.v5.1 differ
diff --git a/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1 b/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1
new file mode 100644
index 0000000000000000000000000000000000000000..cb40908093dd9a07c6791861d5190523a2cafb8e
Binary files /dev/null and b/example/winform/TestWinForms/.vs/ProjectEvaluation/testwinforms.projects.v5.1 differ
diff --git a/example/winform/TestWinForms/Form1.resx b/example/winform/TestWinForms/Form1.resx
new file mode 100644
index 0000000000000000000000000000000000000000..f298a7be80982ebd538a05758a03bc827419d418
--- /dev/null
+++ b/example/winform/TestWinForms/Form1.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/example/winform/TestWinForms/Properties/Resources.resx b/example/winform/TestWinForms/Properties/Resources.resx
new file mode 100644
index 0000000000000000000000000000000000000000..1af7de150c99c12dd67a509fe57c10d63e4eeb04
--- /dev/null
+++ b/example/winform/TestWinForms/Properties/Resources.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/example/winform/TestWinForms/TestWinForms.csproj b/example/winform/TestWinForms/TestWinForms.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..403d2052073cac100266b1e8745521b0d9097149
--- /dev/null
+++ b/example/winform/TestWinForms/TestWinForms.csproj
@@ -0,0 +1,36 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+ 1.0.0.9
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
\ No newline at end of file
diff --git a/example/winform/readme.md b/example/winform/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..e49b54672c145a226477b5062a62a1310cdf900b
--- /dev/null
+++ b/example/winform/readme.md
@@ -0,0 +1,17 @@
+使用方法
+1. 先运行example\fileserver 这个文件服务器,这个服务器中整合了版本更新查询和文件下载功能。具体代码逻辑可以参看官网的介绍,这里就不赘述了,为了方便测试,把官网的api服务加上文件下载弄在了一起,在demo中,默认配置的是1.0.0.9的可用升级版本。
+
+2. 打开TestWinForms.csproj项目.在Load方法中会先去请求文件服务器,检查是否需要更新版本,如果需要更新,就会启动Upgrade.exe程序来更新,并且关闭winform程序,更新完后会自动重启
+
+3.运行升级之前需要把GeneralUpdate.Upgrad程序中bin目录下面的所有文件复制到run文件夹(见下面的文件夹解释)中才能正常更新。demo中是直接引用source的源码的,后面发布了也可以引用nuget包。
+
+4.代码里有比较详细的注释,可以试着操作一下
+
+
+直接看效果
+如果想直接看效果,可以直接打开example\winform\测试包 这个文件夹,将"可用版本.zip"解压。运行文件服务器,再运行解压后的run文件夹中的TestWinForms.exe,就能先体验一下更新的过程。
+
+文件夹解释
+解压文件夹中有1,2,3 三个文件夹 1是旧版本的,2是新版本发的,3是差分版本,run文件夹是实际运行的目录(也就是准备从1版本升级到2版本的),要测试的时候运行的是run文件夹里面的。
+我模拟的是从1.0.0.0版本升级到1.0.0.9版本,升级成功以后dll的版本号会变化,再次打开后就不会判断为需要升级了。
+具体的可以看代码。
diff --git "a/example/winform/\346\265\213\350\257\225\345\214\205/\345\217\257\347\224\250\347\211\210\346\234\254.zip" "b/example/winform/\346\265\213\350\257\225\345\214\205/\345\217\257\347\224\250\347\211\210\346\234\254.zip"
new file mode 100644
index 0000000000000000000000000000000000000000..05d1d8c497b710aad7714cbd3ba5050dcb1e2d7e
Binary files /dev/null and "b/example/winform/\346\265\213\350\257\225\345\214\205/\345\217\257\347\224\250\347\211\210\346\234\254.zip" differ
diff --git "a/example/winform/\346\265\213\350\257\225\345\214\205/\346\233\264\346\226\260\344\274\232\345\244\261\350\264\245\347\232\204\347\211\210\346\234\254.zip" "b/example/winform/\346\265\213\350\257\225\345\214\205/\346\233\264\346\226\260\344\274\232\345\244\261\350\264\245\347\232\204\347\211\210\346\234\254.zip"
new file mode 100644
index 0000000000000000000000000000000000000000..10a3cc40cd1729d8d8da983cc2014172887f33ca
Binary files /dev/null and "b/example/winform/\346\265\213\350\257\225\345\214\205/\346\233\264\346\226\260\344\274\232\345\244\261\350\264\245\347\232\204\347\211\210\346\234\254.zip" differ
diff --git a/example/winfrom/readme.md b/example/winfrom/readme.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/c#/.vs/GeneralUpdate/v17/TestStore/0/000.testlog b/src/c#/.vs/GeneralUpdate/v17/TestStore/0/000.testlog
new file mode 100644
index 0000000000000000000000000000000000000000..704c7fa6def3b95da73da5334c6e4ef59a6ecff1
Binary files /dev/null and b/src/c#/.vs/GeneralUpdate/v17/TestStore/0/000.testlog differ
diff --git a/src/c#/.vs/GeneralUpdate/v17/TestStore/0/testlog.manifest b/src/c#/.vs/GeneralUpdate/v17/TestStore/0/testlog.manifest
new file mode 100644
index 0000000000000000000000000000000000000000..e92ede29d76aefe079835aeae278da5341f6e15c
Binary files /dev/null and b/src/c#/.vs/GeneralUpdate/v17/TestStore/0/testlog.manifest differ
diff --git a/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1 b/src/c#/.vs/ProjectEvaluation/generalupdate.metadata.v5.1
new file mode 100644
index 0000000000000000000000000000000000000000..41038806d5dee60c9329ea1bc06a620b08a25575
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..e2359a41bfd483d48d4d43a05fec3ca3f7da6987
Binary files /dev/null and b/src/c#/.vs/ProjectEvaluation/generalupdate.projects.v5.1 differ