├── .gitattributes ├── .gitignore ├── Images ├── Common.png ├── MainContent.png ├── Step1.png ├── Step2.png ├── Step3.png ├── Step4.png ├── TestTool.png ├── UpdateFile.png ├── UpdaterClient.png ├── UpdaterRestart.png ├── UpdaterService.png ├── UpdaterWebServer.png └── Workflow.png ├── README.md ├── Source └── SocketUpdater │ ├── SocketUpdater.sln │ ├── TestTool │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── Model │ │ ├── ClientInfoModel.cs │ │ ├── LinkInfos.cs │ │ └── RegistryInfoModel.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── TestTool.csproj │ ├── View │ │ ├── ClientDownLoadPage.xaml │ │ ├── ClientDownLoadPage.xaml.cs │ │ ├── ClientRequestInfoPage.xaml │ │ ├── ClientRequestInfoPage.xaml.cs │ │ ├── RegistryInfoPage.xaml │ │ ├── RegistryInfoPage.xaml.cs │ │ ├── RestartPage.xaml │ │ ├── RestartPage.xaml.cs │ │ ├── ToolWindow.xaml │ │ └── ToolWindow.xaml.cs │ └── ViewModel │ │ ├── ClientDownLoadViewModel.cs │ │ ├── ClientRequestInfoViewModel.cs │ │ ├── RegistryInfoViewModel.cs │ │ └── RestartViewModel.cs │ ├── UpdaterClient │ ├── ClientSocket.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── UpdaterClient.csproj │ └── Utility │ │ ├── BootUtils.cs │ │ ├── RegistryUtils.cs │ │ └── RequestInfoUtils.cs │ ├── UpdaterRestart │ ├── App.config │ ├── ExampleFile │ │ ├── config.xml │ │ └── updateInfo.xml │ ├── ExecuteUpdate.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Restart.vbs │ ├── UpdaterRestart.csproj │ ├── Utility │ │ ├── ProcessUtils.cs │ │ ├── ReplaceFilesUtils.cs │ │ └── ZipUtils.cs │ └── app.manifest │ ├── UpdaterService │ ├── App.config │ ├── ExampleFile │ │ └── BIMProduct2018_Revit2016_18.1.4.0_18.1.5.0.zip │ ├── ExecuteProgram.cs │ ├── Install.bat │ ├── ProjectInstaller.Designer.cs │ ├── ProjectInstaller.cs │ ├── ProjectInstaller.resx │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── ServerSocket.cs │ ├── SocketService.Designer.cs │ ├── SocketService.cs │ ├── Uninstall.bat │ └── UpdaterService.csproj │ ├── UpdaterShare │ ├── GlobalSetting │ │ └── DownloadSetting.cs │ ├── Model │ │ ├── ClientBasicInfo.cs │ │ ├── ClientLinkInfo.cs │ │ ├── ComObject.cs │ │ ├── DownloadFileInfo.cs │ │ └── PacketDef.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── UpdaterShare.csproj │ └── Utility │ │ ├── Crc16Utils.cs │ │ ├── FileUtils.cs │ │ ├── LogUtils.cs │ │ ├── Md5Utils.cs │ │ ├── PacketUtils.cs │ │ ├── ServerFileUtils.cs │ │ └── XmlUtils.cs │ └── UpdaterWebServer │ ├── ApiController │ ├── ConnectionController.cs │ └── GetFileInfoController.cs │ ├── App_Start │ └── WebApiConfig.cs │ ├── Global.asax │ ├── Global.asax.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── Startup.cs │ ├── UpdaterWebServer.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── favicon.ico │ └── packages.config └── ThirdParty ├── DevExpress ├── DevExpress.Data.v15.2.dll ├── DevExpress.Mvvm.v15.2.dll ├── DevExpress.Xpf.Controls.v15.2.dll └── DevExpress.Xpf.Core.v15.2.dll ├── ICSharpCode ├── ICSharpCode.SharpZipLib.dll └── ICSharpCode.SharpZipLib.xml ├── Log4Net ├── log4net.dll └── log4net.xml └── Newtonsoft.Json ├── Newtonsoft.Json.dll └── Newtonsoft.Json.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.sln.docstates 8 | 9 | # Build results 10 | [Dd]ebug/ 11 | [Dd]ebugPublic/ 12 | [Rr]elease/ 13 | [Rr]eleases/ 14 | build/ 15 | bld/ 16 | [Bb]in/ 17 | [Bb]in_cscec8b/ 18 | [Oo]bj/ 19 | 20 | # Roslyn cache directories 21 | *.ide/ 22 | 23 | # MSTest test Results 24 | [Tt]est[Rr]esult*/ 25 | [Bb]uild[Ll]og.* 26 | 27 | #NUNIT 28 | *.VisualState.xml 29 | TestResult.xml 30 | 31 | # Build Results of an ATL Project 32 | [Dd]ebugPS/ 33 | [Rr]eleasePS/ 34 | dlldata.c 35 | 36 | *_i.c 37 | *_p.c 38 | *_i.h 39 | *.ilk 40 | *.meta 41 | *.obj 42 | *.pch 43 | *.pdb 44 | *.pgc 45 | *.pgd 46 | *.rsp 47 | *.sbr 48 | *.tlb 49 | *.tli 50 | *.tlh 51 | *.tmp 52 | *.tmp_proj 53 | *.log 54 | *.vspscc 55 | *.vssscc 56 | .builds 57 | *.pidb 58 | *.svclog 59 | *.scc 60 | 61 | # Chutzpah Test files 62 | _Chutzpah* 63 | 64 | # Visual C++ cache files 65 | ipch/ 66 | *.aps 67 | *.ncb 68 | *.opensdf 69 | *.sdf 70 | *.cachefile 71 | 72 | # Visual Studio profiler 73 | *.psess 74 | *.vsp 75 | *.vspx 76 | .vs/ 77 | 78 | # TFS 2012 Local Workspace 79 | $tf/ 80 | 81 | # Guidance Automation Toolkit 82 | *.gpState 83 | 84 | # ReSharper is a .NET coding add-in 85 | _ReSharper*/ 86 | *.[Rr]e[Ss]harper 87 | *.DotSettings.user 88 | 89 | # JustCode is a .NET coding addin-in 90 | .JustCode 91 | 92 | # TeamCity is a build add-in 93 | _TeamCity* 94 | 95 | # DotCover is a Code Coverage Tool 96 | *.dotCover 97 | 98 | # NCrunch 99 | _NCrunch_* 100 | .*crunch*.local.xml 101 | 102 | # MightyMoose 103 | *.mm.* 104 | AutoTest.Net/ 105 | 106 | # Web workbench (sass) 107 | .sass-cache/ 108 | 109 | # Installshield output folder 110 | [Ee]xpress/ 111 | 112 | # DocProject is a documentation generator add-in 113 | DocProject/buildhelp/ 114 | DocProject/Help/*.HxT 115 | DocProject/Help/*.HxC 116 | DocProject/Help/*.hhc 117 | DocProject/Help/*.hhk 118 | DocProject/Help/*.hhp 119 | DocProject/Help/Html2 120 | DocProject/Help/html 121 | 122 | # Click-Once directory 123 | publish/ 124 | 125 | # Publish Web Output 126 | *.[Pp]ublish.xml 127 | *.azurePubxml 128 | ## TODO: Comment the next line if you want to checkin your 129 | ## web deploy settings but do note that will include unencrypted 130 | ## passwords 131 | *.pubxml 132 | 133 | # NuGet Packages 134 | packages/* 135 | *.nupkg 136 | ## TODO: If the tool you use requires repositories.config 137 | ## uncomment the next line 138 | #!packages/repositories.config 139 | 140 | # Enable "build/" folder in the NuGet Packages folder since 141 | # NuGet packages use it for MSBuild targets. 142 | # This line needs to be after the ignore of the build folder 143 | # (and the packages folder if the line above has been uncommented) 144 | !packages/build/ 145 | 146 | # Windows Azure Build Output 147 | csx/ 148 | *.build.csdef 149 | 150 | # Windows Store app package directory 151 | AppPackages/ 152 | 153 | # Others 154 | sql/ 155 | *.Cache 156 | ClientBin/ 157 | [Ss]tyle[Cc]op.* 158 | ~$* 159 | *~ 160 | *.dbmdl 161 | *.dbproj.schemaview 162 | *.pfx 163 | *.publishsettings 164 | node_modules/ 165 | 166 | # RIA/Silverlight projects 167 | Generated_Code/ 168 | 169 | # Backup & report files from converting an old project file 170 | # to a newer Visual Studio version. Backup files are not needed, 171 | # because we have git ;-) 172 | _UpgradeReport_Files/ 173 | Backup*/ 174 | UpgradeLog*.XML 175 | UpgradeLog*.htm 176 | 177 | # SQL Server files 178 | *.mdf 179 | *.ldf 180 | 181 | # Business Intelligence projects 182 | *.rdl.data 183 | *.bim.layout 184 | *.bim_*.settings 185 | 186 | # Microsoft Fakes 187 | FakesAssemblies/ 188 | bin.zip 189 | *.orig -------------------------------------------------------------------------------- /Images/Common.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Common.png -------------------------------------------------------------------------------- /Images/MainContent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/MainContent.png -------------------------------------------------------------------------------- /Images/Step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Step1.png -------------------------------------------------------------------------------- /Images/Step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Step2.png -------------------------------------------------------------------------------- /Images/Step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Step3.png -------------------------------------------------------------------------------- /Images/Step4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Step4.png -------------------------------------------------------------------------------- /Images/TestTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/TestTool.png -------------------------------------------------------------------------------- /Images/UpdateFile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/UpdateFile.png -------------------------------------------------------------------------------- /Images/UpdaterClient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/UpdaterClient.png -------------------------------------------------------------------------------- /Images/UpdaterRestart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/UpdaterRestart.png -------------------------------------------------------------------------------- /Images/UpdaterService.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/UpdaterService.png -------------------------------------------------------------------------------- /Images/UpdaterWebServer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/UpdaterWebServer.png -------------------------------------------------------------------------------- /Images/Workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BIMCoderLiang/SocketUpdater/d91998c74b1f525495768ee98fb0a914c3c234cf/Images/Workflow.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## SocketUpdater ReadMe 2 | 3 | A Revit Plug-In Updater Project Based On Multi-Thread Task Socket 4 | 5 | * * * 6 | 7 | ### Project Source 8 | 9 | Most of clients don't want to uninstall the old,then install the new one when a revit plug-in releases very frequently. Therefore, I started this project and hope to solve this problem. 10 | 11 | * * * 12 | 13 | ### Main Content 14 | 15 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/MainContent.png) 16 | 17 | * Client: 18 | A **dll** called **UpdaterClient** which used to be called in our plug-in. 19 | A **exe** called **UpdaterRestart** which is included in our plug-in and it used to replace old files with new ones and restart Autodesk Revit. 20 | * Common: 21 | A **dll** called **UpdaterShare** which is used to be called both in Client and Server. 22 | * Server: 23 | A **Windows service** called **UpdaterService** which runs Server Socket to send update files to Client. 24 | A **Webapi service** called **UpdaterWebServer** which returns some brief infos about update files (file latestversion, file length and file Md5 value) to Client. 25 | * Tool: 26 | A **exe** called **TestTool** which runs whole workflow. 27 | 28 | * * * 29 | 30 | ### WorkFlow 31 | 32 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Workflow.png) 33 | 34 | * * * 35 | 36 | ### Each Part 37 | 38 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/UpdaterClient.png) 39 | 40 | * **BootUtils**: 41 | this class is used to create .lnk in Startup folder which can makes **UpdaterRestart** runs when computer boots. 42 | * **RegistryUtils**: 43 | this class is used to Read, Write, Create and Delete product Registry info. 44 | * **RequestInfoUtils**: 45 | this class is used to send packed Registry info to Server and receive update file info, such as its version, length, Md5 value. 46 | * **ClientSocket**: 47 | this class is used to send download file request and receive data packets from Server, and finally combine data packets. 48 | 49 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/UpdateFile.png) 50 | 51 | * * * 52 | 53 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/UpdaterRestart.png) 54 | 55 | * **ExampleFile (Not be called in program)** 56 | **config.xml**: this xml file is inclueded in UpdateFile.zip which can determined the file location. 57 | **updateInfo.xml**: this xml file records the client decisions when he/she completes download files, whether restart revit now or next computer boot time. 58 | While it records product Registry info. 59 | 60 | * **ProcessUtils**: 61 | this class is used to kill Revit process and start **UpdaterRestart** exe. 62 | 63 | * **ReplaceFilesUtils**: 64 | this class is used to replace old files with new ones. 65 | * **ZipUtils**: 66 | this class is used to Zip files and Unzip .zip file. 67 | * **app.mainfest**: 68 | this file is used to get high control for Registry operations. 69 | * **ExecuteUpdate**: 70 | this console program is used to execute final update operations, such as unzip UpdateFile.zip, cover old files, update Registry info etc. 71 | * **Restart.vbs**: 72 | this vbs script is only used when Client chosen update next computer boots time. 73 | 74 | * * * 75 | 76 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Common.png) 77 | 78 | * **GlobalSetting Folder**: 79 | Define some shared parameters both in Client and Server. 80 | * **Model Folder**: 81 | Define some data types and socket packet. 82 | * **Utility Folder**: 83 | Some common functions which used in program. 84 | 85 | * * * 86 | 87 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/UpdaterService.png) 88 | 89 | * **ExampleFile**: 90 | a example update file which is used to test update project. 91 | * **ExecuteProgram**: 92 | a Windows service main program. 93 | * **Install.bat**: 94 | a bat which starts SocketService. 95 | * **ServerSocket**: 96 | a class which runs Server Socket service. 97 | * **Uninstall.bat**: 98 | a bat which stops and deletes SocketService. 99 | 100 | * * * 101 | 102 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/UpdaterWebServer.png) 103 | 104 | * **ApiController Folder**: 105 | the controller returns update file info to Client. 106 | 107 | * * * 108 | 109 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/TestTool.png) 110 | 111 | The TestTool completed with DevExpress MVVM Mode. 112 | 113 | * **Preparation: Please run Install.bat to start SocketService in UpdaterService before TestTool** 114 | 115 | * **Step1: Generate Local Registry Info** 116 | 117 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Step1.png) 118 | 119 | * **Step2: Get Update File Info** 120 | 121 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Step2.png) 122 | 123 | * **Step3: Download Update Zip File** 124 | 125 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Step3.png) 126 | 127 | * **Step4: Restart Autodesk Revit** 128 | 129 | ![image](https://github.com/airforce094/SocketUpdater/raw/master/Images/Step4.png) 130 | 131 | * * * 132 | 133 | ### Contact Me 134 | 135 | **E-mail: bim.frankliang@foxmail.com** 136 | 137 | **QQ:1223475343** 138 | -------------------------------------------------------------------------------- /Source/SocketUpdater/SocketUpdater.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{0F8A1E9D-55CD-4DD2-9B5B-E064D1DCFA5E}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server", "Server", "{018A42DE-FB87-4E93-8447-A4943FD74CF3}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{A808CC9E-1438-4C97-803B-62AF378869F9}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdaterClient", "UpdaterClient\UpdaterClient.csproj", "{AA9CA057-BDBC-4291-9CCC-D4B841650F09}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdaterShare", "UpdaterShare\UpdaterShare.csproj", "{0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5}" 15 | EndProject 16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdaterRestart", "UpdaterRestart\UpdaterRestart.csproj", "{AC48E620-0640-436F-A175-CB6AEE8DF609}" 17 | EndProject 18 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tool", "Tool", "{E176292B-B2A6-4C23-8E77-18B22D2ECE48}" 19 | EndProject 20 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdaterService", "UpdaterService\UpdaterService.csproj", "{DFD1D238-8962-45C2-B637-5DCD469730F0}" 21 | EndProject 22 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdaterWebServer", "UpdaterWebServer\UpdaterWebServer.csproj", "{5441BC1A-9F11-4C61-B1EB-3476D5F1459B}" 23 | EndProject 24 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestTool", "TestTool\TestTool.csproj", "{70388986-34DD-46F7-A8DC-50E486DD86BC}" 25 | EndProject 26 | Global 27 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 28 | Debug|Any CPU = Debug|Any CPU 29 | Release|Any CPU = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 32 | {AA9CA057-BDBC-4291-9CCC-D4B841650F09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 33 | {AA9CA057-BDBC-4291-9CCC-D4B841650F09}.Debug|Any CPU.Build.0 = Debug|Any CPU 34 | {AA9CA057-BDBC-4291-9CCC-D4B841650F09}.Release|Any CPU.ActiveCfg = Release|Any CPU 35 | {AA9CA057-BDBC-4291-9CCC-D4B841650F09}.Release|Any CPU.Build.0 = Release|Any CPU 36 | {0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5}.Release|Any CPU.ActiveCfg = Release|Any CPU 39 | {0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5}.Release|Any CPU.Build.0 = Release|Any CPU 40 | {AC48E620-0640-436F-A175-CB6AEE8DF609}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 41 | {AC48E620-0640-436F-A175-CB6AEE8DF609}.Debug|Any CPU.Build.0 = Debug|Any CPU 42 | {AC48E620-0640-436F-A175-CB6AEE8DF609}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {AC48E620-0640-436F-A175-CB6AEE8DF609}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {DFD1D238-8962-45C2-B637-5DCD469730F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 45 | {DFD1D238-8962-45C2-B637-5DCD469730F0}.Debug|Any CPU.Build.0 = Debug|Any CPU 46 | {DFD1D238-8962-45C2-B637-5DCD469730F0}.Release|Any CPU.ActiveCfg = Release|Any CPU 47 | {DFD1D238-8962-45C2-B637-5DCD469730F0}.Release|Any CPU.Build.0 = Release|Any CPU 48 | {5441BC1A-9F11-4C61-B1EB-3476D5F1459B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 49 | {5441BC1A-9F11-4C61-B1EB-3476D5F1459B}.Debug|Any CPU.Build.0 = Debug|Any CPU 50 | {5441BC1A-9F11-4C61-B1EB-3476D5F1459B}.Release|Any CPU.ActiveCfg = Release|Any CPU 51 | {5441BC1A-9F11-4C61-B1EB-3476D5F1459B}.Release|Any CPU.Build.0 = Release|Any CPU 52 | {70388986-34DD-46F7-A8DC-50E486DD86BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 53 | {70388986-34DD-46F7-A8DC-50E486DD86BC}.Debug|Any CPU.Build.0 = Debug|Any CPU 54 | {70388986-34DD-46F7-A8DC-50E486DD86BC}.Release|Any CPU.ActiveCfg = Release|Any CPU 55 | {70388986-34DD-46F7-A8DC-50E486DD86BC}.Release|Any CPU.Build.0 = Release|Any CPU 56 | EndGlobalSection 57 | GlobalSection(SolutionProperties) = preSolution 58 | HideSolutionNode = FALSE 59 | EndGlobalSection 60 | GlobalSection(NestedProjects) = preSolution 61 | {AA9CA057-BDBC-4291-9CCC-D4B841650F09} = {0F8A1E9D-55CD-4DD2-9B5B-E064D1DCFA5E} 62 | {0F89CC70-3ACA-4664-873B-B8A9F4D7CEE5} = {A808CC9E-1438-4C97-803B-62AF378869F9} 63 | {AC48E620-0640-436F-A175-CB6AEE8DF609} = {0F8A1E9D-55CD-4DD2-9B5B-E064D1DCFA5E} 64 | {DFD1D238-8962-45C2-B637-5DCD469730F0} = {018A42DE-FB87-4E93-8447-A4943FD74CF3} 65 | {5441BC1A-9F11-4C61-B1EB-3476D5F1459B} = {018A42DE-FB87-4E93-8447-A4943FD74CF3} 66 | {70388986-34DD-46F7-A8DC-50E486DD86BC} = {E176292B-B2A6-4C23-8E77-18B22D2ECE48} 67 | EndGlobalSection 68 | EndGlobal 69 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace TestTool 10 | { 11 | /// 12 | /// App.xaml 的交互逻辑 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Model/ClientInfoModel.cs: -------------------------------------------------------------------------------- 1 | using DevExpress.Mvvm; 2 | 3 | namespace TestTool.Model 4 | { 5 | public class ClientInfoModel : BindableBase 6 | { 7 | public string RName { get; set; } 8 | public string RValue { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Model/LinkInfos.cs: -------------------------------------------------------------------------------- 1 | using DevExpress.Mvvm; 2 | 3 | namespace TestTool.Model 4 | { 5 | public class LinkInfo:BindableBase 6 | { 7 | public string LName { get; set; } 8 | public string LValue { get; set; } 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Model/RegistryInfoModel.cs: -------------------------------------------------------------------------------- 1 | using DevExpress.Mvvm; 2 | 3 | namespace TestTool.Model 4 | { 5 | public class RegistryInfoModel:BindableBase 6 | { 7 | public string RKey { get; set; } 8 | public string RValue { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // 有关程序集的一般信息由以下 8 | // 控制。更改这些特性值可修改 9 | // 与程序集关联的信息。 10 | [assembly: AssemblyTitle("TestTool")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("China")] 14 | [assembly: AssemblyProduct("TestTool")] 15 | [assembly: AssemblyCopyright("Copyright © China 2017")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | //将 ComVisible 设置为 false 将使此程序集中的类型 20 | //对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 21 | //请将此类型的 ComVisible 特性设置为 true。 22 | [assembly: ComVisible(false)] 23 | 24 | //若要开始生成可本地化的应用程序,请 25 | // 中的 .csproj 文件中 26 | //例如,如果您在源文件中使用的是美国英语, 27 | //使用的是美国英语,请将 设置为 en-US。 然后取消 28 | //对以下 NeutralResourceLanguage 特性的注释。 更新 29 | //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //主题特定资源词典所处位置 36 | //(当资源未在页面 37 | //或应用程序资源字典中找到时使用) 38 | ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 39 | //(当资源未在页面 40 | //、应用程序或任何主题专用资源字典中找到时使用) 41 | )] 42 | 43 | 44 | // 程序集的版本信息由下列四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 生成号 49 | // 修订号 50 | // 51 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 52 | // 方法是按如下所示使用“*”: : 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TestTool.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestTool.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TestTool.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/TestTool.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {70388986-34DD-46F7-A8DC-50E486DD86BC} 8 | WinExe 9 | Properties 10 | TestTool 11 | TestTool 12 | v4.5 13 | 512 14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15 | 4 16 | true 17 | 18 | 19 | 20 | AnyCPU 21 | true 22 | full 23 | false 24 | bin\Debug\ 25 | DEBUG;TRACE 26 | prompt 27 | 4 28 | false 29 | 30 | 31 | AnyCPU 32 | pdbonly 33 | true 34 | bin\Release\ 35 | TRACE 36 | prompt 37 | 4 38 | false 39 | 40 | 41 | 42 | False 43 | ..\..\..\ThirdParty\DevExpress\DevExpress.Data.v15.2.dll 44 | 45 | 46 | False 47 | ..\..\..\ThirdParty\DevExpress\DevExpress.Mvvm.v15.2.dll 48 | 49 | 50 | False 51 | ..\..\..\ThirdParty\DevExpress\DevExpress.Xpf.Controls.v15.2.dll 52 | 53 | 54 | False 55 | ..\..\..\ThirdParty\DevExpress\DevExpress.Xpf.Core.v15.2.dll 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 4.0 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | MSBuild:Compile 75 | Designer 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | ClientDownLoadPage.xaml 86 | 87 | 88 | ClientRequestInfoPage.xaml 89 | 90 | 91 | RegistryInfoPage.xaml 92 | 93 | 94 | RestartPage.xaml 95 | 96 | 97 | MSBuild:Compile 98 | Designer 99 | 100 | 101 | App.xaml 102 | Code 103 | 104 | 105 | ToolWindow.xaml 106 | Code 107 | 108 | 109 | Designer 110 | MSBuild:Compile 111 | 112 | 113 | Designer 114 | MSBuild:Compile 115 | 116 | 117 | Designer 118 | MSBuild:Compile 119 | 120 | 121 | Designer 122 | MSBuild:Compile 123 | 124 | 125 | 126 | 127 | Code 128 | 129 | 130 | True 131 | True 132 | Resources.resx 133 | 134 | 135 | True 136 | Settings.settings 137 | True 138 | 139 | 140 | ResXFileCodeGenerator 141 | Resources.Designer.cs 142 | 143 | 144 | SettingsSingleFileGenerator 145 | Settings.Designer.cs 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | {aa9ca057-bdbc-4291-9ccc-d4b841650f09} 155 | UpdaterClient 156 | 157 | 158 | {0f89cc70-3aca-4664-873b-b8a9f4d7cee5} 159 | UpdaterShare 160 | 161 | 162 | 163 | 164 | 171 | -------------------------------------------------------------------------------- /Source/SocketUpdater/TestTool/View/ClientDownLoadPage.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |