Advertisement
yygfml

vs2017up

Oct 12th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 12.41 KB | None | 0 0
  1. @echo off
  2. mode con cols=85 lines=25
  3. setlocal EnableExtensions
  4. setlocal EnableDelayedExpansion
  5. (cd /d "%~dp0")&&(NET FILE||(powershell start-process -FilePath '%0' -verb runas)&&(exit /B)) >nul 2>&1
  6. ::===============================================================================================================
  7. :: UPDATE SCRIPTS SETS
  8. :: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  9. cd /d %~dp0
  10. set "UpdateUri=https://aka.ms/vs/15/release"
  11. :: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  12. set "VS=Visual Studio 2017"
  13. set "COMMUNITY=vs_community.exe"
  14. set "NEWCOMMUNITY=vs_community_new.exe"
  15. set "PROFESSIONAL=vs_professional.exe"
  16. set "NEWPROFESSIONAL=vs_professional_new.exe"
  17. set "ENTERPRISE=vs_enterprise.exe"
  18. set "NEWENTERPRISE=vs_enterprise_new.exe"
  19. set "DISM=dism.exe"
  20. echo 请键入更新缓存目录盘符,例如:e
  21. set /p WDLN=
  22. set "WorkFolder=%WDLN%:\Layout"
  23. ::===============================================================================================================
  24. set "SETUPFILEPATH=%~dp0Setup\"
  25. set "regexSETUPFILEPATH=%SETUPFILEPATH:\=\\%"
  26. ::===============================================================================================================
  27. for /f %%I in ('powershell ^(Get-Host^).UI.RawUI.WindowSize.width') do set "cw=%%I"
  28. ::===============================================================================================================
  29. if exist %SETUPFILEPATH% rmdir /s /q %SETUPFILEPATH%
  30. if exist "%WorkFolder%" rmdir /s /q "%WorkFolder%"
  31. :================================================================================================================
  32. ::===============================================================================================================
  33. call :TITLE
  34. call :BITSDOWNLOAD
  35. call :GETVERSION "%COMMUNITY%"
  36. set "TMPIMAGE=TempImage.wim"
  37. set "VS2017ESD=vs2017ver%Version%build%Date:~0,4%%Date:~5,2%%Date:~8,2%.esd"
  38. mkdir %WorkFolder%
  39. call :GETOLDESDFILE
  40. if exist %OLDESDFILE% (
  41.     call :UPDATE
  42. ) else (
  43.     call :DOWNLOAD
  44. )
  45. call :MAKEESDFILE 1
  46. call :MAKEESDFILE 2
  47. call :MAKEESDFILE 3
  48. call :EXIT
  49. :================================================================================================================
  50. ::===============================================================================================================
  51. ::BITSDOWNLOAD
  52. :BITSDOWNLOAD
  53. cls
  54. call :HEADER "下载 %VS% 最新安装程序"
  55. mkdir %SETUPFILEPATH% >nul 2>&1
  56. for /f "tokens=3 delims=:. " %%f in ('bitsadmin.exe /CREATE /DOWNLOAD "%VS% OffLine DownLoader" ^| findstr "Created job"') do (set GUID=%%f)
  57. bitsadmin /transfer %GUID% /download /priority foreground %UpdateUri%/%COMMUNITY% "%SETUPFILEPATH%%NEWCOMMUNITY%" >nul 2>&1
  58. bitsadmin /transfer %GUID% /download /priority foreground %UpdateUri%/%PROFESSIONAL% "%SETUPFILEPATH%%NEWPROFESSIONAL%" >nul 2>&1
  59. bitsadmin /transfer %GUID% /download /priority foreground %UpdateUri%/%ENTERPRISE% "%SETUPFILEPATH%%NEWENTERPRISE%" >nul 2>&1
  60. call :CHECKDETECTIONLEGALITY %NEWCOMMUNITY% %COMMUNITY%
  61. call :CHECKDETECTIONLEGALITY %NEWPROFESSIONAL% %PROFESSIONAL%
  62. call :CHECKDETECTIONLEGALITY %NEWENTERPRISE% %ENTERPRISE%
  63. goto :eof
  64. :================================================================================================================
  65. ::===============================================================================================================
  66. ::UPDATE
  67. :UPDATE
  68. call :HEADER "更新 %VS% 离线安装包镜像"
  69. echo 释放 %VS% 社区版离线安装包镜像...
  70. echo.
  71. call :APPLYIMAGE
  72. call :HEADER "更新 %VS% 离线安装包镜像"
  73. echo 更新 %VS% 社区版 ...
  74. echo.
  75. "%SETUPFILEPATH%%COMMUNITY%" --layout "%WorkFolder%" --lang zh-CN
  76. call :CAPTUREIMAGE "Community"
  77. call :HEADER "更新 %VS% 离线安装包镜像"
  78. echo 更新 %VS% 专业版 ...
  79. echo.
  80. call :CLEANUP
  81. "%SETUPFILEPATH%%PROFESSIONAL%" --layout "%WorkFolder%" --lang zh-CN
  82. call :APPENDIMAGE "Professional"
  83. call :HEADER "更新 %VS% 离线安装包镜像"
  84. echo 更新 %VS% 企业版 ...
  85. echo.
  86. call :CLEANUP
  87. "%SETUPFILEPATH%%ENTERPRISE%" --layout "%WorkFolder%" --lang zh-CN
  88. call :APPENDIMAGE "Enterprise"
  89. goto :eof
  90. :================================================================================================================
  91. ::===============================================================================================================
  92. ::DOWNLOAD
  93. :DOWNLOAD
  94. call :HEADER "下载 %VS% 离线安装包"
  95. echo 下载 %VS% 社区版 ...
  96. echo.
  97. "%SETUPFILEPATH%%COMMUNITY%" --layout "%WorkFolder%" --lang zh-CN
  98. call :CAPTUREIMAGE "Community"
  99. call :HEADER "下载 %VS% 离线安装包"
  100. echo 下载 %VS% 专业版 ...
  101. echo.
  102. call :CLEANUP
  103. "%SETUPFILEPATH%%PROFESSIONAL%" --layout "%WorkFolder%" --lang zh-CN
  104. call :APPENDIMAGE "Professional"
  105. call :HEADER "下载 %VS% 离线安装包"
  106. echo 下载 %VS% 企业版 ...
  107. echo.
  108. call :CLEANUP
  109. "%SETUPFILEPATH%%ENTERPRISE%" --layout "%WorkFolder%" --lang zh-CN
  110. call :APPENDIMAGE "Enterprise"
  111. goto :eof
  112.  
  113. :APPLYIMAGE
  114. %DISM% /Apply-Image /ImageFile:"%OLDESDFILE%" /Index:1 /ApplyDir:"%WorkFolder%"
  115. echo.
  116. goto :eof
  117. :================================================================================================================
  118. ::===============================================================================================================
  119. ::CAPTUREIMAGE
  120. :CAPTUREIMAGE
  121. %DISM% /Capture-Image /ImageFile:"%TMPIMAGE%" /Name:"Visual Studio 2017 %~1" /Description:"Visual Studio 2017 %~1" /CaptureDir:"%WorkFolder%" /Compress:max
  122. echo.
  123. goto :eof
  124. :================================================================================================================
  125. ::===============================================================================================================
  126. ::APPENDIMAGE
  127. :APPENDIMAGE
  128. %DISM% /Append-Image /ImageFile:"%TMPIMAGE%" /Name:"Visual Studio 2017 %~1" /Description:"Visual Studio 2017 %~1" /CaptureDir:"%WorkFolder%"
  129. echo.
  130. goto :eof
  131. :================================================================================================================
  132. ::===============================================================================================================
  133. ::CHECKDETECTIONLEGALITY
  134. :CHECKDETECTIONLEGALITY
  135. if exist "%SETUPFILEPATH%%newfile%" (
  136.         for /f "tokens=1 delims=" %%a in ("%SETUPFILEPATH%%~1") do (
  137.             if %%~za lss 1048576 (
  138.                 color 0c
  139.                 echo 下载到的 %~2 大小不正确,按任意键退出批处理!
  140.                 pause >nul 2>&1
  141.             goto :eof
  142.             ) else (
  143.            :: 替换旧的离线下载器
  144.                 move /y "%SETUPFILEPATH%%~1" "%SETUPFILEPATH%%~2" >nul 2>&1
  145.            :: 解除离线下载器锁定
  146.                 powershell -command "Unblock-file –path '%regexSETUPFILEPATH%%~2'" >nul 2>&1 ||(
  147.                     color 0c
  148.                     echo 解除文件锁定失败,按任意键退出批处理!
  149.                  pause >nul 2>&1
  150.                     goto :eof
  151.             )
  152.             echo %~2 下载完成.
  153.         )
  154.     )
  155. ) else (
  156.     color 0c
  157.     echo 下载出错,未下载到 %~2 ,按任意键退出批处理!
  158.     pause >nul 2>&1
  159.     goto :eof
  160. )
  161. goto :eof
  162. :================================================================================================================
  163. ::===============================================================================================================
  164. ::GETVERSION
  165. :GETVERSION
  166. for /f "skip=2 tokens=2,3,4,5 delims==." %%a in ('wmic datafile where "Name= '%regexSETUPFILEPATH%%~1'" get Version /value') do (
  167.     set "Version=%%a.%%b.%%c.%%d"
  168. )
  169. goto :eof
  170. :================================================================================================================
  171. ::===============================================================================================================
  172. ::GETOLDESDFILE
  173. :GETOLDESDFILE
  174. for %%a in (vs2017*.esd) do (set OLDESDFILE=%%a)
  175. goto :eof
  176. :================================================================================================================
  177. ::===============================================================================================================
  178. ::CLEANUP
  179. :CLEANUP
  180. del /f /q "%WorkFolder%\*.exe"
  181. del /f /q "%WorkFolder%\*.json"
  182. del /f /q "%WorkFolder%\*.opc"
  183. goto :eof
  184. :================================================================================================================
  185. ::===============================================================================================================
  186. ::MAKEESDFILE
  187. :MAKEESDFILE
  188. %DISM% /Export-Image /SourceImageFile:"%TMPIMAGE%" /SourceIndex:%~1 /DestinationImageFile:"%VS2017ESD%" /Compress:recovery
  189. echo.
  190. goto :eof
  191. :================================================================================================================
  192. ::===============================================================================================================
  193. ::EXIT
  194. :EXIT
  195. del /f /q %OLDESDFILE% >nul 2>&1
  196. del /f /q %TMPIMAGE% >nul 2>&1
  197. rmdir /s /q %SETUPFILEPATH% >nul 2>&1
  198. rmdir /s /q %WorkFolder% >nul 2>&1
  199. %DISM% /Get-ImageInfo /ImageFile:"%VS2017ESD%" > esdinfo.txt
  200. echo . >>esdinfo.txt
  201. echo Visual Studio 2017 序列号: >>esdinfo.txt
  202. echo 企业版:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF >>esdinfo.txt
  203. echo 专业版:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH >>esdinfo.txt
  204. ENDLOCAL
  205. exit
  206. :================================================================================================================
  207. ::===============================================================================================================
  208. ::TITLE
  209. :TITLE
  210. title %VS% 离线安装包下载/更新程序 - [lxb1628]
  211. goto:eof
  212. :================================================================================================================
  213. ::===============================================================================================================
  214. :: HEADER
  215. :HEADER
  216. cls
  217. call :Graphics
  218. echo:%~1
  219. call :Graphics
  220. echo:
  221. goto:eof
  222. :================================================================================================================
  223. ::===============================================================================================================
  224. :: GRAPHICS
  225. :Graphics
  226. if %cw% geq 150 echo.
  227. if %cw% geq 145 if %cw% lss 150 echo.
  228. if %cw% geq 140 if %cw% lss 145 echo.
  229. if %cw% geq 135 if %cw% lss 140 echo.
  230. if %cw% geq 130 if %cw% lss 135 echo.
  231. if %cw% geq 125 if %cw% lss 130 echo.
  232. if %cw% geq 120 if %cw% lss 125 echo.
  233. if %cw% geq 115 if %cw% lss 120 echo.
  234. if %cw% geq 110 if %cw% lss 115 echo.
  235. if %cw% geq 105 if %cw% lss 110 echo.
  236. if %cw% geq 100 if %cw% lss 105 echo.
  237. if %cw% geq 95 if %cw% lss 100 echo.
  238. if %cw% geq 90 if %cw% lss 95 echo.
  239. if %cw% geq 85 if %cw% lss 90 echo.
  240. if %cw% geq 80 if %cw% lss 85 echo.
  241. if %cw% lss 80 echo.
  242. goto:eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement