@microsoft/teamsfx-core 1.2.0 → 1.2.2-alpha.eb4575da.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/build/common/armInterface.d.ts +0 -20
  2. package/build/common/armInterface.d.ts.map +1 -1
  3. package/build/common/deps-checker/depsChecker.d.ts +1 -0
  4. package/build/common/deps-checker/depsChecker.d.ts.map +1 -1
  5. package/build/common/deps-checker/depsChecker.js.map +1 -1
  6. package/build/common/deps-checker/depsManager.d.ts +2 -1
  7. package/build/common/deps-checker/depsManager.d.ts.map +1 -1
  8. package/build/common/deps-checker/depsManager.js +12 -7
  9. package/build/common/deps-checker/depsManager.js.map +1 -1
  10. package/build/common/deps-checker/index.d.ts +1 -0
  11. package/build/common/deps-checker/index.d.ts.map +1 -1
  12. package/build/common/deps-checker/index.js +1 -0
  13. package/build/common/deps-checker/index.js.map +1 -1
  14. package/build/common/deps-checker/internal/dotnetChecker.d.ts.map +1 -1
  15. package/build/common/deps-checker/internal/dotnetChecker.js +2 -1
  16. package/build/common/deps-checker/internal/dotnetChecker.js.map +1 -1
  17. package/build/common/deps-checker/internal/funcToolChecker.d.ts.map +1 -1
  18. package/build/common/deps-checker/internal/funcToolChecker.js +2 -1
  19. package/build/common/deps-checker/internal/funcToolChecker.js.map +1 -1
  20. package/build/common/deps-checker/internal/ngrokChecker.d.ts +1 -1
  21. package/build/common/deps-checker/internal/ngrokChecker.d.ts.map +1 -1
  22. package/build/common/deps-checker/internal/ngrokChecker.js +2 -4
  23. package/build/common/deps-checker/internal/ngrokChecker.js.map +1 -1
  24. package/build/common/deps-checker/internal/nodeChecker.d.ts +1 -0
  25. package/build/common/deps-checker/internal/nodeChecker.d.ts.map +1 -1
  26. package/build/common/deps-checker/internal/nodeChecker.js +9 -1
  27. package/build/common/deps-checker/internal/nodeChecker.js.map +1 -1
  28. package/build/common/deps-checker/util/extensionInstaller.d.ts +3 -0
  29. package/build/common/deps-checker/util/extensionInstaller.d.ts.map +1 -0
  30. package/build/common/deps-checker/util/extensionInstaller.js +47 -0
  31. package/build/common/deps-checker/util/extensionInstaller.js.map +1 -0
  32. package/build/common/deps-checker/util/index.d.ts +5 -0
  33. package/build/common/deps-checker/util/index.d.ts.map +1 -0
  34. package/build/common/deps-checker/util/index.js +10 -0
  35. package/build/common/deps-checker/util/index.js.map +1 -0
  36. package/build/common/index.d.ts +1 -3
  37. package/build/common/index.d.ts.map +1 -1
  38. package/build/common/index.js +1 -3
  39. package/build/common/index.js.map +1 -1
  40. package/build/common/local/constants.d.ts +5 -0
  41. package/build/common/local/constants.d.ts.map +1 -1
  42. package/build/common/local/constants.js +7 -1
  43. package/build/common/local/constants.js.map +1 -1
  44. package/build/common/local/index.d.ts +5 -0
  45. package/build/common/local/index.d.ts.map +1 -0
  46. package/build/common/local/index.js +10 -0
  47. package/build/common/local/index.js.map +1 -0
  48. package/build/{plugins/solution/fx-solution/debug/util/certificate.d.ts → common/local/localCertificateManager.d.ts} +4 -6
  49. package/build/common/local/localCertificateManager.d.ts.map +1 -0
  50. package/build/{plugins/solution/fx-solution/debug/util/certificate.js → common/local/localCertificateManager.js} +37 -47
  51. package/build/common/local/localCertificateManager.js.map +1 -0
  52. package/build/common/local/localEnvManager.d.ts +6 -2
  53. package/build/common/local/localEnvManager.d.ts.map +1 -1
  54. package/build/common/local/localEnvManager.js +41 -1
  55. package/build/common/local/localEnvManager.js.map +1 -1
  56. package/build/{plugins/solution/fx-solution/debug/util → common/local}/process.d.ts +0 -0
  57. package/build/common/local/process.d.ts.map +1 -0
  58. package/build/{plugins/solution/fx-solution/debug/util → common/local}/process.js +0 -0
  59. package/build/common/local/process.js.map +1 -0
  60. package/build/common/local/projectSettingsHelper.d.ts +5 -5
  61. package/build/common/local/projectSettingsHelper.d.ts.map +1 -1
  62. package/build/common/local/projectSettingsHelper.js +28 -21
  63. package/build/common/local/projectSettingsHelper.js.map +1 -1
  64. package/build/common/local/taskDefinition.d.ts +1 -1
  65. package/build/common/local/taskDefinition.d.ts.map +1 -1
  66. package/build/common/local/taskDefinition.js +6 -4
  67. package/build/common/local/taskDefinition.js.map +1 -1
  68. package/build/common/localSettingsConstants.d.ts +1 -0
  69. package/build/common/localSettingsConstants.d.ts.map +1 -1
  70. package/build/common/localSettingsConstants.js +1 -0
  71. package/build/common/localSettingsConstants.js.map +1 -1
  72. package/build/common/localSettingsProvider.d.ts.map +1 -1
  73. package/build/common/localSettingsProvider.js +1 -0
  74. package/build/common/localSettingsProvider.js.map +1 -1
  75. package/build/common/permissionInterface.d.ts +1 -0
  76. package/build/common/permissionInterface.d.ts.map +1 -1
  77. package/build/common/permissionInterface.js +1 -0
  78. package/build/common/permissionInterface.js.map +1 -1
  79. package/build/common/telemetry.d.ts +7 -2
  80. package/build/common/telemetry.d.ts.map +1 -1
  81. package/build/common/telemetry.js +10 -4
  82. package/build/common/telemetry.js.map +1 -1
  83. package/build/common/{templates.d.ts → template-utils/templates.d.ts} +0 -0
  84. package/build/common/template-utils/templates.d.ts.map +1 -0
  85. package/build/common/{templates.js → template-utils/templates.js} +1 -1
  86. package/build/common/template-utils/templates.js.map +1 -0
  87. package/build/common/{templatesActions.d.ts → template-utils/templatesActions.d.ts} +0 -0
  88. package/build/common/template-utils/templatesActions.d.ts.map +1 -0
  89. package/build/common/{templatesActions.js → template-utils/templatesActions.js} +3 -3
  90. package/build/common/template-utils/templatesActions.js.map +1 -0
  91. package/build/common/{templatesUtils.d.ts → template-utils/templatesUtils.d.ts} +0 -0
  92. package/build/common/template-utils/templatesUtils.d.ts.map +1 -0
  93. package/build/common/{templatesUtils.js → template-utils/templatesUtils.js} +1 -1
  94. package/build/common/template-utils/templatesUtils.js.map +1 -0
  95. package/build/common/tools.d.ts +1 -4
  96. package/build/common/tools.d.ts.map +1 -1
  97. package/build/common/tools.js +41 -12
  98. package/build/common/tools.js.map +1 -1
  99. package/build/core/index.d.ts +2 -2
  100. package/build/core/index.d.ts.map +1 -1
  101. package/build/core/index.js +14 -6
  102. package/build/core/index.js.map +1 -1
  103. package/build/core/middleware/index.d.ts +0 -1
  104. package/build/core/middleware/index.d.ts.map +1 -1
  105. package/build/core/middleware/index.js +0 -1
  106. package/build/core/middleware/index.js.map +1 -1
  107. package/build/core/middleware/projectMigrator.d.ts.map +1 -1
  108. package/build/core/middleware/projectMigrator.js +0 -9
  109. package/build/core/middleware/projectMigrator.js.map +1 -1
  110. package/build/core/permissionRequest.js +2 -2
  111. package/build/core/permissionRequest.js.map +1 -1
  112. package/build/core/question.d.ts.map +1 -1
  113. package/build/core/question.js +7 -4
  114. package/build/core/question.js.map +1 -1
  115. package/build/plugins/resource/aad/aadAppClient.d.ts +2 -2
  116. package/build/plugins/resource/aad/aadAppClient.d.ts.map +1 -1
  117. package/build/plugins/resource/aad/aadAppClient.js +3 -4
  118. package/build/plugins/resource/aad/aadAppClient.js.map +1 -1
  119. package/build/plugins/resource/aad/errors.d.ts.map +1 -1
  120. package/build/plugins/resource/aad/errors.js +1 -2
  121. package/build/plugins/resource/aad/errors.js.map +1 -1
  122. package/build/plugins/resource/aad/interfaces/IAADDefinition.d.ts +4 -0
  123. package/build/plugins/resource/aad/interfaces/IAADDefinition.d.ts.map +1 -1
  124. package/build/plugins/resource/aad/plugin.d.ts.map +1 -1
  125. package/build/plugins/resource/aad/plugin.js +33 -46
  126. package/build/plugins/resource/aad/plugin.js.map +1 -1
  127. package/build/plugins/resource/aad/utils/common.d.ts +2 -0
  128. package/build/plugins/resource/aad/utils/common.d.ts.map +1 -1
  129. package/build/plugins/resource/aad/utils/common.js +14 -14
  130. package/build/plugins/resource/aad/utils/common.js.map +1 -1
  131. package/build/plugins/resource/aad/utils/configs.d.ts +1 -0
  132. package/build/plugins/resource/aad/utils/configs.d.ts.map +1 -1
  133. package/build/plugins/resource/aad/utils/configs.js +20 -38
  134. package/build/plugins/resource/aad/utils/configs.js.map +1 -1
  135. package/build/plugins/resource/apim/error.d.ts.map +1 -1
  136. package/build/plugins/resource/apim/error.js +1 -4
  137. package/build/plugins/resource/apim/error.js.map +1 -1
  138. package/build/plugins/resource/apim/managers/apimManager.d.ts.map +1 -1
  139. package/build/plugins/resource/apim/managers/apimManager.js +21 -58
  140. package/build/plugins/resource/apim/managers/apimManager.js.map +1 -1
  141. package/build/plugins/resource/apim/managers/questionManager.d.ts.map +1 -1
  142. package/build/plugins/resource/apim/managers/questionManager.js +0 -7
  143. package/build/plugins/resource/apim/managers/questionManager.js.map +1 -1
  144. package/build/plugins/resource/apim/questions/vscodeQuestion.d.ts.map +1 -1
  145. package/build/plugins/resource/apim/questions/vscodeQuestion.js +6 -13
  146. package/build/plugins/resource/apim/questions/vscodeQuestion.js.map +1 -1
  147. package/build/plugins/resource/appstudio/constants.d.ts +3 -2
  148. package/build/plugins/resource/appstudio/constants.d.ts.map +1 -1
  149. package/build/plugins/resource/appstudio/constants.js +12 -11
  150. package/build/plugins/resource/appstudio/constants.js.map +1 -1
  151. package/build/plugins/resource/appstudio/index.d.ts +2 -36
  152. package/build/plugins/resource/appstudio/index.d.ts.map +1 -1
  153. package/build/plugins/resource/appstudio/index.js +1 -31
  154. package/build/plugins/resource/appstudio/index.js.map +1 -1
  155. package/build/plugins/resource/appstudio/manifestTemplate.d.ts +1 -1
  156. package/build/plugins/resource/appstudio/manifestTemplate.d.ts.map +1 -1
  157. package/build/plugins/resource/appstudio/manifestTemplate.js +16 -8
  158. package/build/plugins/resource/appstudio/manifestTemplate.js.map +1 -1
  159. package/build/plugins/resource/appstudio/plugin.d.ts +1 -0
  160. package/build/plugins/resource/appstudio/plugin.d.ts.map +1 -1
  161. package/build/plugins/resource/appstudio/plugin.js +14 -1
  162. package/build/plugins/resource/appstudio/plugin.js.map +1 -1
  163. package/build/plugins/resource/appstudio/v3/index.d.ts +1 -3
  164. package/build/plugins/resource/appstudio/v3/index.d.ts.map +1 -1
  165. package/build/plugins/resource/appstudio/v3/index.js +28 -16
  166. package/build/plugins/resource/appstudio/v3/index.js.map +1 -1
  167. package/build/plugins/resource/bot/configs/provisionConfig.d.ts.map +1 -1
  168. package/build/plugins/resource/bot/configs/provisionConfig.js +0 -10
  169. package/build/plugins/resource/bot/configs/provisionConfig.js.map +1 -1
  170. package/build/plugins/resource/bot/languageStrategy.d.ts +1 -1
  171. package/build/plugins/resource/bot/languageStrategy.d.ts.map +1 -1
  172. package/build/plugins/resource/bot/languageStrategy.js +1 -1
  173. package/build/plugins/resource/bot/languageStrategy.js.map +1 -1
  174. package/build/plugins/resource/bot/plugin.d.ts.map +1 -1
  175. package/build/plugins/resource/bot/plugin.js +14 -131
  176. package/build/plugins/resource/bot/plugin.js.map +1 -1
  177. package/build/plugins/resource/frontend/configs.d.ts +1 -1
  178. package/build/plugins/resource/frontend/configs.d.ts.map +1 -1
  179. package/build/plugins/resource/frontend/configs.js +3 -9
  180. package/build/plugins/resource/frontend/configs.js.map +1 -1
  181. package/build/plugins/resource/frontend/constants.d.ts +2 -8
  182. package/build/plugins/resource/frontend/constants.d.ts.map +1 -1
  183. package/build/plugins/resource/frontend/constants.js +3 -11
  184. package/build/plugins/resource/frontend/constants.js.map +1 -1
  185. package/build/plugins/resource/frontend/dotnet/constants.d.ts +52 -0
  186. package/build/plugins/resource/frontend/dotnet/constants.d.ts.map +1 -0
  187. package/build/plugins/resource/frontend/dotnet/constants.js +69 -0
  188. package/build/plugins/resource/frontend/dotnet/constants.js.map +1 -0
  189. package/build/plugins/resource/frontend/{blazor → dotnet}/enum.d.ts +1 -1
  190. package/build/plugins/resource/frontend/{blazor → dotnet}/enum.d.ts.map +1 -1
  191. package/build/plugins/resource/frontend/dotnet/enum.js +39 -0
  192. package/build/plugins/resource/frontend/{blazor → dotnet}/enum.js.map +1 -1
  193. package/build/plugins/resource/frontend/{blazor → dotnet}/error-factory.d.ts +0 -0
  194. package/build/plugins/resource/frontend/{blazor → dotnet}/error-factory.d.ts.map +1 -1
  195. package/build/plugins/resource/frontend/{blazor → dotnet}/error-factory.js +3 -3
  196. package/build/plugins/resource/frontend/{blazor → dotnet}/error-factory.js.map +1 -1
  197. package/build/plugins/resource/frontend/{blazor → dotnet}/ops/deploy.d.ts +0 -0
  198. package/build/plugins/resource/frontend/{blazor → dotnet}/ops/deploy.d.ts.map +1 -1
  199. package/build/plugins/resource/frontend/{blazor → dotnet}/ops/deploy.js +3 -3
  200. package/build/plugins/resource/frontend/{blazor → dotnet}/ops/deploy.js.map +1 -1
  201. package/build/plugins/resource/frontend/dotnet/plugin.d.ts +34 -0
  202. package/build/plugins/resource/frontend/dotnet/plugin.d.ts.map +1 -0
  203. package/build/plugins/resource/frontend/dotnet/plugin.js +126 -0
  204. package/build/plugins/resource/frontend/dotnet/plugin.js.map +1 -0
  205. package/build/plugins/resource/frontend/dotnet/resources/errors.d.ts +35 -0
  206. package/build/plugins/resource/frontend/dotnet/resources/errors.d.ts.map +1 -0
  207. package/build/plugins/resource/frontend/{blazor → dotnet}/resources/errors.js +10 -22
  208. package/build/plugins/resource/frontend/dotnet/resources/errors.js.map +1 -0
  209. package/build/plugins/resource/frontend/{blazor → dotnet}/resources/messages.d.ts +0 -4
  210. package/build/plugins/resource/frontend/dotnet/resources/messages.d.ts.map +1 -0
  211. package/build/plugins/resource/frontend/{blazor → dotnet}/resources/messages.js +0 -4
  212. package/build/plugins/resource/frontend/dotnet/resources/messages.js.map +1 -0
  213. package/build/plugins/resource/frontend/dotnet/utils/azure-client.d.ts +6 -0
  214. package/build/plugins/resource/frontend/dotnet/utils/azure-client.d.ts.map +1 -0
  215. package/build/plugins/resource/frontend/dotnet/utils/azure-client.js +11 -0
  216. package/build/plugins/resource/frontend/dotnet/utils/azure-client.js.map +1 -0
  217. package/build/plugins/resource/frontend/index.d.ts +6 -3
  218. package/build/plugins/resource/frontend/index.d.ts.map +1 -1
  219. package/build/plugins/resource/frontend/index.js +27 -45
  220. package/build/plugins/resource/frontend/index.js.map +1 -1
  221. package/build/plugins/resource/frontend/interface.d.ts +13 -0
  222. package/build/plugins/resource/frontend/interface.d.ts.map +1 -0
  223. package/build/plugins/resource/frontend/interface.js +3 -0
  224. package/build/plugins/resource/frontend/interface.js.map +1 -0
  225. package/build/plugins/resource/frontend/ops/deploy.d.ts +3 -0
  226. package/build/plugins/resource/frontend/ops/deploy.d.ts.map +1 -1
  227. package/build/plugins/resource/frontend/ops/deploy.js +43 -0
  228. package/build/plugins/resource/frontend/ops/deploy.js.map +1 -1
  229. package/build/plugins/resource/frontend/ops/scaffold.d.ts.map +1 -1
  230. package/build/plugins/resource/frontend/ops/scaffold.js +1 -1
  231. package/build/plugins/resource/frontend/ops/scaffold.js.map +1 -1
  232. package/build/plugins/resource/frontend/plugin.d.ts +3 -3
  233. package/build/plugins/resource/frontend/plugin.d.ts.map +1 -1
  234. package/build/plugins/resource/frontend/plugin.js +13 -44
  235. package/build/plugins/resource/frontend/plugin.js.map +1 -1
  236. package/build/plugins/resource/frontend/resources/errors.d.ts +23 -20
  237. package/build/plugins/resource/frontend/resources/errors.d.ts.map +1 -1
  238. package/build/plugins/resource/frontend/resources/errors.js +31 -67
  239. package/build/plugins/resource/frontend/resources/errors.js.map +1 -1
  240. package/build/plugins/resource/frontend/resources/templateInfo.js +1 -1
  241. package/build/plugins/resource/frontend/resources/templateInfo.js.map +1 -1
  242. package/build/plugins/resource/frontend/utils/logger.d.ts +3 -1
  243. package/build/plugins/resource/frontend/utils/logger.d.ts.map +1 -1
  244. package/build/plugins/resource/frontend/utils/logger.js +9 -6
  245. package/build/plugins/resource/frontend/utils/logger.js.map +1 -1
  246. package/build/plugins/resource/frontend/utils/progress-helper.d.ts +0 -8
  247. package/build/plugins/resource/frontend/utils/progress-helper.d.ts.map +1 -1
  248. package/build/plugins/resource/frontend/utils/progress-helper.js +1 -19
  249. package/build/plugins/resource/frontend/utils/progress-helper.js.map +1 -1
  250. package/build/plugins/resource/frontend/v2/index.d.ts +1 -0
  251. package/build/plugins/resource/frontend/v2/index.d.ts.map +1 -1
  252. package/build/plugins/resource/frontend/v2/index.js +3 -0
  253. package/build/plugins/resource/frontend/v2/index.js.map +1 -1
  254. package/build/plugins/resource/frontend/v3/AzureStoragePlugin.d.ts +15 -0
  255. package/build/plugins/resource/frontend/v3/AzureStoragePlugin.d.ts.map +1 -0
  256. package/build/plugins/resource/frontend/v3/AzureStoragePlugin.js +149 -0
  257. package/build/plugins/resource/frontend/v3/AzureStoragePlugin.js.map +1 -0
  258. package/build/plugins/resource/frontend/v3/ReactTabScaffoldPlugin.d.ts +8 -0
  259. package/build/plugins/resource/frontend/v3/ReactTabScaffoldPlugin.d.ts.map +1 -0
  260. package/build/plugins/resource/frontend/v3/ReactTabScaffoldPlugin.js +95 -0
  261. package/build/plugins/resource/frontend/v3/ReactTabScaffoldPlugin.js.map +1 -0
  262. package/build/plugins/resource/frontend/v3/error.d.ts +23 -0
  263. package/build/plugins/resource/frontend/v3/error.d.ts.map +1 -0
  264. package/build/plugins/resource/frontend/v3/error.js +66 -0
  265. package/build/plugins/resource/frontend/v3/error.js.map +1 -0
  266. package/build/plugins/resource/frontend/v3/index.d.ts +3 -0
  267. package/build/plugins/resource/frontend/v3/index.d.ts.map +1 -0
  268. package/build/plugins/resource/frontend/v3/index.js +7 -0
  269. package/build/plugins/resource/frontend/v3/index.js.map +1 -0
  270. package/build/plugins/resource/function/index.d.ts +1 -1
  271. package/build/plugins/resource/function/index.d.ts.map +1 -1
  272. package/build/plugins/resource/function/index.js +8 -21
  273. package/build/plugins/resource/function/index.js.map +1 -1
  274. package/build/plugins/resource/function/ops/deploy.d.ts.map +1 -1
  275. package/build/plugins/resource/function/ops/deploy.js +8 -9
  276. package/build/plugins/resource/function/ops/deploy.js.map +1 -1
  277. package/build/plugins/resource/function/ops/scaffold.js +1 -1
  278. package/build/plugins/resource/function/ops/scaffold.js.map +1 -1
  279. package/build/plugins/resource/function/plugin.d.ts.map +1 -1
  280. package/build/plugins/resource/function/plugin.js +33 -134
  281. package/build/plugins/resource/function/plugin.js.map +1 -1
  282. package/build/plugins/resource/function/resources/message.d.ts +0 -1
  283. package/build/plugins/resource/function/resources/message.d.ts.map +1 -1
  284. package/build/plugins/resource/function/resources/message.js +0 -1
  285. package/build/plugins/resource/function/resources/message.js.map +1 -1
  286. package/build/plugins/resource/function/utils/depsChecker/funcHelper.d.ts +11 -0
  287. package/build/plugins/resource/function/utils/depsChecker/funcHelper.d.ts.map +1 -0
  288. package/build/plugins/resource/function/utils/depsChecker/funcHelper.js +48 -0
  289. package/build/plugins/resource/function/utils/depsChecker/funcHelper.js.map +1 -0
  290. package/build/plugins/resource/function/utils/depsChecker/funcPluginLogger.d.ts +6 -4
  291. package/build/plugins/resource/function/utils/depsChecker/funcPluginLogger.d.ts.map +1 -1
  292. package/build/plugins/resource/function/utils/depsChecker/funcPluginLogger.js +15 -8
  293. package/build/plugins/resource/function/utils/depsChecker/funcPluginLogger.js.map +1 -1
  294. package/build/plugins/resource/function/utils/depsChecker/funcPluginTelemetry.d.ts +4 -3
  295. package/build/plugins/resource/function/utils/depsChecker/funcPluginTelemetry.d.ts.map +1 -1
  296. package/build/plugins/resource/function/utils/depsChecker/funcPluginTelemetry.js +5 -4
  297. package/build/plugins/resource/function/utils/depsChecker/funcPluginTelemetry.js.map +1 -1
  298. package/build/plugins/resource/function/utils/telemetry-helper.d.ts +1 -1
  299. package/build/plugins/resource/function/utils/telemetry-helper.d.ts.map +1 -1
  300. package/build/plugins/resource/identity/index.d.ts +0 -1
  301. package/build/plugins/resource/identity/index.d.ts.map +1 -1
  302. package/build/plugins/resource/identity/index.js +2 -20
  303. package/build/plugins/resource/identity/index.js.map +1 -1
  304. package/build/plugins/resource/simpleauth/index.d.ts.map +1 -1
  305. package/build/plugins/resource/simpleauth/index.js +1 -6
  306. package/build/plugins/resource/simpleauth/index.js.map +1 -1
  307. package/build/plugins/resource/simpleauth/plugin.d.ts.map +1 -1
  308. package/build/plugins/resource/simpleauth/plugin.js +0 -3
  309. package/build/plugins/resource/simpleauth/plugin.js.map +1 -1
  310. package/build/plugins/resource/spfx/plugin.d.ts.map +1 -1
  311. package/build/plugins/resource/spfx/plugin.js +14 -9
  312. package/build/plugins/resource/spfx/plugin.js.map +1 -1
  313. package/build/plugins/resource/spfx/utils/constants.d.ts +5 -4
  314. package/build/plugins/resource/spfx/utils/constants.d.ts.map +1 -1
  315. package/build/plugins/resource/spfx/utils/constants.js +5 -4
  316. package/build/plugins/resource/spfx/utils/constants.js.map +1 -1
  317. package/build/plugins/resource/spfx/utils/progress-helper.d.ts.map +1 -1
  318. package/build/plugins/resource/spfx/utils/progress-helper.js +1 -1
  319. package/build/plugins/resource/spfx/utils/progress-helper.js.map +1 -1
  320. package/build/plugins/resource/sql/index.d.ts.map +1 -1
  321. package/build/plugins/resource/sql/index.js +1 -9
  322. package/build/plugins/resource/sql/index.js.map +1 -1
  323. package/build/plugins/resource/sql/plugin.d.ts.map +1 -1
  324. package/build/plugins/resource/sql/plugin.js +26 -58
  325. package/build/plugins/resource/sql/plugin.js.map +1 -1
  326. package/build/plugins/resource/utils4v2.d.ts +1 -1
  327. package/build/plugins/resource/utils4v2.d.ts.map +1 -1
  328. package/build/plugins/resource/utils4v2.js +3 -3
  329. package/build/plugins/resource/utils4v2.js.map +1 -1
  330. package/build/plugins/solution/fx-solution/arm.d.ts +9 -2
  331. package/build/plugins/solution/fx-solution/arm.d.ts.map +1 -1
  332. package/build/plugins/solution/fx-solution/arm.js +45 -11
  333. package/build/plugins/solution/fx-solution/arm.js.map +1 -1
  334. package/build/plugins/solution/fx-solution/commonQuestions.d.ts +4 -3
  335. package/build/plugins/solution/fx-solution/commonQuestions.d.ts.map +1 -1
  336. package/build/plugins/solution/fx-solution/commonQuestions.js +11 -10
  337. package/build/plugins/solution/fx-solution/commonQuestions.js.map +1 -1
  338. package/build/plugins/solution/fx-solution/constants.d.ts +1 -0
  339. package/build/plugins/solution/fx-solution/constants.d.ts.map +1 -1
  340. package/build/plugins/solution/fx-solution/constants.js +1 -0
  341. package/build/plugins/solution/fx-solution/constants.js.map +1 -1
  342. package/build/plugins/solution/fx-solution/debug/constants.d.ts +0 -5
  343. package/build/plugins/solution/fx-solution/debug/constants.d.ts.map +1 -1
  344. package/build/plugins/solution/fx-solution/debug/constants.js +1 -7
  345. package/build/plugins/solution/fx-solution/debug/constants.js.map +1 -1
  346. package/build/plugins/solution/fx-solution/debug/provisionLocal.d.ts.map +1 -1
  347. package/build/plugins/solution/fx-solution/debug/provisionLocal.js +2 -2
  348. package/build/plugins/solution/fx-solution/debug/provisionLocal.js.map +1 -1
  349. package/build/plugins/solution/fx-solution/debug/scaffolding.d.ts +2 -2
  350. package/build/plugins/solution/fx-solution/debug/scaffolding.d.ts.map +1 -1
  351. package/build/plugins/solution/fx-solution/debug/scaffolding.js +5 -3
  352. package/build/plugins/solution/fx-solution/debug/scaffolding.js.map +1 -1
  353. package/build/plugins/solution/fx-solution/question.d.ts +2 -2
  354. package/build/plugins/solution/fx-solution/question.d.ts.map +1 -1
  355. package/build/plugins/solution/fx-solution/question.js +32 -22
  356. package/build/plugins/solution/fx-solution/question.js.map +1 -1
  357. package/build/plugins/solution/fx-solution/solution.d.ts.map +1 -1
  358. package/build/plugins/solution/fx-solution/solution.js +15 -15
  359. package/build/plugins/solution/fx-solution/solution.js.map +1 -1
  360. package/build/plugins/solution/fx-solution/utils/ResourceGroupHelper.d.ts +31 -0
  361. package/build/plugins/solution/fx-solution/utils/ResourceGroupHelper.d.ts.map +1 -0
  362. package/build/plugins/solution/fx-solution/utils/ResourceGroupHelper.js +222 -0
  363. package/build/plugins/solution/fx-solution/utils/ResourceGroupHelper.js.map +1 -0
  364. package/build/plugins/solution/fx-solution/v2/adaptor.js +1 -1
  365. package/build/plugins/solution/fx-solution/v2/adaptor.js.map +1 -1
  366. package/build/plugins/solution/fx-solution/v2/createEnv.d.ts.map +1 -1
  367. package/build/plugins/solution/fx-solution/v2/createEnv.js +1 -3
  368. package/build/plugins/solution/fx-solution/v2/createEnv.js.map +1 -1
  369. package/build/plugins/solution/fx-solution/v2/executeUserTask.d.ts +2 -2
  370. package/build/plugins/solution/fx-solution/v2/executeUserTask.d.ts.map +1 -1
  371. package/build/plugins/solution/fx-solution/v2/executeUserTask.js +196 -122
  372. package/build/plugins/solution/fx-solution/v2/executeUserTask.js.map +1 -1
  373. package/build/plugins/solution/fx-solution/v2/generateResourceTemplate.d.ts +2 -2
  374. package/build/plugins/solution/fx-solution/v2/generateResourceTemplate.d.ts.map +1 -1
  375. package/build/plugins/solution/fx-solution/v2/generateResourceTemplate.js +9 -14
  376. package/build/plugins/solution/fx-solution/v2/generateResourceTemplate.js.map +1 -1
  377. package/build/plugins/solution/fx-solution/v2/getQuestions.d.ts.map +1 -1
  378. package/build/plugins/solution/fx-solution/v2/getQuestions.js +81 -96
  379. package/build/plugins/solution/fx-solution/v2/getQuestions.js.map +1 -1
  380. package/build/plugins/solution/fx-solution/v2/provision.d.ts.map +1 -1
  381. package/build/plugins/solution/fx-solution/v2/provision.js.map +1 -1
  382. package/build/plugins/solution/fx-solution/v2/scaffolding.d.ts.map +1 -1
  383. package/build/plugins/solution/fx-solution/v2/scaffolding.js +6 -0
  384. package/build/plugins/solution/fx-solution/v2/scaffolding.js.map +1 -1
  385. package/build/plugins/solution/fx-solution/v2/utils.js +1 -1
  386. package/build/plugins/solution/fx-solution/v2/utils.js.map +1 -1
  387. package/build/plugins/solution/fx-solution/v3/addModule.d.ts +2 -4
  388. package/build/plugins/solution/fx-solution/v3/addModule.d.ts.map +1 -1
  389. package/build/plugins/solution/fx-solution/v3/addModule.js +29 -6
  390. package/build/plugins/solution/fx-solution/v3/addModule.js.map +1 -1
  391. package/build/plugins/solution/fx-solution/v3/addResource.d.ts +6 -14
  392. package/build/plugins/solution/fx-solution/v3/addResource.d.ts.map +1 -1
  393. package/build/plugins/solution/fx-solution/v3/addResource.js +23 -51
  394. package/build/plugins/solution/fx-solution/v3/addResource.js.map +1 -1
  395. package/build/plugins/solution/fx-solution/v3/constants.d.ts +2 -0
  396. package/build/plugins/solution/fx-solution/v3/constants.d.ts.map +1 -1
  397. package/build/plugins/solution/fx-solution/v3/constants.js +2 -0
  398. package/build/plugins/solution/fx-solution/v3/constants.js.map +1 -1
  399. package/build/plugins/solution/fx-solution/v3/deploy.d.ts +1 -3
  400. package/build/plugins/solution/fx-solution/v3/deploy.d.ts.map +1 -1
  401. package/build/plugins/solution/fx-solution/v3/deploy.js.map +1 -1
  402. package/build/plugins/solution/fx-solution/v3/init.d.ts.map +1 -1
  403. package/build/plugins/solution/fx-solution/v3/init.js +9 -0
  404. package/build/plugins/solution/fx-solution/v3/init.js.map +1 -1
  405. package/build/plugins/solution/fx-solution/v3/provision.d.ts +8 -1
  406. package/build/plugins/solution/fx-solution/v3/provision.d.ts.map +1 -1
  407. package/build/plugins/solution/fx-solution/v3/provision.js +219 -16
  408. package/build/plugins/solution/fx-solution/v3/provision.js.map +1 -1
  409. package/build/plugins/solution/fx-solution/v3/provisionLocal.d.ts.map +1 -1
  410. package/build/plugins/solution/fx-solution/v3/provisionLocal.js +96 -1
  411. package/build/plugins/solution/fx-solution/v3/provisionLocal.js.map +1 -1
  412. package/build/plugins/solution/fx-solution/v3/scaffold.d.ts +8 -13
  413. package/build/plugins/solution/fx-solution/v3/scaffold.d.ts.map +1 -1
  414. package/build/plugins/solution/fx-solution/v3/scaffold.js +30 -52
  415. package/build/plugins/solution/fx-solution/v3/scaffold.js.map +1 -1
  416. package/build/plugins/solution/spfx-solution/addModule.d.ts +2 -4
  417. package/build/plugins/solution/spfx-solution/addModule.d.ts.map +1 -1
  418. package/build/plugins/solution/spfx-solution/addModule.js +1 -1
  419. package/build/plugins/solution/spfx-solution/addModule.js.map +1 -1
  420. package/build/plugins/solution/spfx-solution/scaffold.d.ts +2 -10
  421. package/build/plugins/solution/spfx-solution/scaffold.d.ts.map +1 -1
  422. package/build/plugins/solution/spfx-solution/scaffold.js +3 -39
  423. package/build/plugins/solution/spfx-solution/scaffold.js.map +1 -1
  424. package/build/plugins/solution/spfx-solution/solution.d.ts +12 -17
  425. package/build/plugins/solution/spfx-solution/solution.d.ts.map +1 -1
  426. package/build/plugins/solution/spfx-solution/solution.js +7 -7
  427. package/build/plugins/solution/spfx-solution/solution.js.map +1 -1
  428. package/package.json +6 -7
  429. package/resource/strings.json +17 -7
  430. package/templates/plugins/resource/apim/bicep/apimConfiguration.bicep +1 -0
  431. package/templates/plugins/resource/apim/bicep/apimProvision.bicep +7 -5
  432. package/templates/plugins/resource/apim/bicep/config.template.bicep +1 -0
  433. package/templates/plugins/resource/bot/bicep/botConfiguration.template.bicep +12 -12
  434. package/templates/plugins/resource/bot/bicep/botProvision.template.bicep +15 -11
  435. package/templates/plugins/resource/bot/bicep/config.template.bicep +2 -0
  436. package/templates/plugins/resource/frontend/bicep/frontendHostingProvision.bicep +4 -2
  437. package/templates/plugins/resource/frontend/bicep/provision.template.bicep +1 -0
  438. package/templates/plugins/resource/function/bicep/config.template.bicep +2 -0
  439. package/templates/plugins/resource/function/bicep/functionConfiguration.template.bicep +15 -15
  440. package/templates/plugins/resource/function/bicep/functionProvision.template.bicep +17 -14
  441. package/templates/plugins/resource/identity/bicep/identityProvision.template.bicep +2 -1
  442. package/templates/plugins/resource/keyvault/bicep/keyVaultProvision.template.bicep +9 -7
  443. package/templates/plugins/resource/simpleauth/bicep/config.template.bicep +2 -0
  444. package/templates/plugins/resource/simpleauth/bicep/simpleAuthConfiguration.template.bicep +7 -7
  445. package/templates/plugins/resource/simpleauth/bicep/simpleAuthProvision.template.bicep +9 -6
  446. package/templates/plugins/resource/sql/bicep/sqlProvision.template.bicep +8 -5
  447. package/templates/plugins/resource/webapp/bicep/config.template.bicep +10 -0
  448. package/templates/plugins/resource/webapp/bicep/provision.template.bicep +16 -0
  449. package/templates/plugins/resource/webapp/bicep/webappConfiguration.template.bicep +74 -0
  450. package/templates/plugins/resource/webapp/bicep/webappProvision.template.bicep +48 -0
  451. package/build/common/templates.d.ts.map +0 -1
  452. package/build/common/templates.js.map +0 -1
  453. package/build/common/templatesActions.d.ts.map +0 -1
  454. package/build/common/templatesActions.js.map +0 -1
  455. package/build/common/templatesUtils.d.ts.map +0 -1
  456. package/build/common/templatesUtils.js.map +0 -1
  457. package/build/core/middleware/projectUpgrader.d.ts +0 -6
  458. package/build/core/middleware/projectUpgrader.d.ts.map +0 -1
  459. package/build/core/middleware/projectUpgrader.js +0 -224
  460. package/build/core/middleware/projectUpgrader.js.map +0 -1
  461. package/build/plugins/resource/frontend/blazor/constants.d.ts +0 -75
  462. package/build/plugins/resource/frontend/blazor/constants.d.ts.map +0 -1
  463. package/build/plugins/resource/frontend/blazor/constants.js +0 -98
  464. package/build/plugins/resource/frontend/blazor/constants.js.map +0 -1
  465. package/build/plugins/resource/frontend/blazor/enum.js +0 -39
  466. package/build/plugins/resource/frontend/blazor/ops/provision.d.ts +0 -8
  467. package/build/plugins/resource/frontend/blazor/ops/provision.d.ts.map +0 -1
  468. package/build/plugins/resource/frontend/blazor/ops/provision.js +0 -42
  469. package/build/plugins/resource/frontend/blazor/ops/provision.js.map +0 -1
  470. package/build/plugins/resource/frontend/blazor/plugin.d.ts +0 -35
  471. package/build/plugins/resource/frontend/blazor/plugin.d.ts.map +0 -1
  472. package/build/plugins/resource/frontend/blazor/plugin.js +0 -190
  473. package/build/plugins/resource/frontend/blazor/plugin.js.map +0 -1
  474. package/build/plugins/resource/frontend/blazor/resources/errors.d.ts +0 -41
  475. package/build/plugins/resource/frontend/blazor/resources/errors.d.ts.map +0 -1
  476. package/build/plugins/resource/frontend/blazor/resources/errors.js.map +0 -1
  477. package/build/plugins/resource/frontend/blazor/resources/messages.d.ts.map +0 -1
  478. package/build/plugins/resource/frontend/blazor/resources/messages.js.map +0 -1
  479. package/build/plugins/resource/frontend/blazor/utils/azure-client.d.ts +0 -21
  480. package/build/plugins/resource/frontend/blazor/utils/azure-client.d.ts.map +0 -1
  481. package/build/plugins/resource/frontend/blazor/utils/azure-client.js +0 -47
  482. package/build/plugins/resource/frontend/blazor/utils/azure-client.js.map +0 -1
  483. package/build/plugins/resource/frontend/utils/azure-client.d.ts +0 -12
  484. package/build/plugins/resource/frontend/utils/azure-client.d.ts.map +0 -1
  485. package/build/plugins/resource/frontend/utils/azure-client.js +0 -29
  486. package/build/plugins/resource/frontend/utils/azure-client.js.map +0 -1
  487. package/build/plugins/resource/function/utils/depsChecker/backendExtensionsInstall.d.ts +0 -9
  488. package/build/plugins/resource/function/utils/depsChecker/backendExtensionsInstall.d.ts.map +0 -1
  489. package/build/plugins/resource/function/utils/depsChecker/backendExtensionsInstall.js +0 -55
  490. package/build/plugins/resource/function/utils/depsChecker/backendExtensionsInstall.js.map +0 -1
  491. package/build/plugins/resource/function/utils/depsChecker/checker.d.ts +0 -54
  492. package/build/plugins/resource/function/utils/depsChecker/checker.d.ts.map +0 -1
  493. package/build/plugins/resource/function/utils/depsChecker/checker.js +0 -104
  494. package/build/plugins/resource/function/utils/depsChecker/checker.js.map +0 -1
  495. package/build/plugins/resource/function/utils/depsChecker/common.d.ts +0 -84
  496. package/build/plugins/resource/function/utils/depsChecker/common.d.ts.map +0 -1
  497. package/build/plugins/resource/function/utils/depsChecker/common.js +0 -136
  498. package/build/plugins/resource/function/utils/depsChecker/common.js.map +0 -1
  499. package/build/plugins/resource/function/utils/depsChecker/cpUtils.d.ts +0 -22
  500. package/build/plugins/resource/function/utils/depsChecker/cpUtils.d.ts.map +0 -1
  501. package/build/plugins/resource/function/utils/depsChecker/cpUtils.js +0 -105
  502. package/build/plugins/resource/function/utils/depsChecker/cpUtils.js.map +0 -1
  503. package/build/plugins/resource/function/utils/depsChecker/dotnetChecker.d.ts +0 -53
  504. package/build/plugins/resource/function/utils/depsChecker/dotnetChecker.d.ts.map +0 -1
  505. package/build/plugins/resource/function/utils/depsChecker/dotnetChecker.js +0 -387
  506. package/build/plugins/resource/function/utils/depsChecker/dotnetChecker.js.map +0 -1
  507. package/build/plugins/resource/function/utils/depsChecker/errors.d.ts +0 -14
  508. package/build/plugins/resource/function/utils/depsChecker/errors.d.ts.map +0 -1
  509. package/build/plugins/resource/function/utils/depsChecker/errors.js +0 -41
  510. package/build/plugins/resource/function/utils/depsChecker/errors.js.map +0 -1
  511. package/build/plugins/resource/function/utils/depsChecker/funcPluginAdapter.d.ts +0 -26
  512. package/build/plugins/resource/function/utils/depsChecker/funcPluginAdapter.d.ts.map +0 -1
  513. package/build/plugins/resource/function/utils/depsChecker/funcPluginAdapter.js +0 -111
  514. package/build/plugins/resource/function/utils/depsChecker/funcPluginAdapter.js.map +0 -1
  515. package/build/plugins/solution/fx-solution/debug/util/certificate.d.ts.map +0 -1
  516. package/build/plugins/solution/fx-solution/debug/util/certificate.js.map +0 -1
  517. package/build/plugins/solution/fx-solution/debug/util/process.d.ts.map +0 -1
  518. package/build/plugins/solution/fx-solution/debug/util/process.js.map +0 -1
  519. package/resource/plugins/resource/function/dotnet-install.ps1 +0 -1095
  520. package/resource/plugins/resource/function/dotnet-install.sh +0 -1222
@@ -1,1095 +0,0 @@
1
- #
2
- # Copyright (c) .NET Foundation and contributors. All rights reserved.
3
- # Licensed under the MIT license. See LICENSE file in the project root for full license information.
4
- #
5
-
6
- <#
7
- .SYNOPSIS
8
- Installs dotnet cli
9
- .DESCRIPTION
10
- Installs dotnet cli. If dotnet installation already exists in the given directory
11
- it will update it only if the requested version differs from the one already installed.
12
- .PARAMETER Channel
13
- Default: LTS
14
- Download from the Channel specified. Possible values:
15
- - Current - most current release
16
- - LTS - most current supported release
17
- - 2-part version in a format A.B - represents a specific release
18
- examples: 2.0, 1.0
19
- - Branch name
20
- examples: release/2.0.0, Master
21
- Note: The version parameter overrides the channel parameter.
22
- .PARAMETER Version
23
- Default: latest
24
- Represents a build version on specific channel. Possible values:
25
- - latest - most latest build on specific channel
26
- - 3-part version in a format A.B.C - represents specific version of build
27
- examples: 2.0.0-preview2-006120, 1.1.0
28
- .PARAMETER InstallDir
29
- Default: %LocalAppData%\Microsoft\dotnet
30
- Path to where to install dotnet. Note that binaries will be placed directly in a given directory.
31
- .PARAMETER Architecture
32
- Default: <auto> - this value represents currently running OS architecture
33
- Architecture of dotnet binaries to be installed.
34
- Possible values are: <auto>, amd64, x64, x86, arm64, arm
35
- .PARAMETER SharedRuntime
36
- This parameter is obsolete and may be removed in a future version of this script.
37
- The recommended alternative is '-Runtime dotnet'.
38
- Installs just the shared runtime bits, not the entire SDK.
39
- .PARAMETER Runtime
40
- Installs just a shared runtime, not the entire SDK.
41
- Possible values:
42
- - dotnet - the Microsoft.NETCore.App shared runtime
43
- - aspnetcore - the Microsoft.AspNetCore.App shared runtime
44
- - windowsdesktop - the Microsoft.WindowsDesktop.App shared runtime
45
- .PARAMETER DryRun
46
- If set it will not perform installation but instead display what command line to use to consistently install
47
- currently requested version of dotnet cli. In example if you specify version 'latest' it will display a link
48
- with specific version so that this command can be used deterministicly in a build script.
49
- It also displays binaries location if you prefer to install or download it yourself.
50
- .PARAMETER NoPath
51
- By default this script will set environment variable PATH for the current process to the binaries folder inside installation folder.
52
- If set it will display binaries location but not set any environment variable.
53
- .PARAMETER Verbose
54
- Displays diagnostics information.
55
- .PARAMETER AzureFeed
56
- Default: https://dotnetcli.azureedge.net/dotnet
57
- This parameter typically is not changed by the user.
58
- It allows changing the URL for the Azure feed used by this installer.
59
- .PARAMETER UncachedFeed
60
- This parameter typically is not changed by the user.
61
- It allows changing the URL for the Uncached feed used by this installer.
62
- .PARAMETER FeedCredential
63
- Used as a query string to append to the Azure feed.
64
- It allows changing the URL to use non-public blob storage accounts.
65
- .PARAMETER ProxyAddress
66
- If set, the installer will use the proxy when making web requests
67
- .PARAMETER ProxyUseDefaultCredentials
68
- Default: false
69
- Use default credentials, when using proxy address.
70
- .PARAMETER ProxyBypassList
71
- If set with ProxyAddress, will provide the list of comma separated urls that will bypass the proxy
72
- .PARAMETER SkipNonVersionedFiles
73
- Default: false
74
- Skips installing non-versioned files if they already exist, such as dotnet.exe.
75
- .PARAMETER NoCdn
76
- Disable downloading from the Azure CDN, and use the uncached feed directly.
77
- .PARAMETER JSonFile
78
- Determines the SDK version from a user specified global.json file
79
- Note: global.json must have a value for 'SDK:Version'
80
- #>
81
- [cmdletbinding()]
82
- param(
83
- [string]$Channel="LTS",
84
- [string]$Version="Latest",
85
- [string]$JSonFile,
86
- [string]$InstallDir="<auto>",
87
- [string]$Architecture="<auto>",
88
- [ValidateSet("dotnet", "aspnetcore", "windowsdesktop", IgnoreCase = $false)]
89
- [string]$Runtime,
90
- [Obsolete("This parameter may be removed in a future version of this script. The recommended alternative is '-Runtime dotnet'.")]
91
- [switch]$SharedRuntime,
92
- [switch]$DryRun,
93
- [switch]$NoPath,
94
- [string]$AzureFeed="https://dotnetcli.azureedge.net/dotnet",
95
- [string]$UncachedFeed="https://dotnetcli.blob.core.windows.net/dotnet",
96
- [string]$FeedCredential,
97
- [string]$ProxyAddress,
98
- [switch]$ProxyUseDefaultCredentials,
99
- [string[]]$ProxyBypassList=@(),
100
- [switch]$SkipNonVersionedFiles,
101
- [switch]$NoCdn
102
- )
103
-
104
- Set-StrictMode -Version Latest
105
- $ErrorActionPreference="Stop"
106
- $ProgressPreference="SilentlyContinue"
107
-
108
- if ($NoCdn) {
109
- $AzureFeed = $UncachedFeed
110
- }
111
-
112
- $BinFolderRelativePath=""
113
-
114
- if ($SharedRuntime -and (-not $Runtime)) {
115
- $Runtime = "dotnet"
116
- }
117
-
118
- # example path with regex: shared/1.0.0-beta-12345/somepath
119
- $VersionRegEx="/\d+\.\d+[^/]+/"
120
- $OverrideNonVersionedFiles = !$SkipNonVersionedFiles
121
-
122
- function Say($str) {
123
- try {
124
- Write-Host "dotnet-install: $str"
125
- }
126
- catch {
127
- # Some platforms cannot utilize Write-Host (Azure Functions, for instance). Fall back to Write-Output
128
- Write-Output "dotnet-install: $str"
129
- }
130
- }
131
-
132
- function Say-Warning($str) {
133
- try {
134
- Write-Warning "dotnet-install: $str"
135
- }
136
- catch {
137
- # Some platforms cannot utilize Write-Warning (Azure Functions, for instance). Fall back to Write-Output
138
- Write-Output "dotnet-install: Warning: $str"
139
- }
140
- }
141
-
142
- # Writes a line with error style settings.
143
- # Use this function to show a human-readable comment along with an exception.
144
- function Say-Error($str) {
145
- try {
146
- # Write-Error is quite oververbose for the purpose of the function, let's write one line with error style settings.
147
- $Host.UI.WriteErrorLine("dotnet-install: $str")
148
- }
149
- catch {
150
- Write-Output "dotnet-install: Error: $str"
151
- }
152
- }
153
-
154
- function Say-Verbose($str) {
155
- try {
156
- Write-Verbose "dotnet-install: $str"
157
- }
158
- catch {
159
- # Some platforms cannot utilize Write-Verbose (Azure Functions, for instance). Fall back to Write-Output
160
- Write-Output "dotnet-install: $str"
161
- }
162
- }
163
-
164
- function Say-Invocation($Invocation) {
165
- $command = $Invocation.MyCommand;
166
- $args = (($Invocation.BoundParameters.Keys | foreach { "-$_ `"$($Invocation.BoundParameters[$_])`"" }) -join " ")
167
- Say-Verbose "$command $args"
168
- }
169
-
170
- function Invoke-With-Retry([ScriptBlock]$ScriptBlock, [int]$MaxAttempts = 3, [int]$SecondsBetweenAttempts = 1) {
171
- $Attempts = 0
172
-
173
- while ($true) {
174
- try {
175
- return & $ScriptBlock
176
- }
177
- catch {
178
- $Attempts++
179
- if ($Attempts -lt $MaxAttempts) {
180
- Start-Sleep $SecondsBetweenAttempts
181
- }
182
- else {
183
- throw
184
- }
185
- }
186
- }
187
- }
188
-
189
- function Get-Machine-Architecture() {
190
- Say-Invocation $MyInvocation
191
-
192
- # On PS x86, PROCESSOR_ARCHITECTURE reports x86 even on x64 systems.
193
- # To get the correct architecture, we need to use PROCESSOR_ARCHITEW6432.
194
- # PS x64 doesn't define this, so we fall back to PROCESSOR_ARCHITECTURE.
195
- # Possible values: amd64, x64, x86, arm64, arm
196
-
197
- if( $ENV:PROCESSOR_ARCHITEW6432 -ne $null )
198
- {
199
- return $ENV:PROCESSOR_ARCHITEW6432
200
- }
201
-
202
- return $ENV:PROCESSOR_ARCHITECTURE
203
- }
204
-
205
- function Get-CLIArchitecture-From-Architecture([string]$Architecture) {
206
- Say-Invocation $MyInvocation
207
-
208
- switch ($Architecture.ToLower()) {
209
- { $_ -eq "<auto>" } { return Get-CLIArchitecture-From-Architecture $(Get-Machine-Architecture) }
210
- { ($_ -eq "amd64") -or ($_ -eq "x64") } { return "x64" }
211
- { $_ -eq "x86" } { return "x86" }
212
- { $_ -eq "arm" } { return "arm" }
213
- { $_ -eq "arm64" } { return "arm64" }
214
- default { throw "Architecture '$Architecture' not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" }
215
- }
216
- }
217
-
218
- # The version text returned from the feeds is a 1-line or 2-line string:
219
- # For the SDK and the dotnet runtime (2 lines):
220
- # Line 1: # commit_hash
221
- # Line 2: # 4-part version
222
- # For the aspnetcore runtime (1 line):
223
- # Line 1: # 4-part version
224
- function Get-Version-Info-From-Version-Text([string]$VersionText) {
225
- Say-Invocation $MyInvocation
226
-
227
- $Data = -split $VersionText
228
-
229
- $VersionInfo = @{
230
- CommitHash = $(if ($Data.Count -gt 1) { $Data[0] })
231
- Version = $Data[-1] # last line is always the version number.
232
- }
233
- return $VersionInfo
234
- }
235
-
236
- function Load-Assembly([string] $Assembly) {
237
- try {
238
- Add-Type -Assembly $Assembly | Out-Null
239
- }
240
- catch {
241
- # On Nano Server, Powershell Core Edition is used. Add-Type is unable to resolve base class assemblies because they are not GAC'd.
242
- # Loading the base class assemblies is not unnecessary as the types will automatically get resolved.
243
- }
244
- }
245
-
246
- function GetHTTPResponse([Uri] $Uri)
247
- {
248
- Invoke-With-Retry(
249
- {
250
-
251
- $HttpClient = $null
252
-
253
- try {
254
- # HttpClient is used vs Invoke-WebRequest in order to support Nano Server which doesn't support the Invoke-WebRequest cmdlet.
255
- Load-Assembly -Assembly System.Net.Http
256
-
257
- if(-not $ProxyAddress) {
258
- try {
259
- # Despite no proxy being explicitly specified, we may still be behind a default proxy
260
- $DefaultProxy = [System.Net.WebRequest]::DefaultWebProxy;
261
- if($DefaultProxy -and (-not $DefaultProxy.IsBypassed($Uri))) {
262
- $ProxyAddress = $DefaultProxy.GetProxy($Uri).OriginalString
263
- $ProxyUseDefaultCredentials = $true
264
- }
265
- } catch {
266
- # Eat the exception and move forward as the above code is an attempt
267
- # at resolving the DefaultProxy that may not have been a problem.
268
- $ProxyAddress = $null
269
- Say-Verbose("Exception ignored: $_.Exception.Message - moving forward...")
270
- }
271
- }
272
-
273
- if($ProxyAddress) {
274
- $HttpClientHandler = New-Object System.Net.Http.HttpClientHandler
275
- $HttpClientHandler.Proxy = New-Object System.Net.WebProxy -Property @{
276
- Address=$ProxyAddress;
277
- UseDefaultCredentials=$ProxyUseDefaultCredentials;
278
- BypassList = $ProxyBypassList;
279
- }
280
- $HttpClient = New-Object System.Net.Http.HttpClient -ArgumentList $HttpClientHandler
281
- }
282
- else {
283
-
284
- $HttpClient = New-Object System.Net.Http.HttpClient
285
- }
286
- # Default timeout for HttpClient is 100s. For a 50 MB download this assumes 500 KB/s average, any less will time out
287
- # 20 minutes allows it to work over much slower connections.
288
- $HttpClient.Timeout = New-TimeSpan -Minutes 20
289
- $Task = $HttpClient.GetAsync("${Uri}${FeedCredential}").ConfigureAwait("false");
290
- $Response = $Task.GetAwaiter().GetResult();
291
-
292
- if (($null -eq $Response) -or (-not ($Response.IsSuccessStatusCode))) {
293
- # The feed credential is potentially sensitive info. Do not log FeedCredential to console output.
294
- $DownloadException = [System.Exception] "Unable to download $Uri."
295
-
296
- if ($null -ne $Response) {
297
- $DownloadException.Data["StatusCode"] = [int] $Response.StatusCode
298
- $DownloadException.Data["ErrorMessage"] = "Unable to download $Uri. Returned HTTP status code: " + $DownloadException.Data["StatusCode"]
299
- }
300
-
301
- throw $DownloadException
302
- }
303
-
304
- return $Response
305
- }
306
- catch [System.Net.Http.HttpRequestException] {
307
- $DownloadException = [System.Exception] "Unable to download $Uri."
308
-
309
- # Pick up the exception message and inner exceptions' messages if they exist
310
- $CurrentException = $PSItem.Exception
311
- $ErrorMsg = $CurrentException.Message + "`r`n"
312
- while ($CurrentException.InnerException) {
313
- $CurrentException = $CurrentException.InnerException
314
- $ErrorMsg += $CurrentException.Message + "`r`n"
315
- }
316
-
317
- # Check if there is an issue concerning TLS.
318
- if ($ErrorMsg -like "*SSL/TLS*") {
319
- $ErrorMsg += "Ensure that TLS 1.2 or higher is enabled to use this script.`r`n"
320
- }
321
-
322
- $DownloadException.Data["ErrorMessage"] = $ErrorMsg
323
- throw $DownloadException
324
- }
325
- finally {
326
- if ($HttpClient -ne $null) {
327
- $HttpClient.Dispose()
328
- }
329
- }
330
- })
331
- }
332
-
333
- function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel) {
334
- Say-Invocation $MyInvocation
335
-
336
- $VersionFileUrl = $null
337
- if ($Runtime -eq "dotnet") {
338
- $VersionFileUrl = "$UncachedFeed/Runtime/$Channel/latest.version"
339
- }
340
- elseif ($Runtime -eq "aspnetcore") {
341
- $VersionFileUrl = "$UncachedFeed/aspnetcore/Runtime/$Channel/latest.version"
342
- }
343
- elseif ($Runtime -eq "windowsdesktop") {
344
- $VersionFileUrl = "$UncachedFeed/WindowsDesktop/$Channel/latest.version"
345
- }
346
- elseif (-not $Runtime) {
347
- $VersionFileUrl = "$UncachedFeed/Sdk/$Channel/latest.version"
348
- }
349
- else {
350
- throw "Invalid value for `$Runtime"
351
- }
352
- try {
353
- $Response = GetHTTPResponse -Uri $VersionFileUrl
354
- }
355
- catch {
356
- Say-Error "Could not resolve version information."
357
- throw
358
- }
359
- $StringContent = $Response.Content.ReadAsStringAsync().Result
360
-
361
- switch ($Response.Content.Headers.ContentType) {
362
- { ($_ -eq "application/octet-stream") } { $VersionText = $StringContent }
363
- { ($_ -eq "text/plain") } { $VersionText = $StringContent }
364
- { ($_ -eq "text/plain; charset=UTF-8") } { $VersionText = $StringContent }
365
- default { throw "``$Response.Content.Headers.ContentType`` is an unknown .version file content type." }
366
- }
367
-
368
- $VersionInfo = Get-Version-Info-From-Version-Text $VersionText
369
-
370
- return $VersionInfo
371
- }
372
-
373
- function Parse-Jsonfile-For-Version([string]$JSonFile) {
374
- Say-Invocation $MyInvocation
375
-
376
- If (-Not (Test-Path $JSonFile)) {
377
- throw "Unable to find '$JSonFile'"
378
- }
379
- try {
380
- $JSonContent = Get-Content($JSonFile) -Raw | ConvertFrom-Json | Select-Object -expand "sdk" -ErrorAction SilentlyContinue
381
- }
382
- catch {
383
- Say-Error "Json file unreadable: '$JSonFile'"
384
- throw
385
- }
386
- if ($JSonContent) {
387
- try {
388
- $JSonContent.PSObject.Properties | ForEach-Object {
389
- $PropertyName = $_.Name
390
- if ($PropertyName -eq "version") {
391
- $Version = $_.Value
392
- Say-Verbose "Version = $Version"
393
- }
394
- }
395
- }
396
- catch {
397
- Say-Error "Unable to parse the SDK node in '$JSonFile'"
398
- throw
399
- }
400
- }
401
- else {
402
- throw "Unable to find the SDK node in '$JSonFile'"
403
- }
404
- If ($Version -eq $null) {
405
- throw "Unable to find the SDK:version node in '$JSonFile'"
406
- }
407
- return $Version
408
- }
409
-
410
- function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$Channel, [string]$Version, [string]$JSonFile) {
411
- Say-Invocation $MyInvocation
412
-
413
- if (-not $JSonFile) {
414
- if ($Version.ToLower() -eq "latest") {
415
- $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel
416
- return $LatestVersionInfo.Version
417
- }
418
- else {
419
- return $Version
420
- }
421
- }
422
- else {
423
- return Parse-Jsonfile-For-Version $JSonFile
424
- }
425
- }
426
-
427
- function Get-Download-Link([string]$AzureFeed, [string]$SpecificVersion, [string]$CLIArchitecture) {
428
- Say-Invocation $MyInvocation
429
-
430
- # If anything fails in this lookup it will default to $SpecificVersion
431
- $SpecificProductVersion = Get-Product-Version -AzureFeed $AzureFeed -SpecificVersion $SpecificVersion
432
-
433
- if ($Runtime -eq "dotnet") {
434
- $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-runtime-$SpecificProductVersion-win-$CLIArchitecture.zip"
435
- }
436
- elseif ($Runtime -eq "aspnetcore") {
437
- $PayloadURL = "$AzureFeed/aspnetcore/Runtime/$SpecificVersion/aspnetcore-runtime-$SpecificProductVersion-win-$CLIArchitecture.zip"
438
- }
439
- elseif ($Runtime -eq "windowsdesktop") {
440
- # The windows desktop runtime is part of the core runtime layout prior to 5.0
441
- $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/windowsdesktop-runtime-$SpecificProductVersion-win-$CLIArchitecture.zip"
442
- if ($SpecificVersion -match '^(\d+)\.(.*)$')
443
- {
444
- $majorVersion = [int]$Matches[1]
445
- if ($majorVersion -ge 5)
446
- {
447
- $PayloadURL = "$AzureFeed/WindowsDesktop/$SpecificVersion/windowsdesktop-runtime-$SpecificProductVersion-win-$CLIArchitecture.zip"
448
- }
449
- }
450
- }
451
- elseif (-not $Runtime) {
452
- $PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-sdk-$SpecificProductVersion-win-$CLIArchitecture.zip"
453
- }
454
- else {
455
- throw "Invalid value for `$Runtime"
456
- }
457
-
458
- Say-Verbose "Constructed primary named payload URL: $PayloadURL"
459
-
460
- return $PayloadURL, $SpecificProductVersion
461
- }
462
-
463
- function Get-LegacyDownload-Link([string]$AzureFeed, [string]$SpecificVersion, [string]$CLIArchitecture) {
464
- Say-Invocation $MyInvocation
465
-
466
- if (-not $Runtime) {
467
- $PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-dev-win-$CLIArchitecture.$SpecificVersion.zip"
468
- }
469
- elseif ($Runtime -eq "dotnet") {
470
- $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-win-$CLIArchitecture.$SpecificVersion.zip"
471
- }
472
- else {
473
- return $null
474
- }
475
-
476
- Say-Verbose "Constructed legacy named payload URL: $PayloadURL"
477
-
478
- return $PayloadURL
479
- }
480
-
481
- function Get-Product-Version([string]$AzureFeed, [string]$SpecificVersion) {
482
- Say-Invocation $MyInvocation
483
-
484
- if ($Runtime -eq "dotnet") {
485
- $ProductVersionTxtURL = "$AzureFeed/Runtime/$SpecificVersion/productVersion.txt"
486
- }
487
- elseif ($Runtime -eq "aspnetcore") {
488
- $ProductVersionTxtURL = "$AzureFeed/aspnetcore/Runtime/$SpecificVersion/productVersion.txt"
489
- }
490
- elseif ($Runtime -eq "windowsdesktop") {
491
- # The windows desktop runtime is part of the core runtime layout prior to 5.0
492
- $ProductVersionTxtURL = "$AzureFeed/Runtime/$SpecificVersion/productVersion.txt"
493
- if ($SpecificVersion -match '^(\d+)\.(.*)')
494
- {
495
- $majorVersion = [int]$Matches[1]
496
- if ($majorVersion -ge 5)
497
- {
498
- $ProductVersionTxtURL = "$AzureFeed/WindowsDesktop/$SpecificVersion/productVersion.txt"
499
- }
500
- }
501
- }
502
- elseif (-not $Runtime) {
503
- $ProductVersionTxtURL = "$AzureFeed/Sdk/$SpecificVersion/productVersion.txt"
504
- }
505
- else {
506
- throw "Invalid value '$Runtime' specified for `$Runtime"
507
- }
508
-
509
- Say-Verbose "Checking for existence of $ProductVersionTxtURL"
510
-
511
- try {
512
- $productVersionResponse = GetHTTPResponse($productVersionTxtUrl)
513
-
514
- if ($productVersionResponse.StatusCode -eq 200) {
515
- $productVersion = $productVersionResponse.Content.ReadAsStringAsync().Result.Trim()
516
- if ($productVersion -ne $SpecificVersion)
517
- {
518
- Say "Using alternate version $productVersion found in $ProductVersionTxtURL"
519
- }
520
-
521
- return $productVersion
522
- }
523
- else {
524
- Say-Verbose "Got StatusCode $($productVersionResponse.StatusCode) trying to get productVersion.txt at $productVersionTxtUrl, so using default value of $SpecificVersion"
525
- $productVersion = $SpecificVersion
526
- }
527
- } catch {
528
- Say-Verbose "Could not read productVersion.txt at $productVersionTxtUrl, so using default value of $SpecificVersion (Exception: '$($_.Exception.Message)' )"
529
- $productVersion = $SpecificVersion
530
- }
531
-
532
- return $productVersion
533
- }
534
-
535
- function Get-User-Share-Path() {
536
- Say-Invocation $MyInvocation
537
-
538
- $InstallRoot = $env:DOTNET_INSTALL_DIR
539
- if (!$InstallRoot) {
540
- $InstallRoot = "$env:LocalAppData\Microsoft\dotnet"
541
- }
542
- return $InstallRoot
543
- }
544
-
545
- function Resolve-Installation-Path([string]$InstallDir) {
546
- Say-Invocation $MyInvocation
547
-
548
- if ($InstallDir -eq "<auto>") {
549
- return Get-User-Share-Path
550
- }
551
- return $InstallDir
552
- }
553
-
554
- function Is-Dotnet-Package-Installed([string]$InstallRoot, [string]$RelativePathToPackage, [string]$SpecificVersion) {
555
- Say-Invocation $MyInvocation
556
-
557
- $DotnetPackagePath = Join-Path -Path $InstallRoot -ChildPath $RelativePathToPackage | Join-Path -ChildPath $SpecificVersion
558
- Say-Verbose "Is-Dotnet-Package-Installed: DotnetPackagePath=$DotnetPackagePath"
559
- return Test-Path $DotnetPackagePath -PathType Container
560
- }
561
-
562
- function Get-Absolute-Path([string]$RelativeOrAbsolutePath) {
563
- # Too much spam
564
- # Say-Invocation $MyInvocation
565
-
566
- return $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($RelativeOrAbsolutePath)
567
- }
568
-
569
- function Get-Path-Prefix-With-Version($path) {
570
- $match = [regex]::match($path, $VersionRegEx)
571
- if ($match.Success) {
572
- return $entry.FullName.Substring(0, $match.Index + $match.Length)
573
- }
574
-
575
- return $null
576
- }
577
-
578
- function Get-List-Of-Directories-And-Versions-To-Unpack-From-Dotnet-Package([System.IO.Compression.ZipArchive]$Zip, [string]$OutPath) {
579
- Say-Invocation $MyInvocation
580
-
581
- $ret = @()
582
- foreach ($entry in $Zip.Entries) {
583
- $dir = Get-Path-Prefix-With-Version $entry.FullName
584
- if ($dir -ne $null) {
585
- $path = Get-Absolute-Path $(Join-Path -Path $OutPath -ChildPath $dir)
586
- if (-Not (Test-Path $path -PathType Container)) {
587
- $ret += $dir
588
- }
589
- }
590
- }
591
-
592
- $ret = $ret | Sort-Object | Get-Unique
593
-
594
- $values = ($ret | foreach { "$_" }) -join ";"
595
- Say-Verbose "Directories to unpack: $values"
596
-
597
- return $ret
598
- }
599
-
600
- # Example zip content and extraction algorithm:
601
- # Rule: files if extracted are always being extracted to the same relative path locally
602
- # .\
603
- # a.exe # file does not exist locally, extract
604
- # b.dll # file exists locally, override only if $OverrideFiles set
605
- # aaa\ # same rules as for files
606
- # ...
607
- # abc\1.0.0\ # directory contains version and exists locally
608
- # ... # do not extract content under versioned part
609
- # abc\asd\ # same rules as for files
610
- # ...
611
- # def\ghi\1.0.1\ # directory contains version and does not exist locally
612
- # ... # extract content
613
- function Extract-Dotnet-Package([string]$ZipPath, [string]$OutPath) {
614
- Say-Invocation $MyInvocation
615
-
616
- Load-Assembly -Assembly System.IO.Compression.FileSystem
617
- Set-Variable -Name Zip
618
- try {
619
- $Zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath)
620
-
621
- $DirectoriesToUnpack = Get-List-Of-Directories-And-Versions-To-Unpack-From-Dotnet-Package -Zip $Zip -OutPath $OutPath
622
-
623
- foreach ($entry in $Zip.Entries) {
624
- $PathWithVersion = Get-Path-Prefix-With-Version $entry.FullName
625
- if (($PathWithVersion -eq $null) -Or ($DirectoriesToUnpack -contains $PathWithVersion)) {
626
- $DestinationPath = Get-Absolute-Path $(Join-Path -Path $OutPath -ChildPath $entry.FullName)
627
- $DestinationDir = Split-Path -Parent $DestinationPath
628
- $OverrideFiles=$OverrideNonVersionedFiles -Or (-Not (Test-Path $DestinationPath))
629
- if ((-Not $DestinationPath.EndsWith("\")) -And $OverrideFiles) {
630
- New-Item -ItemType Directory -Force -Path $DestinationDir | Out-Null
631
- [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $DestinationPath, $OverrideNonVersionedFiles)
632
- }
633
- }
634
- }
635
- }
636
- finally {
637
- if ($Zip -ne $null) {
638
- $Zip.Dispose()
639
- }
640
- }
641
- }
642
-
643
- function DownloadFile($Source, [string]$OutPath) {
644
- if ($Source -notlike "http*") {
645
- # Using System.IO.Path.GetFullPath to get the current directory
646
- # does not work in this context - $pwd gives the current directory
647
- if (![System.IO.Path]::IsPathRooted($Source)) {
648
- $Source = $(Join-Path -Path $pwd -ChildPath $Source)
649
- }
650
- $Source = Get-Absolute-Path $Source
651
- Say "Copying file from $Source to $OutPath"
652
- Copy-Item $Source $OutPath
653
- return
654
- }
655
-
656
- $Stream = $null
657
-
658
- try {
659
- $Response = GetHTTPResponse -Uri $Source
660
- $Stream = $Response.Content.ReadAsStreamAsync().Result
661
- $File = [System.IO.File]::Create($OutPath)
662
- $Stream.CopyTo($File)
663
- $File.Close()
664
- }
665
- finally {
666
- if ($Stream -ne $null) {
667
- $Stream.Dispose()
668
- }
669
- }
670
- }
671
-
672
- function SafeRemoveFile($Path) {
673
- try {
674
- if (Test-Path $Path) {
675
- Remove-Item $Path
676
- Say-Verbose "The temporary file `"$Path`" was removed."
677
- }
678
- else
679
- {
680
- Say-Verbose "The temporary file `"$Path`" does not exist, therefore is not removed."
681
- }
682
- }
683
- catch
684
- {
685
- Say-Warning "Failed to remove the temporary file: `"$Path`", remove it manually."
686
- }
687
- }
688
-
689
- function Prepend-Sdk-InstallRoot-To-Path([string]$InstallRoot, [string]$BinFolderRelativePath) {
690
- $BinPath = Get-Absolute-Path $(Join-Path -Path $InstallRoot -ChildPath $BinFolderRelativePath)
691
- if (-Not $NoPath) {
692
- $SuffixedBinPath = "$BinPath;"
693
- if (-Not $env:path.Contains($SuffixedBinPath)) {
694
- Say "Adding to current process PATH: `"$BinPath`". Note: This change will not be visible if PowerShell was run as a child process."
695
- $env:path = $SuffixedBinPath + $env:path
696
- } else {
697
- Say-Verbose "Current process PATH already contains `"$BinPath`""
698
- }
699
- }
700
- else {
701
- Say "Binaries of dotnet can be found in $BinPath"
702
- }
703
- }
704
-
705
- Say "Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:"
706
- Say "- The SDK needs to be installed without user interaction and without admin rights."
707
- Say "- The SDK installation doesn't need to persist across multiple CI runs."
708
- Say "To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.`r`n"
709
-
710
- $CLIArchitecture = Get-CLIArchitecture-From-Architecture $Architecture
711
- $SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -Channel $Channel -Version $Version -JSonFile $JSonFile
712
- $DownloadLink, $EffectiveVersion = Get-Download-Link -AzureFeed $AzureFeed -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture
713
- $LegacyDownloadLink = Get-LegacyDownload-Link -AzureFeed $AzureFeed -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture
714
-
715
- $InstallRoot = Resolve-Installation-Path $InstallDir
716
- Say-Verbose "InstallRoot: $InstallRoot"
717
- $ScriptName = $MyInvocation.MyCommand.Name
718
-
719
- if ($DryRun) {
720
- Say "Payload URLs:"
721
- Say "Primary named payload URL: $DownloadLink"
722
- if ($LegacyDownloadLink) {
723
- Say "Legacy named payload URL: $LegacyDownloadLink"
724
- }
725
- $RepeatableCommand = ".\$ScriptName -Version `"$SpecificVersion`" -InstallDir `"$InstallRoot`" -Architecture `"$CLIArchitecture`""
726
- if ($Runtime -eq "dotnet") {
727
- $RepeatableCommand+=" -Runtime `"dotnet`""
728
- }
729
- elseif ($Runtime -eq "aspnetcore") {
730
- $RepeatableCommand+=" -Runtime `"aspnetcore`""
731
- }
732
- foreach ($key in $MyInvocation.BoundParameters.Keys) {
733
- if (-not (@("Architecture","Channel","DryRun","InstallDir","Runtime","SharedRuntime","Version") -contains $key)) {
734
- $RepeatableCommand+=" -$key `"$($MyInvocation.BoundParameters[$key])`""
735
- }
736
- }
737
- Say "Repeatable invocation: $RepeatableCommand"
738
- if ($SpecificVersion -ne $EffectiveVersion)
739
- {
740
- Say "NOTE: Due to finding a version manifest with this runtime, it would actually install with version '$EffectiveVersion'"
741
- }
742
-
743
- return
744
- }
745
-
746
- if ($Runtime -eq "dotnet") {
747
- $assetName = ".NET Core Runtime"
748
- $dotnetPackageRelativePath = "shared\Microsoft.NETCore.App"
749
- }
750
- elseif ($Runtime -eq "aspnetcore") {
751
- $assetName = "ASP.NET Core Runtime"
752
- $dotnetPackageRelativePath = "shared\Microsoft.AspNetCore.App"
753
- }
754
- elseif ($Runtime -eq "windowsdesktop") {
755
- $assetName = ".NET Core Windows Desktop Runtime"
756
- $dotnetPackageRelativePath = "shared\Microsoft.WindowsDesktop.App"
757
- }
758
- elseif (-not $Runtime) {
759
- $assetName = ".NET Core SDK"
760
- $dotnetPackageRelativePath = "sdk"
761
- }
762
- else {
763
- throw "Invalid value for `$Runtime"
764
- }
765
-
766
- if ($SpecificVersion -ne $EffectiveVersion)
767
- {
768
- Say "Performing installation checks for effective version: $EffectiveVersion"
769
- $SpecificVersion = $EffectiveVersion
770
- }
771
-
772
- # Check if the SDK version is already installed.
773
- $isAssetInstalled = Is-Dotnet-Package-Installed -InstallRoot $InstallRoot -RelativePathToPackage $dotnetPackageRelativePath -SpecificVersion $SpecificVersion
774
- if ($isAssetInstalled) {
775
- Say "$assetName version $SpecificVersion is already installed."
776
- Prepend-Sdk-InstallRoot-To-Path -InstallRoot $InstallRoot -BinFolderRelativePath $BinFolderRelativePath
777
- return
778
- }
779
-
780
- New-Item -ItemType Directory -Force -Path $InstallRoot | Out-Null
781
-
782
- $installDrive = $((Get-Item $InstallRoot).PSDrive.Name);
783
- $diskInfo = Get-PSDrive -Name $installDrive
784
- if ($diskInfo.Free / 1MB -le 100) {
785
- throw "There is not enough disk space on drive ${installDrive}:"
786
- }
787
-
788
- $ZipPath = [System.IO.Path]::combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName())
789
- Say-Verbose "Zip path: $ZipPath"
790
-
791
- $DownloadFailed = $false
792
-
793
- $PrimaryDownloadStatusCode = 0
794
- $LegacyDownloadStatusCode = 0
795
-
796
- $PrimaryDownloadFailedMsg = ""
797
- $LegacyDownloadFailedMsg = ""
798
-
799
- Say "Downloading primary link $DownloadLink"
800
- try {
801
- DownloadFile -Source $DownloadLink -OutPath $ZipPath
802
- }
803
- catch {
804
- if ($PSItem.Exception.Data.Contains("StatusCode")) {
805
- $PrimaryDownloadStatusCode = $PSItem.Exception.Data["StatusCode"]
806
- }
807
-
808
- if ($PSItem.Exception.Data.Contains("ErrorMessage")) {
809
- $PrimaryDownloadFailedMsg = $PSItem.Exception.Data["ErrorMessage"]
810
- } else {
811
- $PrimaryDownloadFailedMsg = $PSItem.Exception.Message
812
- }
813
-
814
- if ($PrimaryDownloadStatusCode -eq 404) {
815
- Say "The resource at $DownloadLink is not available."
816
- } else {
817
- Say $PSItem.Exception.Message
818
- }
819
-
820
- SafeRemoveFile -Path $ZipPath
821
-
822
- if ($LegacyDownloadLink) {
823
- $DownloadLink = $LegacyDownloadLink
824
- $ZipPath = [System.IO.Path]::combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName())
825
- Say-Verbose "Legacy zip path: $ZipPath"
826
- Say "Downloading legacy link $DownloadLink"
827
- try {
828
- DownloadFile -Source $DownloadLink -OutPath $ZipPath
829
- }
830
- catch {
831
- if ($PSItem.Exception.Data.Contains("StatusCode")) {
832
- $LegacyDownloadStatusCode = $PSItem.Exception.Data["StatusCode"]
833
- }
834
-
835
- if ($PSItem.Exception.Data.Contains("ErrorMessage")) {
836
- $LegacyDownloadFailedMsg = $PSItem.Exception.Data["ErrorMessage"]
837
- } else {
838
- $LegacyDownloadFailedMsg = $PSItem.Exception.Message
839
- }
840
-
841
- if ($LegacyDownloadStatusCode -eq 404) {
842
- Say "The resource at $DownloadLink is not available."
843
- } else {
844
- Say $PSItem.Exception.Message
845
- }
846
-
847
- SafeRemoveFile -Path $ZipPath
848
- $DownloadFailed = $true
849
- }
850
- }
851
- else {
852
- $DownloadFailed = $true
853
- }
854
- }
855
-
856
- if ($DownloadFailed) {
857
- if (($PrimaryDownloadStatusCode -eq 404) -and ((-not $LegacyDownloadLink) -or ($LegacyDownloadStatusCode -eq 404))) {
858
- throw "Could not find `"$assetName`" with version = $SpecificVersion`nRefer to: https://aka.ms/dotnet-os-lifecycle for information on .NET Core support"
859
- } else {
860
- # 404-NotFound is an expected response if it goes from only one of the links, do not show that error.
861
- # If primary path is available (not 404-NotFound) then show the primary error else show the legacy error.
862
- if ($PrimaryDownloadStatusCode -ne 404) {
863
- throw "Could not download `"$assetName`" with version = $SpecificVersion`r`n$PrimaryDownloadFailedMsg"
864
- }
865
- if (($LegacyDownloadLink) -and ($LegacyDownloadStatusCode -ne 404)) {
866
- throw "Could not download `"$assetName`" with version = $SpecificVersion`r`n$LegacyDownloadFailedMsg"
867
- }
868
- throw "Could not download `"$assetName`" with version = $SpecificVersion"
869
- }
870
- }
871
-
872
- Say "Extracting zip from $DownloadLink"
873
- Extract-Dotnet-Package -ZipPath $ZipPath -OutPath $InstallRoot
874
-
875
- # Check if the SDK version is installed; if not, fail the installation.
876
- $isAssetInstalled = $false
877
-
878
- # if the version contains "RTM" or "servicing"; check if a 'release-type' SDK version is installed.
879
- if ($SpecificVersion -Match "rtm" -or $SpecificVersion -Match "servicing") {
880
- $ReleaseVersion = $SpecificVersion.Split("-")[0]
881
- Say-Verbose "Checking installation: version = $ReleaseVersion"
882
- $isAssetInstalled = Is-Dotnet-Package-Installed -InstallRoot $InstallRoot -RelativePathToPackage $dotnetPackageRelativePath -SpecificVersion $ReleaseVersion
883
- }
884
-
885
- # Check if the SDK version is installed.
886
- if (!$isAssetInstalled) {
887
- Say-Verbose "Checking installation: version = $SpecificVersion"
888
- $isAssetInstalled = Is-Dotnet-Package-Installed -InstallRoot $InstallRoot -RelativePathToPackage $dotnetPackageRelativePath -SpecificVersion $SpecificVersion
889
- }
890
-
891
- # Version verification failed. More likely something is wrong either with the downloaded content or with the verification algorithm.
892
- if (!$isAssetInstalled) {
893
- Say-Error "Failed to verify the version of installed `"$assetName`".`nInstallation source: $DownloadLink.`nInstallation location: $InstallRoot.`nReport the bug at https://github.com/dotnet/install-scripts/issues."
894
- throw "`"$assetName`" with version = $SpecificVersion failed to install with an unknown error."
895
- }
896
-
897
- SafeRemoveFile -Path $ZipPath
898
-
899
- Prepend-Sdk-InstallRoot-To-Path -InstallRoot $InstallRoot -BinFolderRelativePath $BinFolderRelativePath
900
-
901
- Say "Note that the script does not resolve dependencies during installation."
902
- Say "To check the list of dependencies, go to https://docs.microsoft.com/dotnet/core/install/windows#dependencies"
903
- Say "Installation finished"
904
- # SIG # Begin signature block
905
- # MIIjjwYJKoZIhvcNAQcCoIIjgDCCI3wCAQExDzANBglghkgBZQMEAgEFADB5Bgor
906
- # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
907
- # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCNsnhcJvx/hXmM
908
- # w8KjuvvIMDBFonhg9XJFc1QwfTyH4aCCDYEwggX/MIID56ADAgECAhMzAAABh3IX
909
- # chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
910
- # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
911
- # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
912
- # bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw
913
- # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
914
- # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
915
- # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
916
- # AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB
917
- # znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH
918
- # sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d
919
- # weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ
920
- # itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV
921
- # Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
922
- # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw
923
- # UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
924
- # ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu
925
- # ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
926
- # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
927
- # Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
928
- # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
929
- # MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy
930
- # S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K
931
- # NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV
932
- # BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr
933
- # qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx
934
- # zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe
935
- # yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g
936
- # yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf
937
- # AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI
938
- # 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5
939
- # GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea
940
- # jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS
941
- # AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
942
- # V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
943
- # IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
944
- # ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
945
- # MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
946
- # ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
947
- # H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
948
- # AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
949
- # OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
950
- # 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
951
- # y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
952
- # 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
953
- # M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
954
- # X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
955
- # XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
956
- # 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
957
- # l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
958
- # RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
959
- # CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
960
- # BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
961
- # DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
962
- # 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
963
- # LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
964
- # Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
965
- # Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
966
- # Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
967
- # FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
968
- # cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
969
- # XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
970
- # 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
971
- # 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
972
- # d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
973
- # Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
974
- # wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
975
- # aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
976
- # NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
977
- # xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
978
- # eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
979
- # r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
980
- # RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZDCCFWACAQEwgZUwfjELMAkG
981
- # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
982
- # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
983
- # b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN
984
- # BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
985
- # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgpT/bxWwe
986
- # aW0EinKMWCAzDXUjwXkIHldYzR6lw4/1Pc0wQgYKKwYBBAGCNwIBDDE0MDKgFIAS
987
- # AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
988
- # BgkqhkiG9w0BAQEFAASCAQCHd7sSQVq0YDg8QDx6/kLWn3s6jtvvIDCCgsO9spHM
989
- # quPd4FPbG67DCsKDClekQs52qrtRO3Zo+JMnCw4j3bS+gZHzeJr2shbftOrpsFoD
990
- # l7OPcUmtrqul9dkQCOp8t0MP3ls0n96/YyNy6lz4BAlTdkdDx957uAxalKaCIBzb
991
- # R9QyppOKIfNFvwD4EI5KI6tpmSy/uH8SrRg7ZExAYZl6J6R18WkL7KHn649lPoAQ
992
- # ujwrIXH10xOJops45ILGzKWQcHmCzLJGYapL4VHUuK+73nT+9ZROGHdk/PyvIcdw
993
- # iERa+C06v305t3DA+CuHFy1tvyw7IFF6RVbLZPwxrJjToYIS7jCCEuoGCisGAQQB
994
- # gjcDAwExghLaMIIS1gYJKoZIhvcNAQcCoIISxzCCEsMCAQMxDzANBglghkgBZQME
995
- # AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB
996
- # MDEwDQYJYIZIAWUDBAIBBQAEIOCaTmvM1AP0WaEVqzKaaCu/R+bTlR4kCrM/ZXsb
997
- # /eNOAgZgGeLsMwsYEzIwMjEwMjAzMjExNzQ5LjU5MVowBIACAfSggdSkgdEwgc4x
998
- # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
999
- # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p
1000
- # Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg
1001
- # VFNTIEVTTjo4OTdBLUUzNTYtMTcwMTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt
1002
- # U3RhbXAgU2VydmljZaCCDkEwggT1MIID3aADAgECAhMzAAABLCKvRZd1+RvuAAAA
1003
- # AAEsMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
1004
- # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
1005
- # cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw
1006
- # MB4XDTE5MTIxOTAxMTUwM1oXDTIxMDMxNzAxMTUwM1owgc4xCzAJBgNVBAYTAlVT
1007
- # MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
1008
- # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy
1009
- # YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4OTdB
1010
- # LUUzNTYtMTcwMTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj
1011
- # ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPK1zgSSq+MxAYo3qpCt
1012
- # QDxSMPPJy6mm/wfEJNjNUnYtLFBwl1BUS5trEk/t41ldxITKehs+ABxYqo4Qxsg3
1013
- # Gy1ugKiwHAnYiiekfC+ZhptNFgtnDZIn45zC0AlVr/6UfLtsLcHCh1XElLUHfEC0
1014
- # nBuQcM/SpYo9e3l1qY5NdMgDGxCsmCKdiZfYXIu+U0UYIBhdzmSHnB3fxZOBVcr5
1015
- # htFHEBBNt/rFJlm/A4yb8oBsp+Uf0p5QwmO/bCcdqB15JpylOhZmWs0sUfJKlK9E
1016
- # rAhBwGki2eIRFKsQBdkXS9PWpF1w2gIJRvSkDEaCf+lbGTPdSzHSbfREWOF9wY3i
1017
- # Yj8CAwEAAaOCARswggEXMB0GA1UdDgQWBBRRahZSGfrCQhCyIyGH9DkiaW7L0zAf
1018
- # BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH
1019
- # hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU
1020
- # aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
1021
- # BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0
1022
- # YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG
1023
- # AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQBPFxHIwi4vAH49w9Svmz6K3tM55RlW
1024
- # 5pPeULXdut2Rqy6Ys0+VpZsbuaEoxs6Z1C3hMbkiqZFxxyltxJpuHTyGTg61zfNI
1025
- # F5n6RsYF3s7IElDXNfZznF1/2iWc6uRPZK8rxxUJ/7emYXZCYwuUY0XjsCpP9pbR
1026
- # RKeJi6r5arSyI+NfKxvgoM21JNt1BcdlXuAecdd/k8UjxCscffanoK2n6LFw1PcZ
1027
- # lEO7NId7o+soM2C0QY5BYdghpn7uqopB6ixyFIIkDXFub+1E7GmAEwfU6VwEHL7y
1028
- # 9rNE8bd+JrQs+yAtkkHy9FmXg/PsGq1daVzX1So7CJ6nyphpuHSN3VfTMIIGcTCC
1029
- # BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC
1030
- # VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
1031
- # BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv
1032
- # b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN
1033
- # MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
1034
- # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
1035
- # aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw
1036
- # DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0
1037
- # VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw
1038
- # RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe
1039
- # dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx
1040
- # Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G
1041
- # kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA
1042
- # AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7
1043
- # fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC
1044
- # AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX
1045
- # zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v
1046
- # cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI
1047
- # KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j
1048
- # b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g
1049
- # AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93
1050
- # d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB
1051
- # BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA
1052
- # bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh
1053
- # IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS
1054
- # +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK
1055
- # kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon
1056
- # /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi
1057
- # PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/
1058
- # fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII
1059
- # YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0
1060
- # cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a
1061
- # KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ
1062
- # cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+
1063
- # NR4Iuto229Nfj950iEkSoYICzzCCAjgCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT
1064
- # AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
1065
- # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP
1066
- # cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4
1067
- # OTdBLUUzNTYtMTcwMTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy
1068
- # dmljZaIjCgEBMAcGBSsOAwIaAxUADE5OKSMoNx/mYxYWap1RTOohbJ2ggYMwgYCk
1069
- # fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
1070
- # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD
1071
- # Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF
1072
- # AOPFChkwIhgPMjAyMTAyMDMxNTQwMDlaGA8yMDIxMDIwNDE1NDAwOVowdDA6Bgor
1073
- # BgEEAYRZCgQBMSwwKjAKAgUA48UKGQIBADAHAgEAAgIXmDAHAgEAAgIRyTAKAgUA
1074
- # 48ZbmQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAID
1075
- # B6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAHeeznL2n6HWCjHH94Fl
1076
- # hcdW6TEXzq4XNgp1Gx1W9F8gJ4x+SwoV7elJZkwgGffcpHomLvIY/VSuzsl1NgtJ
1077
- # TWM2UxoqSv58BBOrl4eGhH6kkg8Ucy2tdeK5T8cHa8pMkq2j9pFd2mRG/6VMk0dl
1078
- # Xz7Uy3Z6bZqkcABMyAfuAaGbMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMx
1079
- # EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
1080
- # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt
1081
- # U3RhbXAgUENBIDIwMTACEzMAAAEsIq9Fl3X5G+4AAAAAASwwDQYJYIZIAWUDBAIB
1082
- # BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQx
1083
- # IgQg/QYv7yp+354WTjWUIsXWndTEzXjaYjqwYjcBxCJKjdUwgfoGCyqGSIb3DQEJ
1084
- # EAIvMYHqMIHnMIHkMIG9BCBbn/0uFFh42hTM5XOoKdXevBaiSxmYK9Ilcn9nu5ZH
1085
- # 4TCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
1086
- # DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
1087
- # JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABLCKv
1088
- # RZd1+RvuAAAAAAEsMCIEIIfIM3YbzHswb/Kj/qq1l1cHA6QBl+gEXYanUNJomrpT
1089
- # MA0GCSqGSIb3DQEBCwUABIIBAAwdcXssUZGO7ho5+NHLjIxLtQk543aKGo+lrRMY
1090
- # Q9abE1h/AaaNJl0iGxX4IihNWyfovSfYL3L4eODUBAu68tWSxeceRfWNsb/ZZfUi
1091
- # v89hpLssI/Gf1BEgNMA4zCuIGQiC8okusVumEpAhhvCEbSiTTTtBdolTnU/CAKui
1092
- # oxaU3R9XkKh1F4oAM26+dJ1J2BLQXPs5afNvvedDsZWNQUPK1sFF3JRfzxiTrwBW
1093
- # EJRyflev9gyDoqCHzippgb+6+eti1WTkcA9Q49GIT11S6LOAVqkSC9N7Nqf8ksh8
1094
- # ARdwT8jigpsm+mj7lrVU9upDkhVYhKeO8oiZq95Q53Zkteo=
1095
- # SIG # End signature block