Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

490,314

Downloads of v 15.0.25428.1-preview3:

340

Last Update:

19 Jul 2016

Package Maintainer(s):

Software Author(s):

  • Microsoft

Tags:

microsoft visual studio visualstudio 15 vnext v.next vs vs15 2017 enterprise ide admin

Visual Studio "15" Enterprise (Preview 3)

This is a prerelease version of Visual Studio "15" Enterprise (Preview 3).

  • 1
  • 2
  • 3

15.0.25428.1-preview3 | Updated: 19 Jul 2016

Downloads:

490,314

Downloads of v 15.0.25428.1-preview3:

340

Maintainer(s):

Software Author(s):

  • Microsoft

Visual Studio "15" Enterprise (Preview 3) 15.0.25428.1-preview3

This is a prerelease version of Visual Studio "15" Enterprise (Preview 3).

  • 1
  • 2
  • 3

Some Checks Are Exempted or Have Failed

Not All Tests Have Passed


Validation Testing Failed


Verification Testing Exemption:

Requires a reboot after KB2919355

Details

Scan Testing Successful:

No detections found in any package files

Details
WARNING

This package is unlisted and hidden from package listings.

Description

Overview

Visual Studio Enterprise "15" Preview 3 is an early build of the next major release of Visual Studio. Preview provides early adopters with an opportunity to try out the new and improved product features, and the ability to share feedback with the product team.

PLEASE NOTE: This preview has not been subject to final validation and is not meant to be run on production workstations or servers.

DISCLAIMER: The package id is just an educated guess based on the naming of the Web Platform Installer product VWDOrVs2017AzurePack - Microsoft Azure SDK for .NET (VS "15" Preview). There is no official confirmation that Visual Studio "15" will be released in 2017 or that it will be named Visual Studio 2017.

To find out what's new in Visual Studio "15" Preview 3, see the Visual Studio "15" Preview 3 release notes. For a list of fixed bugs and known issues, see the Visual Studio "15" Preview 3 MSDN Article.

System requirements

Customizations

You can customize the installation either by adding optional available features or by specifying own installation configuration file.

Adding optional features

Optional features (C++, SQL tools, phone tools, etc.) are available but not installed by default.
You can provide optional parameters to include them during the install.
Here is an example that includes the SQL Tools and Windows 10 Mobile Emulators:

choco install visualstudio2017enterprise -packageParameters "--Features SQLV1,Win10_EmulatorV1"

Due to the package description length limit, the feature codes are listed in the features.txt file in the package.

Using own configuration file

Specifying the optional features above modifies the configuration file used during installation (AdminDeployment.xml). If that is not enough you can provide this file on your own. A default file is included in the package.
Examples:

choco install visualstudio2017enterprise -packageParameters "--AdminFile c:\path to your\AdminDeployment.xml"
choco install visualstudio2017enterprise -packageParameters "--AdminFile http://path/to/your/AdminDeployment.xml"

Providing a product key

It is also possible to provide a product key via packageParameters:

choco install visualstudio2017enterprise -packageParameters "--ProductKey 12345-ABCDE-67890-FEDBC-76543"

Full customization example:

choco install visualstudio2017enterprise -packageParameters "--AdminFile c:\path to your\AdminDeployment.xml --Features SQLV1,Win10_EmulatorV1 --ProductKey 12345-ABCDE-67890-FEDBC-76543"

Installation notes

A reboot will most certainly be required after installing/uninstalling this package. A reboot might even be required before installing/uninstalling - if the system is awaiting a reboot due to Windows updates having been installed, or if you are attempting to uninstall the package immediately after installing it. The package will provide informative messages in each case.

On some systems with older .NET 4.x versions, the installation of .NET 4.6.2 (via netfx-4.6.2-devpack) might put the system in such a state that the Visual Studio installer will reboot the computer (ignoring the /NoRestart switch) and set itself up to automatically resume the installation after the user logs back on. This behavior has been observed on Windows 8.1 with .NET 4.5.2.
If complete control over reboots is required, such as in automation scenarios, it is advisable to install the dependencies (esp. netfx-4.6.2-devpack) first, perform a reboot if necessary, and only after that proceed to install this package.

The installation/uninstallation will take a fair amount of time and on slower systems may exceed the default Chocolatey execution timeout (45 minutes). Use the --execution-timeout argument of choco.exe to increase that timeout.


features.txt
The supported feature codes are listed below, organized in the same way as in the Visual Studio installer.

    Code                         | Description
    -----------------------------------------------------------------------------------------------
                                 | Programming Languages
                                 |     Visual C++
    NativeLanguageSupport_VCV1   |         Common Tools for Visual C++ 2015
    NativeLanguageSupport_MFCV1  |         Microsoft Foundation Classes for C++
    NativeLanguageSupport_XPV1   |         Windows XP Support for C++
    FSharpV1                     |     Visual F#
    PythonToolsForVisualStudioV3 |     Python Tools for Visual Studio (May 2016 Preview)
                                 | Windows and Web Development
    ClickOnceV1                  |     ClickOnce Publishing Tools
    OfficeDeveloperToolsV1       |     Microsoft Office Developer Tools
    SQLV1                        |     Microsoft SQL Server Data Tools
    WebToolsV1                   |     Microsoft Web Developer Tools
    PowerShellToolsV1            |     PowerShell Tools for Visual Studio
                                 |     Universal Windows App Development Tools
    Windows10_ToolsAndSDKV4      |         Tools (2.0 Preview 3) and Windows SDK (10.0.10586)
    Win10_EmulatorV1             |         Emulators for Windows 10 Mobile (10.0.10586)
    Win10SDK_10.0.10240          |         Windows 10 SDK (10.0.10240)
                                 | Cross Platform Mobile Development
    XamarinVSCoreV3              |     C#/.NET (Xamarin v4.1.1)
    MDDJSCoreV10                 |     HTML/JavaScript (Apache Cordova) Update 10
                                 |     Visual C++ Mobile Development
    L_MDDCPlusPlus_Android_V2    |         Visual C++ Android Development
    L_MDDCPlusPlus_iOS_V2        |         Visual C++ iOS Development
    L_MDDCPlusPlus_ClangC2_V4    |         Clang with Microsoft CodeGen (March 2016)
    WebSocket4NetV1              |     WebSocket4Net
    AndroidEmulator.1.0.60404.1  |     Microsoft Visual Studio Emulator for Android (April 2016)
                                 |     Common Tools and Software Development Kits
    AndroidNDK_32_V1             |         Android Native Development Kit (R10E, 32 bits)
    AndroidNDK_64_V1             |         Android Native Development Kit (R10E, 64 bits)
    AndroidSDKV1                 |         Android SDK
    AndroidSDK_API1921V1         |         Android SDK Setup (API Level 19 and 21)
    AndroidSDK_API22V1           |         Android SDK Setup (API Level 22)
    AndroidSDK_API23V1           |         Android SDK Setup (API Level 23)
    AntV1                        |         Apache Ant (1.9.3)
    JavaJDKV1                    |         Java SE Development Kit (7.0.550.13)
    Node.jsV1                    |         Joyent Node.js
                                 | Common Tools
    GitForWindowsV3              |     Git for Windows
    VS_SDK_GroupV2               |     Visual Studio Extensibility Tools Preview

Note: Microsoft Web Developer Tools are selected by default, just like in the Visual Studio installer. This package does not currently provide a way to unselect features. To opt out of installing the web tools, use a custom configuration file (see the package description for details).
tools\AdminDeployment.xml
<?xml version="1.0" encoding="utf-8"?>
<AdminDeploymentCustomizations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/wix/2011/AdminDeployment">
  <BundleCustomizations TargetDir="C:\Program Files (x86)\Microsoft Visual Studio 15.0" NoCacheOnlyMode="default" NoWeb="default" NoRefresh="default" SuppressRefreshPrompt="default" Feed="default" />
  <SelectableItemCustomizations>
    <SelectableItemCustomization Id="WebToolsV1" Hidden="no" Selected="yes" FriendlyName="Microsoft Web Developer Tools" />
    <SelectableItemCustomization Id="MDDJSDependencyHiddenV1" Selected="yes" FriendlyName="MDDJSDependencyHidden" />
    <SelectableItemCustomization Id="AppInsightsVisualStudio_HiddenV3" Selected="yes" FriendlyName="Developer Analytics Tools v8.0.0" />
    <SelectableItemCustomization Id="Windows_uCRT_SDKHidden" Selected="yes" FriendlyName="Windows_uCRT_SDKHidden" />
    <SelectableItemCustomization Id="Windows_81_SDKHidden" Selected="yes" FriendlyName="Windows_81_SDKHidden" />
    <SelectableItemCustomization Id="BlissHidden" Selected="yes" FriendlyName="BlissHidden" />
    <SelectableItemCustomization Id="HelpHidden" Selected="yes" FriendlyName="HelpHidden" />
    <SelectableItemCustomization Id="IntelliTraceEnterpriseHidden" Selected="yes" FriendlyName="IntelliTraceEnterpriseHidden" />
    <SelectableItemCustomization Id="JavaScript" Selected="yes" FriendlyName="JavascriptHidden" />
    <SelectableItemCustomization Id="LocalDBHidden" Selected="yes" FriendlyName="LocalDBHidden" />
    <SelectableItemCustomization Id="NetFX4Hidden" Selected="yes" FriendlyName="NetFX4Hidden" />
    <SelectableItemCustomization Id="NetFX45Hidden" Selected="yes" FriendlyName="NetFX45Hidden" />
    <SelectableItemCustomization Id="NetFX451MTPackHidden" Selected="yes" FriendlyName="NetFX451MTPackHidden" />
    <SelectableItemCustomization Id="NetFX451MTPackCoreHidden" Selected="yes" FriendlyName="NetFX451MTPackCoreHidden" />
    <SelectableItemCustomization Id="NetFX452MTPackHidden" Selected="yes" FriendlyName="NetFX452MTPackHidden" />
    <SelectableItemCustomization Id="NetFX46MTPackHidden" Selected="yes" FriendlyName="NetFX46MTPackHidden" />
    <SelectableItemCustomization Id="PortableDTPHidden" Selected="yes" FriendlyName="PortableDTPHidden" />
    <SelectableItemCustomization Id="ProfilerHidden" Selected="yes" FriendlyName="ProfilerHidden" />
    <SelectableItemCustomization Id="RoslynLanguageServicesHidden" Selected="yes" FriendlyName="RoslynLanguageServicesHidden" />
    <SelectableItemCustomization Id="SDKTools3Hidden" Selected="yes" FriendlyName="SDKTools3Hidden" />
    <SelectableItemCustomization Id="SDKTools4Hidden" Selected="yes" FriendlyName="SDKTools4Hidden" />
    <SelectableItemCustomization Id="StoryboardingHidden" Selected="yes" FriendlyName="StoryboardingHidden" />
    <SelectableItemCustomization Id="WCFDataServicesHidden" Selected="yes" FriendlyName="WCFDataServicesHidden" />
    <SelectableItemCustomization Id="WorkflowToolsv1Hidden" Selected="yes" FriendlyName="Workflow v1" />
    <SelectableItemCustomization Id="NativeLanguageSupport_VCV1" Hidden="no" Selected="no" FriendlyName="Common Tools for Visual C++ 2015" />
    <SelectableItemCustomization Id="NativeLanguageSupport_MFCV1" Hidden="no" Selected="no" FriendlyName="Microsoft Foundation Classes for C++" />
    <SelectableItemCustomization Id="NativeLanguageSupport_XPV1" Hidden="no" Selected="no" FriendlyName="Windows XP Support for C++" />
    <SelectableItemCustomization Id="Win81SDK_HiddenV1" Hidden="no" Selected="no" FriendlyName="Windows 8.1 SDK and Universal CRT SDK" />
    <SelectableItemCustomization Id="FSharpV1" Hidden="no" Selected="no" FriendlyName="Visual F#" />
    <SelectableItemCustomization Id="PythonToolsForVisualStudioV3" Hidden="no" Selected="no" FriendlyName="Python Tools for Visual Studio (May 2016 Preview)" />
    <SelectableItemCustomization Id="ClickOnceV1" Hidden="no" Selected="no" FriendlyName="ClickOnce Publishing Tools" />
    <SelectableItemCustomization Id="OfficeDeveloperToolsV1" Hidden="no" Selected="no" FriendlyName="Microsoft Office Developer Tools" />
    <SelectableItemCustomization Id="SQLV1" Hidden="no" Selected="no" FriendlyName="Microsoft SQL Server Data Tools" />
    <SelectableItemCustomization Id="PowerShellToolsV1" Hidden="no" Selected="no" FriendlyName="PowerShell Tools for Visual Studio" />
    <SelectableItemCustomization Id="Windows10_ToolsAndSDKV4" Hidden="no" Selected="no" FriendlyName="Tools (2.0 Preview 3) and Windows SDK (10.0.10586)" />
    <SelectableItemCustomization Id="Win10_EmulatorV1" Hidden="no" Selected="no" FriendlyName="Emulators for Windows 10 Mobile (10.0.10586)" />
    <SelectableItemCustomization Id="XamarinVSCoreV3" Hidden="no" Selected="no" FriendlyName="C#/.NET (Xamarin v4.1.1)" />
    <SelectableItemCustomization Id="XamarinPT_V1" Selected="no" FriendlyName="Xamarin Preparation Tool" />
    <SelectableItemCustomization Id="MDDJSCoreV10" Hidden="no" Selected="no" FriendlyName="HTML/JavaScript (Apache Cordova) Update 10" />
    <SelectableItemCustomization Id="AndroidNDKV1" Hidden="no" Selected="no" FriendlyName="Android Native Development Kit (R10E, 32 bits)" />
    <SelectableItemCustomization Id="AndroidNDK_32_V1" Hidden="no" Selected="no" FriendlyName="Android Native Development Kit (R10E, 32 bits)" />
    <SelectableItemCustomization Id="AndroidNDK_64_V1" Hidden="no" Selected="no" FriendlyName="Android Native Development Kit (R10E, 64 bits)" />
    <SelectableItemCustomization Id="AndroidSDKV1" Hidden="no" Selected="no" FriendlyName="Android SDK" />
    <SelectableItemCustomization Id="AndroidSDK_API1921V1" Hidden="no" Selected="no" FriendlyName="Android SDK Setup (API Level 19 and 21)" />
    <SelectableItemCustomization Id="AndroidSDK_API22V1" Hidden="no" Selected="no" FriendlyName="Android SDK Setup (API Level 22)" />
    <SelectableItemCustomization Id="AndroidSDK_API23V1" Hidden="no" Selected="no" FriendlyName="Android SDK Setup (API Level 23)" />
    <SelectableItemCustomization Id="AntV1" Hidden="no" Selected="no" FriendlyName="Apache Ant (1.9.3)" />
    <SelectableItemCustomization Id="L_MDDCPlusPlus_iOS_V2" Hidden="no" Selected="no" FriendlyName="Visual C++ iOS Development" />
    <SelectableItemCustomization Id="L_MDDCPlusPlus_Android_V2" Hidden="no" Selected="no" FriendlyName="Visual C++ Android Development" />
    <SelectableItemCustomization Id="L_MDDCPlusPlus_ClangC2_V4" Hidden="no" Selected="no" FriendlyName="Clang with Microsoft CodeGen (March 2016)" />
    <SelectableItemCustomization Id="JavaJDKV1" Hidden="no" Selected="no" FriendlyName="Java SE Development Kit (7.0.550.13)" />
    <SelectableItemCustomization Id="Node.jsV1" Hidden="no" Selected="no" FriendlyName="Joyent Node.js" />
    <SelectableItemCustomization Id="AndroidEmulator.1.0.60404.1" Hidden="no" Selected="no" FriendlyName="Microsoft Visual Studio Emulator for Android (April 2016)" />
    <SelectableItemCustomization Id="WebSocket4NetV1" Hidden="no" Selected="no" FriendlyName="WebSocket4Net" />
    <SelectableItemCustomization Id="GitForWindowsV3" Hidden="no" Selected="no" FriendlyName="Git for Windows" />
    <SelectableItemCustomization Id="VS_SDK_GroupV2" Hidden="no" Selected="no" FriendlyName="Visual Studio Extensibility Tools Preview" />
    <SelectableItemCustomization Id="VS_SDK_Breadcrumb_GroupV2" Selected="no" FriendlyName="Visual Studio Extensibility Tools Preview" />
    <SelectableItemCustomization Id="Win10_VSToolsV4" Hidden="no" Selected="no" FriendlyName="Tools for Universal Windows Apps (2.0 Preview 3) and Windows SDK (10.0.10586)" />
    <SelectableItemCustomization Id="Win10SDK_10.0.10240" Hidden="no" Selected="no" FriendlyName="Windows 10 SDK (10.0.10240)" />
    <SelectableItemCustomization Id="Win10SDK_10.0.10586_15" Selected="no" FriendlyName="Windows 10 SDK (10.0.10586)" />
    <SelectableItemCustomization Id="Win10SDK_10.0.10586_212" Selected="no" FriendlyName="Windows 10 SDK (10.0.10586)" />
    <SelectableItemCustomization Id="AppInsightsVSWinExpress_HiddenV3" Selected="no" FriendlyName="Developer Analytics Tools v8.0.0" />
    <SelectableItemCustomization Id="AppInsightsVWDExpress_HiddenV3" Selected="no" FriendlyName="Developer Analytics Tools v8.0.0" />
  </SelectableItemCustomizations>
</AdminDeploymentCustomizations>
tools\ChocolateyInstall.ps1
Import-Module -Name (Join-Path -Path (Split-Path -Parent -Path $MyInvocation.MyCommand.Definition) -ChildPath 'VSServicing.psm1')

Install-VS `
    -PackageName 'visualstudio2017enterprise' `
    -ApplicationName 'Microsoft Visual Studio Enterprise 15 Preview 3' `
    -Url 'https://download.microsoft.com/download/e/e/6/ee6e936e-6323-4b51-a6f3-7b276b7e168a/vs_enterprise.exe' `
    -ChecksumSha1 '6A63984CAFE972D655817395CC12054068077015'
tools\ChocolateyUninstall.ps1
Import-Module -Name (Join-Path -Path (Split-Path -Parent -Path $MyInvocation.MyCommand.Definition) -ChildPath 'VSServicing.psm1')

Uninstall-VS `
    -PackageName 'visualstudio2017enterprise' `
    -ApplicationName 'Microsoft Visual Studio Enterprise 15 Preview 3' `
    -UninstallerName 'vs_enterprise.exe'
tools\VSServicing.psm1
# based on code from the visualstudio2015community package, with several extensions and modifications

# Parse input argument string into a hashtable
# Format: --AdminFile file location --Features WebTools,Win8SDK --ProductKey AB-D1
function Parse-Parameters
{
    [CmdletBinding()]
    Param (
        [string] $s
    )
    Write-Debug "Running 'Parse-Parameters' with s:'$s'";
    $parameters = @{ }

    if ($s -eq '')
    {
        Write-Debug "No package parameters."
        return $parameters
    }

    Write-Debug "Package parameters: $s"
    $s = ' ' + $s
    [String[]] $kvpPrefix = @(" --")
    $kvpDelimiter = ' '

    $kvps = $s.Split($kvpPrefix, [System.StringSplitOptions]::RemoveEmptyEntries)
    foreach ($kvp in $kvps)
    {
        Write-Debug "Package parameter kvp: $kvp"
        $delimiterIndex = $kvp.IndexOf($kvpDelimiter)
        if (($delimiterIndex -le 0) -or ($delimiterIndex -ge ($kvp.Length - 1))) { continue }

        $key = $kvp.Substring(0, $delimiterIndex).Trim().ToLower()
        if ($key -eq '') { continue }
        $value = $kvp.Substring($delimiterIndex + 1).Trim()

        Write-Debug "Package parameter: key=$key, value=$value"
        $parameters.Add($key, $value)
    }

    return $parameters
}

# Generates customizations file. Returns its path
function Generate-AdminFile
{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true)]
        [hashtable] $parameters,
        [string] $adminFile,
        [Parameter(Mandatory = $true)]
        [string] $packageName
    )
    Write-Debug "Running 'Generate-AdminFile' with parameters:'$parameters', defaultAdminFile:'$defaultAdminFile', packageName:'$packageName'";
    $adminFile = $parameters['AdminFile']
    $features = $parameters['Features']
    if ($adminFile -eq '' -and !$features)
    {
        return $null
    }

    $localAdminFile = Join-Path $Env:TEMP "${packageName}_AdminDeployment.xml"
    if (Test-Path $localAdminFile)
    {
        Remove-Item $localAdminFile
    }

    if ($adminFile)
    {
        if (Test-Path $adminFile)
        {
            Copy-Item $adminFile $localAdminFile -force
        }
        else
        {
            if (($adminFile -as [System.URI]).AbsoluteURI -ne $null)
            {
                Get-ChocolateyWebFile 'adminFile' $localAdminFile $adminFile
            }
            else
            {
                throw 'Invalid AdminFile setting.'
            }
        }
        Write-Verbose "Using provided AdminFile: $adminFile"
    }
    elseif ($features)
    {
        Copy-Item $defaultAdminFile $localAdminFile -force
    }

    return $localAdminFile
}

# Turns on features in the customizations file
function Update-AdminFile
{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true)]
        [hashtable] $parameters,
        [string] $adminFile
    )
    Write-Debug "Running 'Update-AdminFile' with parameters:'$parameters', adminFile:'$adminFile'";
    if ($adminFile -eq '') { return }
    $s = $parameters['Features']
    if (!$s) { return }

    $features = $s.Split(',')
    [xml]$xml = Get-Content $adminFile

    $selectableItemCustomizations = $xml.DocumentElement.SelectableItemCustomizations
    $featuresSelectedByDefault = $selectableItemCustomizations.ChildNodes | Where-Object { $_.GetAttribute('Hidden') -eq 'no' -and $_.GetAttribute('Selected') -eq 'yes' } | Select-Object -ExpandProperty Id
    $selectedFeatures = New-Object System.Collections.ArrayList
    $invalidFeatures = New-Object System.Collections.ArrayList
    foreach ($feature in $features)
    {
        $node = $selectableItemCustomizations.SelectSingleNode("*[@Id=""$feature""]")
        if ($node -ne $null)
        {
            $node.Selected = "yes"
            $selectedFeatures.Add($feature) | Out-Null
        }
        else
        {
            $invalidFeatures.Add($feature) | Out-Null
        }
    }
    if ($invalidFeatures.Count -gt 0)
    {
        $errorMessage = "Invalid feature name(s): $invalidFeatures"
        $validFeatureNames = $selectableItemCustomizations.ChildNodes | Select-Object -ExpandProperty Id
        Write-Warning $errorMessage
        Write-Warning "Valid feature names are: $validFeatureNames"
        throw $errorMessage
    }
    Write-Verbose "Features selected by default: $featuresSelectedByDefault"
    Write-Verbose "Features selected using package parameters: $selectedFeatures"
    $xml.Save($adminFile)
}

function Generate-InstallArgumentsString
{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true)]
        [hashtable] $parameters,
        [string] $adminFile,
        [Parameter(Mandatory = $true)]
        [string] $logFilePath
    )
    Write-Debug "Running 'Generate-InstallArgumentsString' with parameters:'$parameters', adminFile:'$adminFile', logFilePath:'$logFilePath'";
    $s = "/Passive /NoRestart /Log ""$logFilePath"""

    if ($adminFile -ne '')
    {
        $s = $s + " /AdminFile $adminFile"
    }

    $pk = $parameters['ProductKey']
    if ($pk -and (-not [string]::IsNullOrEmpty($pk)))
    {
        Write-Verbose "Using provided product key: ...-$($pk.Substring([Math]::Max($pk.Length - 5, 0)))"
        $s = $s + " /ProductKey $pk"
    }

    return $s
}

function Generate-UninstallArgumentsString
{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $true)]
        [string] $logFilePath
    )
    Write-Debug "Running 'Generate-UninstallArgumentsString' with logFilePath:'$logFilePath'";
    $s = "/Uninstall /Force /Passive /NoRestart /Log ""$logFilePath"""

    return $s
}

function Get-VSUninstallRegistryKey
{
    [CmdletBinding()]
    Param (
        [string] $ApplicationName
    )

    Write-Debug "Looking for Uninstall key for '$ApplicationName'"
    $uninstallKey = @('Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall') `
    | Where-Object { Test-Path -Path $_ } `
    | Get-ChildItem `
    | Where-Object { $displayName = $_ | Get-ItemProperty -Name DisplayName -ErrorAction SilentlyContinue | Select-Object -ExpandProperty DisplayName; $displayName -eq $ApplicationName } `
    | Where-Object { $systemComponent = $_ | Get-ItemProperty -Name SystemComponent -ErrorAction SilentlyContinue | Select-Object -ExpandProperty SystemComponent; $systemComponent -ne 1 }

    return $uninstallKey
}

if (-not (Test-Path -Path Function:\Set-PowerShellExitCode))
{
    # based on Set-PowerShellExitCode (07277ac), included here unchanged to add exit code support to old Chocolatey
    function Set-PowerShellExitCode {
        param (
            [int]$exitCode
        )

        $host.SetShouldExit($exitCode); 
        $env:ChocolateyExitCode = $exitCode;
    }
}

# based on Start-ChocolateyProcessAsAdmin (8734611), included here only slightly modified (renamed, stricter parameter binding), to add exit code support to old Chocolatey
function Start-VSChocolateyProcessAsAdmin {
[CmdletBinding()]
param(
  [string] $statements,
  [string] $exeToRun = 'powershell',
  [switch] $minimized,
  [switch] $noSleep,
  [int[]]$validExitCodes = @(0)
)
  Write-Debug "Running 'Start-VSChocolateyProcessAsAdmin' with exeToRun:'$exeToRun', statements:'$statements', minimized:$minimized, noSleep:$noSleep, validExitCodes:'$validExitCodes'";

  $wrappedStatements = $statements
  if ($wrappedStatements -eq $null) { $wrappedStatements = ''}

  if ($exeToRun -eq 'powershell') {
    $exeToRun = "$($env:SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe"
    $importChocolateyHelpers = ""
    Get-ChildItem "$helpersPath" -Filter *.psm1 | ForEach-Object { $importChocolateyHelpers = "& import-module -name  `'$($_.FullName)`';$importChocolateyHelpers" };
    $block = @"
      `$noSleep = `$$noSleep
      $importChocolateyHelpers 
      try{
        `$progressPreference="SilentlyContinue"
        $statements 
        if(!`$noSleep){start-sleep 6}
      }
      catch{
        if(!`$noSleep){start-sleep 8}
        throw
      }
"@
    $encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($block))
    $wrappedStatements = "-NoProfile -ExecutionPolicy bypass -EncodedCommand $encoded"
    $dbgMessage = @"
Elevating Permissions and running powershell block:
$block 
This may take a while, depending on the statements.
"@
  }
  else 
  {
    $dbgMessage = @"
Elevating Permissions and running [`"$exeToRun`" $wrappedStatements]. This may take a while, depending on the statements.
"@
  }
  
  Write-Debug $dbgMessage

  $exeIsTextFile = [System.IO.Path]::GetFullPath($exeToRun) + ".istext"
  if (([System.IO.File]::Exists($exeIsTextFile))) {
    Set-PowerShellExitCode 4
    throw "The file was a text file but is attempting to be run as an executable - '$exeToRun'"
  }
  
  if ($exeToRun -eq 'msiexec' -or $exeToRun -eq 'msiexec.exe') {
    $exeToRun = "$($env:SystemRoot)\System32\msiexec.exe"
  }

  if (!([System.IO.File]::Exists($exeToRun)) -and $exeToRun -notmatch 'msiexec') {
    Write-Warning "May not be able to find '$exeToRun'. Please use full path for executables."
    # until we have search paths enabled, let's just pass a warning
    #Set-PowerShellExitCode 2
    #throw "Could not find '$exeToRun'"
  }

  # Redirecting output slows things down a bit.
  $writeOutput = {
    if ($EventArgs.Data -ne $null) {
      Write-Host "$($EventArgs.Data)"
    }
  }

  $writeError = {
    if ($EventArgs.Data -ne $null) {
      Write-Error "$($EventArgs.Data)"
    }
  }

  $process = New-Object System.Diagnostics.Process
  $process.EnableRaisingEvents = $true
  Register-ObjectEvent  -InputObject $process -SourceIdentifier "LogOutput_ChocolateyProc" -EventName OutputDataReceived -Action $writeOutput | Out-Null
  Register-ObjectEvent -InputObject $process -SourceIdentifier "LogErrors_ChocolateyProc" -EventName ErrorDataReceived -Action  $writeError | Out-Null

  #$process.StartInfo = New-Object System.Diagnostics.ProcessStartInfo($exeToRun, $wrappedStatements)
  # in case empty args makes a difference, try to be compatible with the older
  # version
  $psi = New-Object System.Diagnostics.ProcessStartInfo
  $psi.FileName = $exeToRun
  if ($wrappedStatements -ne '') {
    $psi.Arguments = "$wrappedStatements"
  }
  $process.StartInfo =  $psi

  # process start info
  $process.StartInfo.RedirectStandardOutput = $true
  $process.StartInfo.RedirectStandardError = $true
  $process.StartInfo.UseShellExecute = $false
  $process.StartInfo.WorkingDirectory = Get-Location
  if ([Environment]::OSVersion.Version -ge (New-Object 'Version' 6,0)){
    Write-Debug "Setting RunAs for elevation"
    $process.StartInfo.Verb = "RunAs"
  }
  if ($minimized) {
    $process.StartInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
  }

  $process.Start() | Out-Null
  if ($process.StartInfo.RedirectStandardOutput) { $process.BeginOutputReadLine() }
  if ($process.StartInfo.RedirectStandardError) { $process.BeginErrorReadLine() }
  $process.WaitForExit()  

  # For some reason this forces the jobs to finish and waits for
  # them to do so. Without this it never finishes.
  Unregister-Event -SourceIdentifier "LogOutput_ChocolateyProc"
  Unregister-Event -SourceIdentifier "LogErrors_ChocolateyProc"

  $exitCode = $process.ExitCode
  $process.Dispose()

  Write-Debug "Command [`"$exeToRun`" $wrappedStatements] exited with `'$exitCode`'."
  if ($validExitCodes -notcontains $exitCode) {
    Set-PowerShellExitCode $exitCode
    throw "Running [`"$exeToRun`" $statements] was not successful. Exit code was '$exitCode'. See log for possible error messages."
  }
 
  Write-Debug "Finishing 'Start-VSChocolateyProcessAsAdmin'"

  return $exitCode
}

# based on Install-ChocolateyPackage (a9519b5), with changes:
# - added recognition of exit codes signifying reboot requirement
# - VS installers are exe
# - local file name is extracted from the url (to avoid passing -getOriginalFileName to Get-ChocolateyWebFile for compatibility with old Chocolatey)
# - removed Get-ChocolateyWebFile options support (for compatibility with old Chocolatey)
# - removed exit code parameters in order to centralize exit code logic
function Install-VSChocolateyPackage
{
    [CmdletBinding()]
    param(
        [string] $packageName,
        [string] $silentArgs = '',
        [string] $url,
        [alias("url64")][string] $url64bit = '',
        [string] $checksum = '',
        [string] $checksumType = '',
        [string] $checksum64 = '',
        [string] $checksumType64 = '',
        [string] $logFilePath
    )

    Write-Debug "Running 'Install-VSChocolateyPackage' for $packageName with url:'$url', args:'$silentArgs', url64bit:'$url64bit', checksum:'$checksum', checksumType:'$checksumType', checksum64:'$checksum64', checksumType64:'$checksumType64', logFilePath:'$logFilePath'";

    $chocTempDir = $env:TEMP
    $tempDir = Join-Path $chocTempDir "$packageName"
    if ($env:packageVersion -ne $null) { $tempDir = Join-Path $tempDir "$env:packageVersion" }

    if (![System.IO.Directory]::Exists($tempDir)) { [System.IO.Directory]::CreateDirectory($tempDir) | Out-Null }
    $urlForFileNameDetermination = $url
    if ($urlForFileNameDetermination -eq '') { $urlForFileNameDetermination = $url64bit }
    if ($urlForFileNameDetermination -like '*.exe') { $localFileName = $urlForFileNameDetermination.Substring($urlForFileNameDetermination.LastIndexOfAny(@('/', '\')) + 1) }
    else { $localFileName = 'vs_setup.exe' }
    $localFilePath = Join-Path $tempDir $localFileName

    $arguments = @{
        packageName = $packageName
        fileFullPath = $localFilePath
        url = $url
        url64bit = $url64bit
        checksum = $checksum
        checksumType = $checksumType
        checksum64 = $checksum64
        checksumType64 = $checksumType64
    }
    Get-ChocolateyWebFile @arguments | Out-Null

    $arguments = @{
        packageName = $packageName
        silentArgs = $silentArgs
        file = $localFilePath
        logFilePath = $logFilePath
    }
    Install-VSChocolateyInstallPackage @arguments
}

# based on Install-ChocolateyInstallPackage (fbe24a8), with changes:
# - added recognition of exit codes signifying reboot requirement
# - VS installers are exe
# - dropped support for chocolateyInstallArguments and chocolateyInstallOverride
# - removed unreferenced parameter
# - refactored logic shared with Uninstall-VSChocolateyPackage to a generic function
# - removed exit code parameters in order to centralize exit code logic
function Install-VSChocolateyInstallPackage {
    [CmdletBinding()]
    param(
        [string] $packageName,
        [string] $silentArgs = '',
        [string] $file,
        [string] $logFilePath
    )
    Write-Debug "Running 'Install-VSChocolateyInstallPackage' for $packageName with file:'$file', silentArgs:'$silentArgs', logFilePath:'$logFilePath'"
    $installMessage = "Installing $packageName..."
    Write-Host $installMessage

    if ($file -eq '' -or $file -eq $null) {
        throw 'Package parameters incorrect, File cannot be empty.'
    }

    Start-VSServicingOperation @PSBoundParameters -operationTexts @('installed', 'installing', 'installation')
}

# based on Uninstall-ChocolateyPackage (01db65b), with changes:
# - added recognition of exit codes signifying reboot requirement
# - VS installers are exe
# - dropped support for chocolateyInstallArguments and chocolateyInstallOverride
# - refactored logic shared with Install-VSChocolateyInstallPackage to a generic function
# - removed exit code parameters in order to centralize exit code logic
function Uninstall-VSChocolateyPackage
{
    [CmdletBinding()]
    param(
        [string] $packageName,
        [string] $silentArgs = '',
        [string] $file
    )
    Write-Debug "Running 'Uninstall-VSChocolateyPackage' for $packageName with silentArgs:'$silentArgs', file:'$file'"

    $installMessage = "Uninstalling $packageName..."
    Write-Host $installMessage

    Start-VSServicingOperation @PSBoundParameters -operationTexts @('uninstalled', 'uninstalling', 'uninstallation')
}

function Start-VSServicingOperation
{
    [CmdletBinding()]
    param(
        [string] $packageName,
        [string] $silentArgs,
        [string] $file,
        [string] $logFilePath,
        [string[]] $operationTexts
    )
    Write-Debug "Running 'Start-VSServicingOperation' for $packageName with silentArgs:'$silentArgs', file:'$file', logFilePath:$logFilePath', operationTexts:'$operationTexts'"

    $frobbed, $frobbing, $frobbage = $operationTexts

    $successExitCodes = @(
        0 # success
    )
    $rebootExitCodes = @(
        3010 # success, restart required
    )
    $priorRebootRequiredExitCodes = @(
        -2147185721 # Restart is required before (un)installation can continue
    )
    $blockExitCodes = @(
        -2147205120, # block, restart not required
        -2147172352 # block, restart required
    )

    $validExitCodes = @()
    if (($successExitCodes | Measure-Object).Count -gt 0) { $validExitCodes += $successExitCodes }
    if (($rebootExitCodes | Measure-Object).Count -gt 0) { $validExitCodes += $rebootExitCodes }
    if (($priorRebootRequiredExitCodes | Measure-Object).Count -gt 0) { $validExitCodes += $priorRebootRequiredExitCodes }
    if (($blockExitCodes | Measure-Object).Count -gt 0) { $validExitCodes += $blockExitCodes }

    $exitCode = Start-VSChocolateyProcessAsAdmin -statements $silentArgs -exeToRun $file -validExitCodes $validExitCodes
    $Env:ChocolateyExitCode = $exitCode
    $warnings = @()
    if (($blockExitCodes | Measure-Object).Count -gt 0 -and $blockExitCodes -contains $exitCode)
    {
        $exceptionMessage = "${packageName} cannot be ${frobbed} on this system."
        $success = $false
        if ($logFilePath -ne '' -and (Test-Path -Path $logFilePath))
        {
            # [0C40:07D8][2016-05-28T23:17:32]i000: MUX:  Stop Block: MinimumOSLevel : This version of Visual Studio requires a computer with a !$!http://go.microsoft.com/fwlink/?LinkID=647155&clcid=0x409!,!newer version of Windows!@!.
            # [0C40:07D8][2016-05-28T23:17:32]i000: MUX:  Stop Block: SystemRebootPendingBlock : The computer needs to be restarted before setup can continue. Please restart the computer and run setup again.
            $blocks = Get-Content -Path $logFilePath `
                | Select-String '(?<=Stop Block: ).+$' `
                | Select-Object -ExpandProperty Matches `
                | Where-Object { $_.Success -eq $true } `
                | Select-Object -ExpandProperty Value `
                | Sort-Object -Unique
            if (($blocks | Measure-Object).Count -gt 0)
            {
                $warnings = @("${packageName} cannot be ${frobbed} due to the following issues:") + $blocks
                $exceptionMessage += " You may attempt to fix the issues listed and try again."
            }
        }
    }
    elseif (($priorRebootRequiredExitCodes | Measure-Object).Count -gt 0 -and $priorRebootRequiredExitCodes -contains $exitCode)
    {
        $exceptionMessage = "The computer must be rebooted before ${frobbing} ${packageName}. Please reboot the computer and run the ${frobbage} again."
        $success = $false
    }
    elseif (($rebootExitCodes | Measure-Object).Count -gt 0 -and $rebootExitCodes -contains $exitCode)
    {
        $needsReboot = $true
        $success = $true
    }
    else
    {
        $needsReboot = $false
        $success = $true
    }

    if ($success)
    {
        if ($needsReboot)
        {
            Write-Warning "${packageName} has been ${frobbed}. However, a reboot is required to finalize the ${frobbage}."
        }
        else
        {
            Write-Host "${packageName} has been ${frobbed}."
        }
    }
    else
    {
        if ($warnings -ne $null)
        {
            $warnings | Write-Warning
        }
        throw $exceptionMessage
    }
}

function Install-VS {
<#
.SYNOPSIS
Installs Visual Studio

.DESCRIPTION
Installs Visual Studio with ability to specify additional features and supply product key.

.PARAMETER PackageName
The name of the VisualStudio package - this is arbitrary.
It's recommended you call it the same as your nuget package id.

.PARAMETER Url
This is the url to download the VS web installer.

.PARAMETER ChecksumSha1
The SHA-1 hash of the VS web installer file.

.EXAMPLE
Install-VS -PackageName VisualStudio2015Community -Url 'http://download.microsoft.com/download/zzz/vs_community.exe' -ChecksumSha1 'ABCDEF0123456789ABCDEF0123456789ABCDEF12'

.OUTPUTS
None

.NOTES
This helper reduces the number of lines one would have to write to download and install Visual Studio.
This method has no error handling built into it.

.LINK
Install-ChocolateyPackage
#>
    [CmdletBinding()]
    param(
      [string] $PackageName,
      [string] $ApplicationName,
      [string] $Url,
      [string] $ChecksumSha1
    )
    if ($Env:ChocolateyPackageDebug -ne $null)
    {
        $VerbosePreference = 'Continue'
        $DebugPreference = 'Continue'
        Write-Warning "VerbosePreference and DebugPreference set to Continue due to the presence of ChocolateyPackageDebug environment variable"
    }
    Write-Debug "Running 'Install-VS' for $PackageName with Url:'$Url' ChecksumSha1:$ChecksumSha1";

    $uninstallKey = Get-VSUninstallRegistryKey -ApplicationName $ApplicationName
    $count = ($uninstallKey | Measure-Object).Count
    if ($count -gt 0)
    {
        Write-Warning "$ApplicationName is already installed. Please use Programs and Features in the Control Panel to modify or repair it."
        return
    }

    $defaultAdminFile = (Join-Path $PSScriptRoot 'AdminDeployment.xml')
    Write-Debug "Default AdminFile: $defaultAdminFile"

    $packageParameters = Parse-Parameters $env:chocolateyPackageParameters
    if ($packageParameters.Length -gt 0) { Write-Debug $packageParameters }

    $adminFile = Generate-AdminFile $packageParameters $defaultAdminFile $PackageName
    Write-Debug "AdminFile: $adminFile"

    Update-AdminFile $packageParameters $adminFile

    $logFilePath = Join-Path $Env:TEMP "${PackageName}.log"
    Write-Debug "Log file path: $logFilePath"
    $silentArgs = Generate-InstallArgumentsString -parameters $packageParameters -adminFile $adminFile -logFilePath $logFilePath

    $arguments = @{
        packageName = $PackageName
        silentArgs = $silentArgs
        url = $Url
        checksum = $ChecksumSha1
        checksumType = 'sha1'
        logFilePath = $logFilePath
    }
    $argumentsDump = ($arguments.GetEnumerator() | % { '-{0}:''{1}''' -f $_.Key,"$($_.Value)" }) -join ' '
    Write-Debug "Install-VSChocolateyPackage $argumentsDump"
    Install-VSChocolateyPackage @arguments
}

function Uninstall-VS {
<#
.SYNOPSIS
Uninstalls Visual Studio

.DESCRIPTION
Uninstalls Visual Studio.

.PARAMETER PackageName
The name of the VisualStudio package.

.PARAMETER ApplicationName
The VisualStudio app name - i.e. 'Microsoft Visual Studio Community 2015'.

.PARAMETER UninstallerName
This name of the installer executable - i.e. 'vs_community.exe'.

.EXAMPLE
Uninstall-VS 'VisualStudio2015Community' 'Microsoft Visual Studio Community 2015' 'vs_community.exe'

.OUTPUTS
None

.NOTES
This helper reduces the number of lines one would have to write to uninstall Visual Studio.
This method has no error handling built into it.

.LINK
Uninstall-ChocolateyPackage
#>
    [CmdletBinding()]
    param(
      [string] $PackageName,
      [string] $ApplicationName,
      [string] $UninstallerName
    )
    if ($Env:ChocolateyPackageDebug -ne $null)
    {
        $VerbosePreference = 'Continue'
        $DebugPreference = 'Continue'
        Write-Warning "VerbosePreference and DebugPreference set to Continue due to the presence of ChocolateyPackageDebug environment variable"
    }
    Write-Debug "Running 'Uninstall-VS' for $PackageName with ApplicationName:'$ApplicationName' UninstallerName:'$UninstallerName'";

    $informMaintainer = "Please report this to the maintainer of this package ($PackageName)."
    $uninstallKey = Get-VSUninstallRegistryKey -ApplicationName $ApplicationName
    $count = ($uninstallKey | Measure-Object).Count
    Write-Debug "Found $count Uninstall key(s)"
    if ($count -eq 0)
    {
        Write-Warning "Uninstall information for $ApplicationName could not be found. This probably means the application was uninstalled outside Chocolatey."
        return
    }
    if ($count -gt 1)
    {
        throw "More than one Uninstall key found for $ApplicationName! $informMaintainer"
    }

    Write-Debug "Using Uninstall key: $($uninstallKey.PSPath)"
    $uninstallString = $uninstallKey | Get-ItemProperty -Name UninstallString | Select-Object -ExpandProperty UninstallString
    Write-Debug "UninstallString: $uninstallString"
    if (-not ($uninstallString -match '^\s*(\"[^\"]+\")|([^\s]+)'))
    {
        throw "UninstallString '$uninstallString' is not of the expected format. $informMaintainer"
    }
    $uninstallerPath = $matches[0].Trim('"')
    Write-Debug "uninstallerPath: $uninstallerPath"
    if ((Split-Path -Path $uninstallerPath -Leaf) -ne $UninstallerName)
    {
        throw "The uninstaller file name is unexpected (uninstallerPath: $uninstallerPath). $informMaintainer"
    }

    $logFilePath = Join-Path $Env:TEMP "${PackageName}_uninstall.log"
    Write-Debug "Log file path: $logFilePath"
    $silentArgs = Generate-UninstallArgumentsString -logFilePath $logFilePath

    $arguments = @{
        packageName = $PackageName
        silentArgs = $silentArgs
        file = $uninstallerPath
    }
    $argumentsDump = ($arguments.GetEnumerator() | % { '-{0}:''{1}''' -f $_.Key,"$($_.Value)" }) -join ' '
    Write-Debug "Uninstall-VSChocolateyPackage $argumentsDump"
    Uninstall-VSChocolateyPackage @arguments
}

Export-ModuleMember Install-VS, Uninstall-VS

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
Visual Studio 2017 Enterprise 15.9.59.0 1121 Wednesday, January 10, 2024 Approved
Visual Studio 2017 Enterprise 15.9.58.0 1710 Sunday, October 15, 2023 Approved
Visual Studio 2017 Enterprise 15.9.57.0 666 Saturday, September 23, 2023 Approved
Visual Studio 2017 Enterprise 15.9.56.0 624 Tuesday, September 5, 2023 Approved
Visual Studio 2017 Enterprise 15.9.55.0 4111 Sunday, June 18, 2023 Approved
Visual Studio 2017 Enterprise 15.9.54.0 2026 Friday, April 21, 2023 Approved
Visual Studio 2017 Enterprise 15.9.53.0 2806 Friday, March 17, 2023 Approved
Visual Studio 2017 Enterprise 15.9.52.0 2649 Thursday, February 23, 2023 Approved
Visual Studio 2017 Enterprise 15.9.51.0 2793 Wednesday, November 16, 2022 Approved
Visual Studio 2017 Enterprise 15.9.50.0 3584 Saturday, August 27, 2022 Approved
Visual Studio 2017 Enterprise 15.9.49.0 3347 Monday, June 20, 2022 Approved
Visual Studio 2017 Enterprise 15.9.48.0 1827 Tuesday, May 17, 2022 Approved
Visual Studio 2017 Enterprise 15.9.47.0 1182 Wednesday, April 20, 2022 Approved
Visual Studio 2017 Enterprise 15.9.46.0 119 Tuesday, April 19, 2022 Approved
Visual Studio 2017 Enterprise 15.9.45.0 1111 Saturday, March 12, 2022 Approved
Visual Studio 2017 Enterprise 15.9.44.0 1623 Thursday, February 10, 2022 Approved
Visual Studio 2017 Enterprise 15.9.43.0 1069 Wednesday, January 12, 2022 Approved
Visual Studio 2017 Enterprise 15.9.42.0 3824 Thursday, December 16, 2021 Approved
Visual Studio 2017 Enterprise 15.9.41.0 4381 Friday, November 12, 2021 Approved
Visual Studio 2017 Enterprise 15.9.40.0 3427 Saturday, October 16, 2021 Approved
Visual Studio 2017 Enterprise 15.9.39.0 1255 Wednesday, September 15, 2021 Approved
Visual Studio 2017 Enterprise 15.9.38.0 931 Sunday, August 22, 2021 Approved
Visual Studio 2017 Enterprise 15.9.37.0 1119 Thursday, July 22, 2021 Approved
Visual Studio 2017 Enterprise 15.9.36.0 3404 Sunday, May 16, 2021 Approved
Visual Studio 2017 Enterprise 15.9.35.0 1338 Saturday, April 17, 2021 Approved
Visual Studio 2017 Enterprise 15.9.34.0 1162 Wednesday, March 10, 2021 Approved
Visual Studio 2017 Enterprise 15.9.33.0 947 Sunday, February 14, 2021 Approved
Visual Studio 2017 Enterprise 15.9.31.0 1944 Wednesday, January 13, 2021 Approved
Visual Studio 2017 Enterprise 15.9.30.0 1243 Wednesday, December 9, 2020 Approved
Visual Studio 2017 Enterprise 15.9.29.0 1288 Tuesday, November 10, 2020 Approved
Visual Studio 2017 Enterprise 15.9.28.0 760 Sunday, October 18, 2020 Approved
Visual Studio 2017 Enterprise 15.9.27.0 1662 Friday, September 11, 2020 Approved
Visual Studio 2017 Enterprise 15.9.26.0 1617 Monday, August 24, 2020 Approved
Visual Studio 2017 Enterprise 15.9.25.0 151 Thursday, October 15, 2020 Approved
Visual Studio 2017 Enterprise 15.9.23.0 7548 Friday, May 15, 2020 Approved
Visual Studio 2017 Enterprise 15.9.22.0 3634 Wednesday, April 15, 2020 Approved
Visual Studio 2017 Enterprise 15.9.21.0 3921 Wednesday, March 11, 2020 Approved
Visual Studio 2017 Enterprise 15.9.20.0 3206 Wednesday, February 12, 2020 Approved
Visual Studio 2017 Enterprise 15.9.19.0 1503 Sunday, February 2, 2020 Approved
Visual Studio 2017 Enterprise 15.9.18.0 8813 Wednesday, December 11, 2019 Approved
Visual Studio 2017 Enterprise 15.9.17.0 10000 Wednesday, October 16, 2019 Approved
Visual Studio 2017 Enterprise 15.9.16.0 4781 Monday, September 16, 2019 Approved
Visual Studio 2017 Enterprise 15.9.15.0 4809 Tuesday, August 20, 2019 Approved
Visual Studio 2017 Enterprise 15.9.11.0 36889 Wednesday, April 10, 2019 Approved
Visual Studio 2017 Enterprise 15.9.10.0 4423 Sunday, March 31, 2019 Approved
Visual Studio 2017 Enterprise 15.9.8.0 8966 Saturday, March 9, 2019 Approved
Visual Studio 2017 Enterprise 15.9.7.0 6798 Thursday, February 21, 2019 Approved
Visual Studio 2017 Enterprise 15.9.4.0 10301 Saturday, January 5, 2019 Approved
Visual Studio 2017 Enterprise 15.9.2.0 7435 Tuesday, November 27, 2018 Approved
Visual Studio 2017 Enterprise 15.9.1.0 2324 Saturday, November 17, 2018 Approved
Visual Studio 2017 Enterprise 15.8.9.0 1487 Wednesday, November 7, 2018 Approved
Visual Studio 2017 Enterprise 15.8.7.0 4408 Wednesday, October 17, 2018 Approved
Visual Studio 2017 Enterprise 15.8.6.0 3225 Tuesday, October 2, 2018 Approved
Visual Studio 2017 Enterprise 15.8.2.0 4603 Monday, September 3, 2018 Approved
Visual Studio 2017 Enterprise 15.8.0.0 1500 Thursday, August 16, 2018 Approved

15.0.25428.1: Some of the feature codes have changed in Preview 3. Please verify and update package parameters in customized installations.

Discussion for the Visual Studio "15" Enterprise (Preview 3) Package

Ground Rules:

  • This discussion is only about Visual Studio "15" Enterprise (Preview 3) and the Visual Studio "15" Enterprise (Preview 3) package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Visual Studio "15" Enterprise (Preview 3), or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus