Advertisement
Guest User

Untitled

a guest
Apr 14th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. # Parse input argument string into a hashtable
  2. # Format: /InstallPath:path location /Features:Microsoft.VisualStudio.Workload.CoreEditor,Microsoft.VisualStudio.Workload.ManagedDesktop /ProductKey:AB-D1
  3. function Parse-Parameters ($s)
  4. {
  5. $parameters = @{ }
  6.  
  7. if (!$s)
  8. {
  9. Write-Debug "No package parameters."
  10. return $parameters
  11. }
  12.  
  13. Write-Debug "Package parameters: $s"
  14. $s = ' ' + $s
  15. [String[]] $kvpPrefix = @(" /")
  16. $kvpDelimiter = ':'
  17.  
  18. $kvps = $s.Split($kvpPrefix, [System.StringSplitOptions]::RemoveEmptyEntries)
  19. foreach ($kvp in $kvps)
  20. {
  21. Write-Debug "Package parameter kvp: $kvp"
  22. $delimiterIndex = $kvp.IndexOf($kvpDelimiter)
  23. if (($delimiterIndex -le 0) -or ($delimiterIndex -ge ($kvp.Length - 1))) { continue }
  24.  
  25. $key = $kvp.Substring(0, $delimiterIndex).Trim().ToLower()
  26. if ($key -eq '') { continue }
  27. $value = $kvp.Substring($delimiterIndex + 1).Trim()
  28.  
  29. Write-Debug "Package parameter: key=$key, value=$value"
  30. $parameters.Add($key, $value)
  31. }
  32.  
  33. return $parameters
  34. }
  35.  
  36. function Generate-Install-Arguments-String ($parameters)
  37. {
  38. $s = "--includeRecommended --quiet --norestart --wait"
  39. $s += " --addProductLang en-US --add Microsoft.VisualStudio.Workload.CoreEditor"
  40. # --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetCoreTools --add Microsoft.VisualStudio.Workload.NetWeb
  41.  
  42. $features = $parameters['Features']
  43. if ($features)
  44. {
  45. foreach ($f in $features.Split(','))
  46. {
  47. $s += " --add "
  48. $s += $f.Trim()
  49. }
  50. }
  51.  
  52. $rpp = '& "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\StorePID.exe"'
  53. $ip = $parameters['InstallPath']
  54. if ($ip)
  55. {
  56. $s += " --installPath `"$ip`""
  57. $rpp = "& `"$($ip.Trim('\'))" + "\Common7\IDE\StorePID.exe`""
  58. }
  59.  
  60. $pk = $parameters['ProductKey']
  61. if ($pk)
  62. {
  63. $s += " --productKey $pk"
  64. $parameters.Add('RegisterProduct', "$rpp $pk 08860")
  65. }
  66.  
  67. return $s
  68. }
  69.  
  70. $vendor = "microsoft"
  71. $product = "visualstudio"
  72. $packageName = $env:chocolateyPackageName
  73. $packageParameters = Parse-Parameters $env:chocolateyPackageParameters
  74. $silentArgs = Generate-Install-Arguments-String $packageParameters
  75.  
  76. $uncPath = "\\SERVER\tools\microsoft\visualstudio\2017\mu_visual_studio_enterprise_2017_x86_x64_10049783"
  77. $uncUser = "DOMAIN\user"
  78. $uncPassword = "password"
  79.  
  80. $driveLetter = dir function:[d-z]: -n | ?{ !(test-path $_) } | random
  81. NET USE $driveLetter /D 2>null
  82. NET USE $driveLetter $uncPath /u:$uncUser $uncPassword
  83.  
  84. $packageArgs = @{
  85. packageName = $packageName
  86. fileType = 'exe'
  87. file = "$driveLetter\mu_visual_studio_enterprise_2017_x86_x64_10049783.exe"
  88. silentArgs = $silentArgs
  89. validExitCodes= @(0, 3010)
  90. }
  91.  
  92. Write-Debug "Arguments used for $packageName`: $silentArgs"
  93. Install-ChocolateyInstallPackage @packageArgs
  94.  
  95. NET USE $driveLetter /D 2>null
  96.  
  97. $rp = $packageParameters['RegisterProduct']
  98. if ($rp)
  99. {
  100. Write-Debug "Register product using command line ($rp)"
  101. Invoke-Expression $rp
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement