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:

331,771,149

Downloads of v 0.9.9.7:

194,915

Last Update:

20 Jun 2015

Package Maintainer(s):

Software Author(s):

  • Rob Reynolds
  • The Chocolatey Team

Tags:

nuget apt-get machine repository chocolatey

Chocolatey

This is not the latest version of Chocolatey available.

  • 1
  • 2
  • 3

0.9.9.7 | Updated: 20 Jun 2015

Downloads:

331,771,149

Downloads of v 0.9.9.7:

194,915

Software Author(s):

  • Rob Reynolds
  • The Chocolatey Team

Chocolatey 0.9.9.7

This is not the latest version of Chocolatey available.

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Unknown


Verification Testing Unknown


Scan Testing Resulted in Flagged:

This package was submitted (and approved) prior to automated virus scanning integration into the package moderation processs.

We recommend clicking the "Details" link to make your own decision on installing this package.

Details
NOTE

Please visit our documentation to learn how to install/uninstall Chocolatey.

To upgrade Chocolatey, run the following command from the command line or from PowerShell:

>
Package Approved

This package was approved as a trusted package on 20 Jun 2015.

Description

Chocolatey is a package manager for Windows (like apt-get but for Windows). It was designed to be a decentralized framework for quickly installing applications and tools that you need. It is built on the NuGet infrastructure currently using PowerShell as its focus for delivering packages from the distros to your door, err computer.

Chocolatey is brought to you by the work and inspiration of the community, the work and thankless nights of the Chocolatey Team, with Rob heading up the direction.

You can host your own sources and add them to Chocolatey, you can extend Chocolatey's capabilities, and folks, it's only going to get better.

Commands

There are quite a few commands you can call - you should check out the command reference. Here are the most common:

  • Search - choco search something
  • List - choco list -lo
  • Install - choco install baretail
  • Pin - choco pin windirstat
  • Upgrade - choco upgrade baretail
  • Uninstall - choco uninstall baretail

Alternative installation sources (TEMPORARILY DISABLED IN 0.9.9):

  • Install ruby gem - choco install compass -source ruby
  • Install python egg - choco install sphynx -source python
  • Install windows feature - choco install IIS -source windowsfeatures
  • Install webpi feature - choco install IIS7.5Express -source webpi

For more advanced commands and switches, use choco -? or choco command -h. You can also look at the command reference, including how you can force a package to install the x86 version of a package.

Create Packages?

We have some great guidance on how to do that. Where? I'll give you a hint, it rhymes with sticky! Wiki!

In that mess there is a link to the Helper Reference.


tools\chocolateyInstall.ps1
$toolsPath = (Split-Path -parent $MyInvocation.MyCommand.Definition)

# ensure module loading preference is on
$PSModuleAutoLoadingPreference = "All";

$modules = Get-ChildItem $toolsPath -Filter *.psm1
$modules | ForEach-Object {
														$psm1File = $_.FullName;
														$moduleName = $([System.IO.Path]::GetFileNameWithoutExtension($psm1File))
														remove-module $moduleName -ErrorAction SilentlyContinue;
														import-module -name  $psm1File;
													}

Initialize-Chocolatey
tools\chocolateyInstall\choco.exe
md5: 33270291016FBD8A85549923646470FD | sha1: 1EAFEE1D5FA72C8CA74D51BE5892B3366539CC74
tools\chocolateyInstall\choco.exe.ignore
 
tools\chocolateysetup.psm1
$thisScriptFolder = (Split-Path -parent $MyInvocation.MyCommand.Definition)
$chocInstallVariableName = "ChocolateyInstall"
$sysDrive = $env:SystemDrive
$tempDir = $env:TEMP
$defaultChocolateyPathOld = "$sysDrive\Chocolatey"
#$ErrorActionPreference = 'Stop'
$debugModeParams = $null

function Initialize-Chocolatey {
<#
  .DESCRIPTION
    This will initialize the Chocolatey tool by
      a) setting up the "nugetPath" (the location where all chocolatey nuget packages will be installed)
      b) Installs chocolatey into the "nugetPath"
            c) Instals .net 4.0 if needed
      d) Adds chocolaty to the PATH environment variable so you have access to the chocolatey|cinst commands.
  .PARAMETER  NuGetPath
    Allows you to override the default path of (C:\Chocolatey\) by specifying a directory chocolaty will install nuget packages.

  .EXAMPLE
    C:\PS> Initialize-Chocolatey

    Installs chocolatey into the default C:\Chocolatey\ directory.

  .EXAMPLE
    C:\PS> Initialize-Chocolatey -nugetPath "D:\ChocolateyInstalledNuGets\"

    Installs chocolatey into the custom directory D:\ChocolateyInstalledNuGets\

#>
param(
  [Parameter(Mandatory=$false)][string]$chocolateyPath = ''
)
  Write-Debug "Initialize-Chocolatey"

  if ($env:ChocolateyEnvironmentDebug -eq 'true') {
    $debugModeParams = '-dv'
  }

  Install-DotNet4IfMissing

  $chocoNew = Join-Path $thisScriptFolder 'chocolateyInstall\choco.exe'
  & $chocoNew unpackself -fy $debugModeParams

  $installModule = Join-Path $thisScriptFolder 'chocolateyInstall\helpers\chocolateyInstaller.psm1'
  Import-Module $installModule -Force

  if ($chocolateyPath -eq '') {
    $programData = [Environment]::GetFolderPath("CommonApplicationData")
    $chocolateyPath = Join-Path "$programData" 'chocolatey'
  }

  # variable to allow insecure directory:
  $allowInsecureRootInstall = $false
  if ($env:ChocolateyAllowInsecureRootDirectory -eq 'true') { $allowInsecureRootInstall = $true }

  # if we have an already environment variable path, use it.
  $alreadyInitializedNugetPath = Get-ChocolateyInstallFolder
  if ($alreadyInitializedNugetPath -and $alreadyInitializedNugetPath -ne $chocolateyPath -and ($allowInsecureRootInstall -or $alreadyInitializedNugetPath -ne $defaultChocolateyPathOld)){
    $chocolateyPath = $alreadyInitializedNugetPath
  }
  else {
    Set-ChocolateyInstallFolder $chocolateyPath
  }
  Create-DirectoryIfNotExists $chocolateyPath

  Ensure-UserPermissions $chocolateyPath

  #set up variables to add
  $chocolateyExePath = Join-Path $chocolateyPath 'bin'
  $chocolateyLibPath = Join-Path $chocolateyPath 'lib'

  if ($tempDir -eq $null) {
    $tempDir = Join-Path $chocolateyPath 'temp'
    Create-DirectoryIfNotExists $tempDir
  }

  $yourPkgPath = [System.IO.Path]::Combine($chocolateyLibPath,"yourPackageName")
@"
We are setting up the Chocolatey package repository.
The packages themselves go to `'$chocolateyLibPath`'
  (i.e. $yourPkgPath).
A shim file for the command line goes to `'$chocolateyExePath`'
  and points to an executable in `'$yourPkgPath`'.

Creating Chocolatey folders if they do not already exist.

"@ | Write-Output

  Write-Warning "You can safely ignore errors related to missing log files when `n  upgrading from a version of Chocolatey less than 0.9.9. `n  'Batch file could not be found' is also safe to ignore. `n  'The system cannot find the file specified' - also safe."

  #create the base structure if it doesn't exist
  Create-DirectoryIfNotExists $chocolateyExePath
  Create-DirectoryIfNotExists $chocolateyLibPath

  Install-ChocolateyFiles $chocolateyPath
  Ensure-ChocolateyLibFiles $chocolateyLibPath

  Install-ChocolateyBinFiles $chocolateyPath $chocolateyExePath

  $chocolateyExePathVariable = $chocolateyExePath.ToLower().Replace($chocolateyPath.ToLower(), "%DIR%..\").Replace("\\","\")
  Initialize-ChocolateyPath $chocolateyExePath $chocolateyExePathVariable
  Process-ChocolateyBinFiles $chocolateyExePath $chocolateyExePathVariable

  $realModule = Join-Path $chocolateyPath "helpers\chocolateyInstaller.psm1"
  Import-Module "$realModule" -Force

  if (-not $allowInsecureRootInstall -and (Test-Path($defaultChocolateyPathOld))) {
    Upgrade-OldChocolateyInstall $defaultChocolateyPathOld $chocolateyPath
    Install-ChocolateyBinFiles $chocolateyPath $chocolateyExePath
  }

@"
Chocolatey (choco.exe) is now ready.
You can call choco from anywhere, command line or powershell by typing choco.
Run choco /? for a list of functions.
You may need to shut down and restart powershell and/or consoles
 first prior to using choco.
"@ | write-Output

  if (-not $allowInsecureRootInstall) {
    Remove-OldChocolateyInstall $defaultChocolateyPathOld
  }
}

function Set-ChocolateyInstallFolder {
param(
  [string]$folder
)
  Write-Debug "Set-ChocolateyInstallFolder"

  $environmentTarget = [System.EnvironmentVariableTarget]::User
  # removing old variable
  Install-ChocolateyEnvironmentVariable -variableName "$chocInstallVariableName" -variableValue $null -variableType $environmentTarget
  if (Test-ProcessAdminRights) {
    Write-Debug "Administrator installing so using Machine environment variable target instead of User."
    $environmentTarget = [System.EnvironmentVariableTarget]::Machine
    # removing old variable
    Install-ChocolateyEnvironmentVariable -variableName "$chocInstallVariableName" -variableValue $null -variableType $environmentTarget
  } else {
    Write-Warning "Setting ChocolateyInstall Environment Variable on USER and not SYSTEM variables.`n  This is due to either non-administrator install OR the process you are running is not being run as an Administrator."
  }

  Write-Output "Creating $chocInstallVariableName as an environment variable (targeting `'$environmentTarget`') `n  Setting $chocInstallVariableName to `'$folder`'"
  Write-Warning "It's very likely you will need to close and reopen your shell `n  before you can use choco."
  Install-ChocolateyEnvironmentVariable -variableName "$chocInstallVariableName" -variableValue "$folder" -variableType $environmentTarget
}

function Get-ChocolateyInstallFolder(){
  Write-Debug "Get-ChocolateyInstallFolder"
  [Environment]::GetEnvironmentVariable($chocInstallVariableName)
}

function Create-DirectoryIfNotExists($folderName){
  Write-Debug "Create-DirectoryIfNotExists"
  if (![System.IO.Directory]::Exists($folderName)) { [System.IO.Directory]::CreateDirectory($folderName) | Out-Null }
}

function Ensure-UserPermissions {
param(
  [string]$folder
)
  Write-Debug "Ensure-UserPermissions"

  if (!(Test-ProcessAdminRights)) {
    Write-Warning "User is not running elevated, cannot set user permissions."
    return
  }

  $currentEA = $ErrorActionPreference
  $ErrorActionPreference = 'Stop'
  try {
    # get current user
    $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
    # get current acl
    $acl = Get-Acl $folder

    # define rule to set
    $rights = "Modify"
    $userAccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($currentUser.Name, $rights, "Allow")

    # this is idempotent
    Write-Output "Adding Modify permission for current user to '$folder'"
    $acl.SetAccessRuleProtection($false,$true)
    $acl.SetAccessRule($userAccessRule)
    Set-Acl $folder $acl
  } catch {
    Write-Warning "Not able to set permissions for user."
  }
  $ErrorActionPreference = $currentEA
}

function Upgrade-OldChocolateyInstall {
param(
  [string]$chocolateyPathOld = "$sysDrive\Chocolatey",
  [string]$chocolateyPath =  "$($env:ALLUSERSPROFILE)\chocolatey"
)

  Write-Debug "Upgrade-OldChocolateyInstall"

  if (Test-Path $chocolateyPathOld) {
    Write-Output "Attempting to upgrade `'$chocolateyPathOld`' to `'$chocolateyPath`'."
    Write-Warning "Copying the contents of `'$chocolateyPathOld`' to `'$chocolateyPath`'. `n This step may fail if you have anything in this folder running or locked."
    Write-Output 'If it fails, just manually copy the rest of the items out and then delete the folder.'
    Write-Host "!!!! ATTN: YOU WILL NEED TO CLOSE AND REOPEN YOUR SHELL !!!!" -ForegroundColor Magenta -BackgroundColor Black

    $chocolateyExePathOld = Join-Path $chocolateyPathOld 'bin'
    'Machine', 'User' |
    % {
      $path = Get-EnvironmentVariable -Name 'PATH' -Scope $_
      $updatedPath = [System.Text.RegularExpressions.Regex]::Replace($path,[System.Text.RegularExpressions.Regex]::Escape($chocolateyExePathOld) + '(?>;)?', '', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
      if ($updatedPath -ne $path) {
        Write-Output "Updating `'$_`' PATH to reflect removal of '$chocolateyPathOld'."
        try {
          Set-EnvironmentVariable -Name 'Path' -Value $updatedPath -Scope $_ -ErrorAction Stop
        } catch {
          Write-Warning "Was not able to remove the old environment variable from PATH. You will need to do this manually"
        }

      }
    }

    Copy-Item "$chocolateyPathOld\lib\*" "$chocolateyPath\lib" -force -recurse

    $from = "$chocolateyPathOld\bin"
    $to = "$chocolateyPath\bin"
    $exclude = @("choco.exe", "chocolatey.exe", "cinst.exe", "clist.exe", "cpack.exe", "cpush.exe", "cuninst.exe", "cup.exe", "cver.exe", "RefreshEnv.cmd")
    Get-ChildItem -Path $from -recurse -Exclude $exclude |
      % {
        Write-Debug "Copying $_ `n to $to"
        if ($_.PSIsContainer) {
          Copy-Item $_ -Destination (Join-Path $to $_.Parent.FullName.Substring($from.length)) -Force -ErrorAction SilentlyContinue
        } else {
          $fileToMove = (Join-Path $to $_.FullName.Substring($from.length))
          try {
           Copy-Item $_ -Destination $fileToMove -Exclude $exclude -Force -ErrorAction Stop
          }
          catch {
            Write-Warning "Was not able to move `'$fileToMove`'. You may need to reinstall the shim"
          }
        }
      }
  }
}

function Remove-OldChocolateyInstall {
param(
  [string]$chocolateyPathOld = "$sysDrive\Chocolatey"
)
  Write-Debug "Remove-OldChocolateyInstall"

  if (Test-Path $chocolateyPathOld) {
    Write-Warning "This action will result in Log Errors, you can safely ignore those. `n You may need to finish removing '$chocolateyPathOld' manually."
    try {
      Get-ChildItem -Path "$chocolateyPathOld" | % {
        if (Test-Path $_.FullName) {
          Write-Debug "Removing $_ unless matches .log"
          Remove-Item $_.FullName -exclude *.log -recurse -force -ErrorAction SilentlyContinue
        }
      }

      Write-Output "Attempting to remove `'$chocolateyPathOld`'. This may fail if something in the folder is being used or locked."
      Remove-Item "$($chocolateyPathOld)" -force -recurse -ErrorAction Stop
    }
    catch {
      Write-Warning "Was not able to remove `'$chocolateyPathOld`'. You will need to manually remove it."
    }
  }
}

function Install-ChocolateyFiles {
param(
  [string]$chocolateyPath
)
  Write-Debug "Install-ChocolateyFiles"

  Write-Debug "Removing install files in chocolateyInstall, helpers, redirects, and tools"
  "$chocolateyPath\chocolateyInstall", "$chocolateyPath\helpers", "$chocolateyPath\redirects", "$chocolateyPath\tools" | % {
    #Write-Debug "Checking path $_"

    if (Test-Path $_) {
      Get-ChildItem -Path "$_" | % {
        #Write-Debug "Checking child path $_ ($($_.FullName))"
        if (Test-Path $_.FullName) {
          Write-Debug "Removing $_ unless matches .log"
          Remove-Item $_.FullName -exclude *.log -recurse -force -ErrorAction SilentlyContinue
        }
      }
    }
  }

  Write-Debug "Attempting to move choco.exe to choco.exe.old so we can place the new version here."
  # rename the currently running process / it will be locked if it exists
  $chocoExe = Join-Path $chocolateyPath 'choco.exe'
  if (Test-Path ($chocoExe)) {
    Write-Debug "Renaming '$chocoExe' to '$chocoExe.old'"
    try {
      Remove-Item "$chocoExe.old" -force -ErrorAction SilentlyContinue
      Move-Item $chocoExe "$chocoExe.old" -force -ErrorAction SilentlyContinue
    }
    catch {
      Write-Warning "Was not able to rename `'$chocoExe`' to `'$chocoExe.old`'."
    }
  }

  Write-Debug "Unpacking files required for Chocolatey."
  $chocInstallFolder = Join-Path $thisScriptFolder "chocolateyInstall"
  $chocoExe = Join-Path $chocInstallFolder 'choco.exe'
  $chocoExeDest = Join-Path $chocolateyPath 'choco.exe'
  Copy-Item $chocoExe $chocoExeDest -force

  & $chocoExeDest unpackself -fy $debugModeParams
}

function Ensure-ChocolateyLibFiles {
param(
  [string]$chocolateyLibPath
)
  Write-Debug "Ensure-ChocolateyLibFiles"
  $chocoPkgDirectory = Join-Path $chocolateyLibPath 'chocolatey'

  if ( -not (Test-Path("$chocoPkgDirectory\chocolatey.nupkg")) ) {
    Write-Output "Ensuring '$chocoPkgDirectory' exists."
    Create-DirectoryIfNotExists $chocoPkgDirectory

    $chocoPkg = Get-ChildItem "$thisScriptFolder/../../" | ?{$_.name -match "^chocolatey.*nupkg"} | Sort name -Descending | Select -First 1
    if ($chocoPkg -ne '') { $chocoPkg = $chocoPkg.FullName }
    "$tempDir\chocolatey.zip", "$chocoPkg" | % {
      if ($_ -ne $null -and $_ -ne '') {
        if (Test-Path $_) {
          Copy-Item $_ "$chocoPkgDirectory\chocolatey.nupkg" -force -ErrorAction SilentlyContinue
        }
      }
    }
  }
}

function Install-ChocolateyBinFiles {
param(
  [string] $chocolateyPath,
  [string] $chocolateyExePath
)
  Write-Debug "Install-ChocolateyBinFiles"
  Write-Debug "Installing the bin file redirects"
  $redirectsPath = Join-Path $chocolateyPath 'redirects'
  if (!(Test-Path "$redirectsPath")) {
    Write-Warning "$redirectsPath does not exist"
    return
  }

  $exeFiles = Get-ChildItem "$redirectsPath" -include @("*.exe","*.cmd") -recurse
  foreach ($exeFile in $exeFiles) {
    $exeFilePath = $exeFile.FullName
    $exeFileName = [System.IO.Path]::GetFileName("$exeFilePath")
    $binFilePath = Join-Path $chocolateyExePath $exeFileName
    $binFilePathRename = $binFilePath + '.old'
    $batchFilePath = $binFilePath.Replace(".exe",".bat")
    $bashFilePath = $binFilePath.Replace(".exe","")
    if (Test-Path ($batchFilePath)) { Remove-Item $batchFilePath -force -ErrorAction SilentlyContinue }
    if (Test-Path ($bashFilePath)) { Remove-Item $bashFilePath -force -ErrorAction SilentlyContinue }
    if (Test-Path ($binFilePathRename)) {
      try {
        Write-Debug "Attempting to remove $binFilePathRename"
        Remove-Item $binFilePathRename -force -ErrorAction Stop
      }
      catch {
        Write-Warning "Was not able to remove `'$binFilePathRename`'. This may cause errors."
      }
    }
    if (Test-Path ($binFilePath)) {
     try {
        Write-Debug "Attempting to rename $binFilePath to $binFilePathRename"
        Move-Item -path $binFilePath -destination $binFilePathRename -force -ErrorAction Stop
      }
      catch {
        Write-Warning "Was not able to rename `'$binFilePath`' to `'$binFilePathRename`'."
      }
    }

    try {
      Write-Debug "Attempting to copy $exeFilePath to $binFilePath"
      Copy-Item -path $exeFilePath -destination $binFilePath -force -ErrorAction Stop
    }
    catch {
      Write-Warning "Was not able to replace `'$binFilePath`' with `'$exeFilePath`'. You may need to do this manually."
    }

    $commandShortcut = [System.IO.Path]::GetFileNameWithoutExtension("$exeFilePath")
    Write-Debug "Added command $commandShortcut"
  }
}

function Initialize-ChocolateyPath {
param(
  [string]$chocolateyExePath = "$($env:ALLUSERSPROFILE)\chocolatey\bin",
  [string]$chocolateyExePathVariable = "%$($chocInstallVariableName)%\bin"
)
  Write-Debug "Initialize-ChocolateyPath"
  Write-Debug "Initializing Chocolatey Path if required"
  $environmentTarget = [System.EnvironmentVariableTarget]::User
  if (Test-ProcessAdminRights) {
    Write-Debug "Administrator installing so using Machine environment variable target instead of User."
    $environmentTarget = [System.EnvironmentVariableTarget]::Machine
  } else {
    Write-Warning "Setting ChocolateyInstall Path on USER PATH and not SYSTEM Path.`n  This is due to either non-administrator install OR the process you are running is not being run as an Administrator."
  }

  Install-ChocolateyPath -pathToInstall "$chocolateyExePath" -pathType $environmentTarget
}

function Process-ChocolateyBinFiles {
param(
  [string]$chocolateyExePath = "$($env:ALLUSERSPROFILE)\chocolatey\bin",
  [string]$chocolateyExePathVariable = "%$($chocInstallVariableName)%\bin"
)
  Write-Debug "Process-ChocolateyBinFiles"
  $processedMarkerFile = Join-Path $chocolateyExePath '_processed.txt'
  if (!(test-path $processedMarkerFile)) {
    $files = get-childitem $chocolateyExePath -include *.bat -recurse
    if ($files -ne $null -and $files.Count -gt 0) {
      Write-Debug "Processing Bin files"
      foreach ($file in $files) {
        Write-Output "Processing $($file.Name) to make it portable"
        $fileStream = [System.IO.File]::Open("$file", 'Open', 'Read', 'ReadWrite')
        $reader = New-Object System.IO.StreamReader($fileStream)
        $fileText = $reader.ReadToEnd()
        $reader.Close()
        $fileStream.Close()

        $fileText = $fileText.ToLower().Replace("`"" + $chocolateyPath.ToLower(), "SET DIR=%~dp0%`n""%DIR%..\").Replace("\\","\")

        Set-Content $file -Value $fileText -Encoding Ascii
      }
    }

    Set-Content $processedMarkerFile -Value "$([System.DateTime]::Now.Date)" -Encoding Ascii
  }
}

$netFx4InstallTries = 0

function Install-DotNet4IfMissing {
param(
  $forceFxInstall = $false
)
  # we can't take advantage of any chocolatey module functions, because they
  # haven't been unpacked because they require .NET Framework 4.0

  Write-Debug "Install-DotNet4IfMissing"
  if ([IntPtr]::Size -eq 8) {$fx="framework64"} else {$fx="framework"}

  $NetFx4ClientUrl = 'http://download.microsoft.com/download/5/6/2/562A10F9-C9F4-4313-A044-9C94E0A8FAC8/dotNetFx40_Client_x86_x64.exe'
  $NetFx4FullUrl = 'http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe'
  $NetFx4Url = $NetFx4FullUrl
  $NetFx4Path = "$tempDir"
  $NetFx4InstallerFile = 'dotNetFx40_Full_x86_x64.exe'
  $NetFx4Installer = Join-Path $NetFx4Path $NetFx4InstallerFile

  if(!(test-path "$env:windir\Microsoft.Net\$fx\v4.0.30319") -or $forceFxInstall) {
    if (!(Test-Path $NetFx4Path)) {
      Write-Host "Creating folder `'$NetFx4Path`'"
      $null = New-Item -Path "$NetFx4Path" -ItemType Directory
    }

    $netFx4InstallTries += 1

    if (!(Test-Path $NetFx4Installer)) {
      Write-Host "Downloading `'$NetFx4Url`' to `'$NetFx4Installer`' - the installer is 40+ MBs, so this could take awhile on a slow connection."
      (New-Object Net.WebClient).DownloadFile("$NetFx4Url","$NetFx4Installer")
    }

    $psi = New-Object System.Diagnostics.ProcessStartInfo
    $psi.WorkingDirectory = "$NetFx4Path"
    $psi.FileName = "$NetFx4InstallerFile"
    # https://msdn.microsoft.com/library/ee942965(v=VS.100).aspx#command_line_options
    # http://blogs.msdn.com/b/astebner/archive/2010/05/12/10011664.aspx
    # For the actual setup.exe (if you want to unpack first) - /repair /x86 /x64 /ia64 /parameterfolder Client /q /norestart
    $psi.Arguments = "/q /norestart /repair"

    Write-Host "Installing `'$NetFx4Installer`' - this may take awhile with no output."
    $s = [System.Diagnostics.Process]::Start($psi);
    $s.WaitForExit();
    if ($s.ExitCode -ne 0 -and $s.ExitCode -ne 3010) {
      if ($netFx4InstallTries -eq 2) {
        Write-Error ".NET Framework install failed with exit code `'$($s.ExitCode)`'. `n This will cause the rest of the install to fail."
        throw "Error installing .NET Framework 4.0 (exit code $($s.ExitCode)). `n Please install the .NET Framework 4.0 manually and then try to install Chocolatey again. `n Download at `'$NetFx4Url`'"
      } else {
        Write-Warning "First try of .NET framework install failed with exit code `'$($s.ExitCode)`'. Trying again."
        Install-DotNet4IfMissing $true
      }
    }
  }
}

Export-ModuleMember -function Initialize-Chocolatey;
tools\init.ps1
param($installPath, $toolsPath, $package, $project)

$modules = Get-ChildItem $ToolsPath -Filter *.psm1
$modules | ForEach-Object { import-module -name  $_.FullName }

@"
========================
Chocolatey
========================
Welcome to Chocolatey, your local machine repository built on the NuGet infrastructure. Chocolatey allows you to install application packages to your machine with the goodness of a #chocolatey #nuget combo. 
Application executables get added to the path automatically so you can call them from anywhere (command line/powershell prompt), not just in Visual Studio.

Lets get Chocolatey!
----------
Visual Studio -
----------
Please run Initialize-Chocolatey one time per machine to set up the repository. 
If you are upgrading, please remember to run Initialize-Chocolatey again.
After you have run Initiliaze-Chocolatey, you can safely uninstall the chocolatey package from your current Visual Studio solution.
----------
Alternative NuGet -
----------
If you are not using NuGet in Visual Studio, please navigate to the directory with the chocolateysetup.psm1 and run that in Powershell, followed by Initialize-Chocolatey.
Upgrade is the same, just run Initialize-Chocolatey again.
----------
Once you've run initialize or upgrade, you can uninstall this package from the local project without affecting your chocolatey repository.
========================
"@ | Write-Host

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.

Version Downloads Last Updated Status
Chocolatey 2.2.0 3346716 Wednesday, July 26, 2023 Exempted
Chocolatey 2.1.0 6327881 Thursday, June 29, 2023 Exempted
Chocolatey 2.1.0-alpha-20230614 2147 Wednesday, June 14, 2023 Exempted
Chocolatey 2.1.0-alpha-20230608 948 Thursday, June 8, 2023 Exempted
Chocolatey 2.0.0 9636582 Wednesday, May 31, 2023 Exempted
Chocolatey 2.0.0-beta-20230426 4068 Wednesday, April 26, 2023 Exempted
Chocolatey 2.0.0-beta-20230412 1709 Wednesday, April 12, 2023 Exempted
Chocolatey 2.0.0-beta-20230321 2014 Tuesday, March 21, 2023 Exempted
Chocolatey 2.0.0-alpha-20230307 1304 Tuesday, March 7, 2023 Exempted
Chocolatey 2.0.0-alpha-20230221 1118 Tuesday, February 21, 2023 Exempted
Chocolatey 2.0.0-alpha-20230124 1147 Tuesday, January 24, 2023 Exempted
Chocolatey 1.4.0 2750095 Wednesday, May 10, 2023 Exempted
Chocolatey 1.3.1 5214061 Tuesday, March 14, 2023 Exempted
Chocolatey 1.3.0 3246091 Wednesday, February 15, 2023 Exempted
Chocolatey 1.2.1 6478173 Tuesday, December 6, 2022 Approved
Chocolatey 1.2.0 1717982 Wednesday, October 19, 2022 Approved
Chocolatey 1.1.0 8366544 Wednesday, March 30, 2022 Exempted
Chocolatey 1.0.1 1055558 Thursday, March 24, 2022 Exempted
Chocolatey 1.0.0 872565 Monday, March 21, 2022 Exempted
Chocolatey 0.12.1 4190990 Tuesday, January 25, 2022 Exempted
Chocolatey 0.12.0 1089042 Tuesday, January 18, 2022 Exempted
Chocolatey 0.11.3 5642628 Wednesday, October 27, 2021 Exempted
Chocolatey 0.11.2 6979396 Thursday, September 23, 2021 Exempted
Chocolatey 0.11.1 3907943 Thursday, September 2, 2021 Exempted
Chocolatey 0.10.16-beta-20200806 15045 Thursday, August 6, 2020 Approved
Chocolatey 0.10.15 71330650 Monday, June 3, 2019 Approved
Chocolatey 0.10.15-beta-20190531 1169 Friday, May 31, 2019 Approved
Chocolatey 0.10.14 510477 Thursday, May 30, 2019 Approved
Chocolatey 0.10.14-beta-20190418 5577 Thursday, April 18, 2019 Approved
Chocolatey 0.10.14-beta-20190402 3000 Tuesday, April 2, 2019 Approved
Chocolatey 0.10.14-beta-20190321 2511 Friday, March 22, 2019 Approved
Chocolatey 0.10.13 7772699 Friday, March 15, 2019 Approved
Chocolatey 0.10.12 152458 Friday, March 15, 2019 Approved
Chocolatey 0.10.12-beta-20181011 15335 Friday, October 12, 2018 Approved
Chocolatey 0.10.12-beta-20181009 874 Tuesday, October 9, 2018 Approved
Chocolatey 0.10.11 29153124 Friday, May 4, 2018 Approved
Chocolatey 0.10.10 2954378 Thursday, April 12, 2018 Approved
Chocolatey 0.10.9 5426941 Sunday, March 25, 2018 Approved
Chocolatey 0.10.9-beta-20180223 3730 Friday, February 23, 2018 Approved
Chocolatey 0.10.8 24666777 Wednesday, August 30, 2017 Approved
Chocolatey 0.10.8-beta-20170806 5227 Monday, August 7, 2017 Approved
Chocolatey 0.10.7 18321444 Thursday, June 8, 2017 Approved
Chocolatey 0.10.6.1 847819 Saturday, June 3, 2017 Approved
Chocolatey 0.10.6 413296 Thursday, June 1, 2017 Approved
Chocolatey 0.10.6-beta-20170531 993 Thursday, June 1, 2017 Approved
Chocolatey 0.10.6-beta-20170503 8200 Wednesday, May 3, 2017 Approved
Chocolatey 0.10.5 18050382 Thursday, March 30, 2017 Approved
Chocolatey 0.10.4 174250 Thursday, March 30, 2017 Approved
Chocolatey 0.10.4-beta1-20170326 874 Sunday, March 26, 2017 Approved
Chocolatey 0.10.4-beta1-20170323 728 Thursday, March 23, 2017 Approved
Chocolatey 0.10.3 25541706 Friday, October 7, 2016 Approved
Chocolatey 0.10.2 686018 Friday, September 30, 2016 Approved
Chocolatey 0.10.1 2005576 Monday, September 19, 2016 Approved
Chocolatey 0.10.0 3815822 Thursday, August 11, 2016 Approved
Chocolatey 0.9.10.3 1920496 Thursday, June 23, 2016 Approved
Chocolatey 0.9.10.2 2954 Sunday, June 19, 2016 Approved
Chocolatey 0.9.10.1 901 Saturday, June 18, 2016 Approved
Chocolatey 0.9.10 2345 Friday, June 17, 2016 Approved
Chocolatey 0.9.10-rc1 674 Monday, June 13, 2016 Approved
Chocolatey 0.9.10-beta-20160612 639 Sunday, June 12, 2016 Approved
Chocolatey 0.9.10-beta-20160531 641 Tuesday, May 31, 2016 Approved
Chocolatey 0.9.10-beta-20160528 598 Saturday, May 28, 2016 Approved
Chocolatey 0.9.10-beta-20160527 676 Friday, May 27, 2016 Approved
Chocolatey 0.9.10-beta-20160524 650 Wednesday, May 25, 2016 Approved
Chocolatey 0.9.10-beta-20160509 734 Monday, May 9, 2016 Approved
Chocolatey 0.9.10-beta-20160506 656 Friday, May 6, 2016 Approved
Chocolatey 0.9.10-beta-20160505 614 Thursday, May 5, 2016 Approved
Chocolatey 0.9.10-beta-20160503 631 Tuesday, May 3, 2016 Approved
Chocolatey 0.9.10-beta-20160422 991 Friday, April 22, 2016 Approved
Chocolatey 0.9.10-beta-20160411 1119 Monday, April 11, 2016 Approved
Chocolatey 0.9.10-beta-20160402 1059 Saturday, April 2, 2016 Approved
Chocolatey 0.9.10-beta-20160330 652 Thursday, March 31, 2016 Exempted
Chocolatey 0.9.10-beta-20160328 765 Tuesday, March 29, 2016 Approved
Chocolatey 0.9.10-beta-20160325 792 Friday, March 25, 2016 Approved
Chocolatey 0.9.10-beta-20160323 826 Wednesday, March 23, 2016 Approved
Chocolatey 0.9.10-beta-20160322 605 Wednesday, March 23, 2016 Approved
Chocolatey 0.9.10-beta-20160320 798 Sunday, March 20, 2016 Approved
Chocolatey 0.9.10-beta-20160318 695 Friday, March 18, 2016 Approved
Chocolatey 0.9.10-beta-20160314 839 Monday, March 14, 2016 Approved
Chocolatey 0.9.10-beta-20160311 764 Friday, March 11, 2016 Approved
Chocolatey 0.9.10-beta-20160302 978 Wednesday, March 2, 2016 Approved
Chocolatey 0.9.10-beta-20160215 1113 Monday, February 15, 2016 Approved
Chocolatey 0.9.10-beta-20160212 913 Friday, February 12, 2016 Approved
Chocolatey 0.9.10-beta-20160205 1026 Friday, February 5, 2016 Approved
Chocolatey 0.9.9.12 387220 Friday, March 18, 2016 Approved
Chocolatey 0.9.9.11 8574091 Tuesday, October 6, 2015 Approved
Chocolatey 0.9.9.10 382187 Saturday, October 3, 2015 Approved
Chocolatey 0.9.9.9 1252695 Friday, October 2, 2015 Approved
Chocolatey 0.9.9.8 5627947 Saturday, June 27, 2015 Approved
Chocolatey 0.9.9.7 194915 Saturday, June 20, 2015 Approved
Chocolatey 0.9.9.6 831187 Sunday, May 17, 2015 Approved
Chocolatey 0.9.9.5 546959 Monday, April 20, 2015 Approved
Chocolatey 0.9.9.4 515953 Monday, March 30, 2015 Approved
Chocolatey 0.9.9.3 3524 Sunday, March 29, 2015 Approved
Chocolatey 0.9.9.2 25796 Saturday, March 7, 2015 Approved
Chocolatey 0.9.9.1 8520 Tuesday, March 3, 2015 Approved
Chocolatey 0.9.9 14615 Tuesday, March 3, 2015 Approved
Chocolatey 0.9.9-rc9 833 Saturday, February 28, 2015 Approved
Chocolatey 0.9.9-rc8 889 Tuesday, February 24, 2015 Approved
Chocolatey 0.9.9-rc5 1076 Monday, February 9, 2015 Approved
Chocolatey 0.9.9-rc4 755 Sunday, February 8, 2015 Approved
Chocolatey 0.9.9-rc3 725 Saturday, February 7, 2015 Approved
Chocolatey 0.9.9-rc2 684 Friday, February 6, 2015 Approved
Chocolatey 0.9.9-rc1 717 Wednesday, February 4, 2015 Approved
Chocolatey 0.9.9-beta3-20150204 659 Wednesday, February 4, 2015 Approved
Chocolatey 0.9.9-beta2-20150202 726 Monday, February 2, 2015 Approved
Chocolatey 0.9.9-beta-20150201 698 Sunday, February 1, 2015 Approved
Chocolatey 0.9.9-alpha-20150201 689 Sunday, February 1, 2015 Approved
Chocolatey 0.9.9-alpha-20150125 906 Sunday, January 25, 2015 Approved
Chocolatey 0.9.8.33 1795160 Wednesday, February 11, 2015 Approved
Chocolatey 0.9.8.32 263352 Thursday, January 22, 2015 Approved
Chocolatey 0.9.8.31 190542 Wednesday, January 7, 2015 Approved
Chocolatey 0.9.8.31-beta2 716 Wednesday, January 7, 2015 Approved
Chocolatey 0.9.8.31-beta1 637 Tuesday, January 6, 2015 Approved
Chocolatey 0.9.8.30-beta1 631 Tuesday, January 6, 2015 Approved
Chocolatey 0.9.8.29 57002 Friday, January 2, 2015 Approved
Chocolatey 0.9.8.29-beta2 634 Friday, January 2, 2015 Exempted
Chocolatey 0.9.8.29-beta1 640 Friday, January 2, 2015 Exempted
Chocolatey 0.9.8.29-alpha1 686 Friday, January 2, 2015 Exempted
Chocolatey 0.9.8.28 812227 Tuesday, November 4, 2014 Approved
Chocolatey 0.9.8.28-rc1 652 Sunday, November 2, 2014 Exempted
Chocolatey 0.9.8.28-alpha3 1205 Monday, October 6, 2014 Approved
Chocolatey 0.9.8.28-alpha2 1503 Friday, August 1, 2014 Approved
Chocolatey 0.9.8.28-alpha1 724 Wednesday, July 30, 2014 Approved
Chocolatey 0.9.8.27 1382115 Monday, July 14, 2014 Approved
Chocolatey 0.9.8.27-beta1 661 Sunday, July 13, 2014 Approved
Chocolatey 0.9.8.26 939 Saturday, July 12, 2014 Approved
Chocolatey 0.9.8.26-alpha2 710 Friday, July 11, 2014 Approved
Chocolatey 0.9.8.26-alpha1 715 Friday, July 11, 2014 Approved
Chocolatey 0.9.8.25 39009 Monday, July 7, 2014 Approved
Chocolatey 0.9.8.25-alpha1 722 Saturday, July 5, 2014 Approved
Chocolatey 0.9.8.24 13986 Thursday, July 3, 2014 Approved
Chocolatey 0.9.8.24-rc2 724 Monday, June 30, 2014 Approved
Chocolatey 0.9.8.24-rc1 759 Wednesday, June 25, 2014 Approved
Chocolatey 0.9.8.24-beta2 901 Sunday, June 8, 2014 Approved
Chocolatey 0.9.8.24-beta1 1541 Thursday, April 3, 2014 Approved
Chocolatey 0.9.8.24-alpha2 954 Sunday, March 2, 2014 Approved
Chocolatey 0.9.8.24-alpha1 830 Tuesday, February 11, 2014 Approved
Chocolatey 0.9.8.23 525853 Monday, November 11, 2013 Approved
Chocolatey 0.9.8.22 1468 Monday, November 11, 2013 Approved
Chocolatey 0.9.8.22-alpha1 735 Saturday, November 9, 2013 Approved
Chocolatey 0.9.8.21 4375 Friday, November 8, 2013 Approved
Chocolatey 0.9.8.21-beta2 709 Friday, November 8, 2013 Approved
Chocolatey 0.9.8.21-alpha7 971 Friday, August 23, 2013 Approved
Chocolatey 0.9.8.21-alpha6 710 Thursday, August 22, 2013 Approved
Chocolatey 0.9.8.21-alpha5 696 Wednesday, August 21, 2013 Approved
Chocolatey 0.9.8.21-alpha4 676 Wednesday, August 21, 2013 Approved
Chocolatey 0.9.8.21-alpha3 839 Tuesday, July 23, 2013 Approved
Chocolatey 0.9.8.21-alpha2 817 Thursday, June 27, 2013 Approved
Chocolatey 0.9.8.21-alpha1 833 Thursday, May 30, 2013 Approved
Chocolatey 0.9.8.20 331575 Tuesday, December 11, 2012 Approved
Chocolatey 0.9.8.20-beta1 795 Wednesday, December 5, 2012 Approved
Chocolatey 0.9.8.20-alpha3 810 Friday, November 16, 2012 Approved
Chocolatey 0.9.8.20-alpha2 767 Tuesday, October 16, 2012 Approved
Chocolatey 0.9.8.20-alpha1 795 Sunday, September 16, 2012 Approved
Chocolatey 0.9.8.19 29944 Monday, July 2, 2012 Approved
Chocolatey 0.9.8.19-alpha1 742 Thursday, June 28, 2012 Approved
Chocolatey 0.9.8.18 2194 Saturday, June 16, 2012 Approved
Chocolatey 0.9.8.17 1083 Friday, June 15, 2012 Approved
Chocolatey 0.9.8.17-rc2 887 Wednesday, June 13, 2012 Approved
Chocolatey 0.9.8.17-rc1 892 Wednesday, June 13, 2012 Approved
Chocolatey 0.9.8.17-beta1 860 Thursday, June 7, 2012 Approved
Chocolatey 0.9.8.16 7345 Monday, February 27, 2012 Approved
Chocolatey 0.9.8.15 925 Monday, February 27, 2012 Approved
Chocolatey 0.9.8.15-beta2 919 Saturday, February 25, 2012 Approved
Chocolatey 0.9.8.14 2308 Monday, February 6, 2012 Approved
Chocolatey 0.9.8.13 1868 Sunday, January 8, 2012 Approved
Chocolatey 0.9.8.12 2043 Sunday, November 20, 2011 Approved
Chocolatey 0.9.8.11 1881 Friday, October 14, 2011 Approved
Chocolatey 0.9.8.10 1729 Saturday, September 17, 2011 Approved
Chocolatey 0.9.8.9 1003 Saturday, September 10, 2011 Approved
Chocolatey 0.9.8.8 853 Saturday, September 10, 2011 Approved
Chocolatey 0.9.8.7 910 Friday, September 2, 2011 Approved
Chocolatey 0.9.8.6 1750 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8.5 893 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8.4 1054 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8.3 909 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8.2 1117 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8.1 912 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.8 4000 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.7.3 975 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.7.2 935 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.7.1 934 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.7 955 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.6.4 905 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.6.3 870 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.6.2 938 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.6.1 933 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.6.0 917 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.5.0 972 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.4.0 1001 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.3.0 936 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.2.0 917 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.1.0 962 Tuesday, August 23, 2011 Approved
Chocolatey 0.9.0.0 928 Tuesday, August 23, 2011 Approved
Chocolatey 0.8.0.0 1005 Tuesday, August 23, 2011 Approved
Chocolatey 0.7.0.0 1321 Tuesday, August 23, 2011 Approved

See all - https://github.com/chocolatey/choco/blob/master/CHANGELOG.md

0.9.9.7

"Fix Everything. Fix All The Things" - There have been some things bugging us for a long time related to limitations with NuGet, so we decided to fix that. Like nuspec enhancements, that crazy content folder restriction has been removed (I know, right?!), and we're working around badly behaved packages quite a bit more to bring you more feature parity.

Let's talk about a couple of big, like really big, BIG features just added with this release. No more packages rebooting Windows. We fixed (#304 / #323) and enhanced up the Auto Uninstaller Service quite a bit to ensure things are working like you would expect (It goes on by default in 0.9.10 - we'll start documenting more about it soon). But wait, there's more! I haven't even told you about the big features yet

The first big feature is enhancing the nuspec. I mentioned this I know, but now you can use packageSourceUrl in the nuspec to tell folks where you are storing the source for the package! We also added projectSourceUrl, docsUrl, mailingListUrl, and bugTrackerUrl. What's even better is that the community feed has already been enhanced to look for these values. So have the templates from choco new. And it's backwards compatible, meaning you can still install packages that have these added nuspec enhancements without issue (but we will need to provide a fix for Nuget Package Explorer).

The second is Xml Document Transformations (XDT), which I think many folks are aware of but may not realize what it can provide. NuGet has allowed transformations for quite awhile to allow you to make changes to an app.config/web.config on install/uninstall. We are following in similar footsteps to allow you to do similar when installing/upgrading packages. We will look for *.install.xdt files in the package (doesn't matter where) and they will apply to configuration files with the same name in the package. This means that during upgrades we won't overwrite configuration files during upgrades that have opted into this feature. It allows you to give users a better experience during upgrades because they won't need to keep making the same changes to the xml config files each time they upgrade your package.

FEATURES

  • Allow XDT Configuration Transforms - see #331
  • Prevent reboots - see #316
  • Enhance the nuspec - first wave - see #205
  • Uninstaller Service Enhancements - see #305

BUG FIXES

  • When uninstall fails, do not continue removing files - see #315
  • Do not run autouninstaller if the package result is already a failure - see #323
  • Fix - Auto Uninstaller can fail if chocolateyUninstall.ps1 uninstalls prior to it running - see #304
  • Fix - Packages with content folders cannot have a dependency without also having a content folder - see #290
  • Remove ShimGen director files on upgrade/uninstall - see #326
  • If feature doesn't exist, throw an error - see #317
  • Fix - The operation completed successfully on stderr - see #249
  • Fix - When specific nuget version is needed by a package it is the chocolatey version that is used - see #194
  • When installing with *.nupkg, need to get package name from package, not file name - see #90
  • Fix - Choco pin list is not returning a list - see #302
  • Fix - A pin is not created for existing installations (prior to new choco) - see #60

IMPROVEMENTS

  • Allow upgrade to always install missing packages - see #300
  • Enhance Templates - see #296
  • Always log debug output to the log file - see #319
  • Warn when unable to snapshot locked files - see #313
  • Use %systemroot% in place of %windir%. PATH exceed 2048 breaks choco - see #252

0.9.9.6

Some really large fixes this release, especially removing all files that are installed to the package directory if they haven't changed, including ensuring that the nupkg file is always removed on successful uninstalls. The really big add some folks are going to like is the new outdated command. Some more variables that were misused have been brought back, which allows some packages (like Atom) to be installed again without issue. If you can believe some people never read these, we decided to add a note to the installer prompt to let people know about -y.

FEATURES

  • Outdated Command - Use choco outdated to see outdated packages - see #170

BUG FIXES

  • Fix - NotSilent Switch Not Working - see #281
  • Fix - Silent installation of choco without admin is not possible - see #274
  • Fix - Package resolves to latest version from any source - see #279
  • Fix - Install fails when shortcut creation fails - see #264
  • Fix - Error deserializing response of type Registry - see #257
  • Fix - Auto uninstaller should not depend on optional InstallLocation value - see #255
  • Fix - Nupkg is left but reported as successfully uninstalled by NuGet - see #254
  • Fix - SHA1 checksum compared as MD5 for Install-ChocolateyZipPackage - see #253
  • Fix - Auto uninstaller strips off "/" and "-" in arguments - see #212

IMPROVEMENTS

  • Uninstall removes all installed files if unchanged - see #121
  • Auto uninstaller should convert /I to /X for Msi Uninstalls - see #271
  • Bring back more variables for feature parity - see #267
  • Mention -y in the prompt - see #265

0.9.9.5

BREAKING CHANGES

  • Renamed short option p to i for list --include-programs so that p could be ubiquitous for password across commands that optionally can pass a password - see #240

BUG FIXES

  • Fix - Secure Sources Not Working - see #240
  • Fix - Generate-BinFile / Remove-BinFile - see #230
  • Fix - cpack should only include files from nuspec - see #232
  • Fix - cpack should leave nupkg in current directory - see #231
  • Fix - Install-PowerShellCommand uses incorrect path - see #241
  • Fix - choco list source with redirects does not resolve - see #171
  • Fix - choco tried to resolve disabled repo - see #169
  • Fix - cpack nuspec results in "The path is not of a legal form" - see #164
  • Fix - cpack hangs on security related issue - see #160
  • Fix - spelling error in "package has been upgradeed successfully" - see #64

IMPROVEMENTS

  • Api Key and Source matching could be more intuitive - see #228
  • Remove warning about allowGlobalConfirmation being enabled - see #237
  • Include log file path when saying 'See the log for details' - see #187
  • Uninstall prompts for version when there is only one installed - see #186
  • Do not offer a default option when prompting for a user choice - see #185
  • Remove the warning note about skipping, and instead show the warning when selecting skip - see #183
  • Do not print PowerShell install/update scripts by default - see #182

0.9.9.4

BUG FIXES

  • Fix - The term 'false' is not recognized as the name of a cmdlet - see #215

IMPROVEMENTS

  • Some packages use non-API variables like $installArguments - see #207

0.9.9.3

BUG FIXES

  • Fix - Install .NET Framework immediately during install - see #168
  • Fix - Do not error on Set-Acl during install/upgrade - see #163
  • Fix - Do not escape curly braces in powershell script - see #208
  • Fix - Formatting issues on --noop command logging - see #202
  • Fix - Uninstaller check doesn't find 32-bit registry keys - see #197
  • Fix - Uninstaller errors on short path to msiexec - see #211

IMPROVEMENTS

  • Some packages use non-API variables like $installArguments - see #207
  • Add Generate-BinFile to Helpers (widely used but never part of API) - see #145
  • Add Remove-BinFile to Helpers - see #195
  • Get-ChocolateyWebFile should create path if it doesn't exist - see #167

0.9.9.2

BUG FIXES

  • Fix - Allow passing install arguments again (regression in 0.9.9 series) - see #150
  • Fix - Allow apostrophes to be used as quotes - quoting style that worked with previous client - see #141
  • Fix - Shims write errors to stderr - see #142 and ShimGen #14

IMPROVEMENTS

  • Upgrade -r should always return a value - see #153

0.9.9.1

BUG FIXES

  • Fix - Get-BinRoot broken - see #144

0.9.9

This also includes issues that were being tracked in the old Chocolatey repository: Chocolatey 0.9.9.

The two links above will not capture everything that has changed, since this is a complete rewrite. We broke everything. If this were a v1+, it would be a major release. But we are less than v1, so 0.9.9 it is! ;)

Okay, so we didn't really break everything. We have maintained nearly full compatibility with how you pass options into choco, although the output may be a bit different (but better, we hope) and in at least one case, additional switches (or a feature setting) is/are required - we limited this to security related changes only.

We also fixed and improved a bunch of things, so we feel the trade off is well worth the changes.

We'll try to capture everything here that you should know about. Please call choco -? or choco.exe -h to get started.

KNOWN ISSUES

  • Known Issues
  • TEMPORARY install all is missing - this is expected to be back in 0.9.10 - see #23
  • Alternative sources (webpi,ruby,python,cygwin, windowsfeature) do not work yet. This is expected to be fixed in 0.9.10 - see #14
  • Progress bar is missing when downloading until we are using internal posh components for Packages - see #56
  • See Feature Parity for items not yet reimplemented from older PowerShell Chocolatey client (v0.9.8.32 and below).

BREAKING CHANGES

  • [Security] Prompt for confirmation: For security reasons, we now stop for confirmation before changing the state of the system on most commands. You can pass -y to confirm any prompts or set a value in the config that will globally confirm - see #52 (NOTE: This is one of those additional switches we were talking about)
  • [Security] If your default installation is still at c:\Chocolatey, this version will force a move to ProgramData and update the environment settings - see #7
  • Configuration Breaking Changes:
    1. You now have one config file to interact with in %ChocolateyInstall%\config - your user config is no longer valid and can be removed once you migrate settings to the config.
    2. The config will no longer be overwritten on upgrade.
    3. Choco no longer interacts with NuGet's config file at all. You will need to reset all of your apiKeys (see features for apikey). On the plus side, the keys will work for all users of the machine, unlike NuGet's apiKeys (only work for the user that sets them).
    4. This also means you can no longer use useNugetForSources. It has been removed as a config setting.
  • Packaging Changes:
    1. Choco now installs packages without version numbers on folders. This means quite a few things...
    2. Upgrading packages doesn't install a new version next to an old version, it actually upgrades.
    3. Dependencies resolve at highest available version, not the minimum version as before - see Chocolatey #415
  • Package Maintenance Changes:
    1. Read the above about apikey changes
    2. Read above about dependency resolution changes.
  • Deprecated/Removed Commands:
    1. installmissing has been removed. It was deprecated awhile ago, so this should not be a surprise.
    2. choco version has been deprecated and will be removed in v1. Use choco upgrade pkgName --noop or choco upgrade pkgName -whatif instead.
    3. Write-ChocolateySuccess, Write-ChocolateyFailure have been deprecated.
    4. update is now upgrade. update has been deprecated and will be removed/replaced in v1. Update will be reincarnated later for a different purpose. Hint: It rhymes with smackage pindexes.

FEATURES

BUG FIXES

Probably a lot of bug fixes that may not make it here, but here are the ones we know about.

IMPROVEMENTS

  • [Security] Allow keeping c:\chocolatey install directory with environment variable - see #17
  • [Security] Require switch on unofficial build - see #36
  • Install script updates - see #7
  • Ensure Chocolatey pkg is installed properly in lib folder - This means you can take a dependency on a minimum version of Chocolatey (we didn't like that before) - see #19
  • Uninstall - allow abort - see #43
  • Support for HTTPS basic authorization - see Chocolatey #128
  • Smooth out success/failure logging - see Chocolatey #154
  • Add $env:CHOCOLATEY_VERSION - see Chocolatey #251
  • Replace ascii cue with visual cues - see Chocolatey #376
  • Uninstall all versions of an app - see Chocolatey #389
  • Add parameters in packages.config files - see Packages.config, Chocolatey #472, and #10
  • Choco pack should support -version - see Chocolatey #526
  • Enhancements to Start-ChocolateyProcessAsAdmin - see Chocolatey #564
  • Install-ChocolateyFileAssociation - add label to new file types - see Chocolatey #564
  • Clean up the verobsity of Chocolatey - see Chocolatey #374
  • Compact choco upgrade --noop option - see Chocolatey #414
  • Remove references to the Chocolatey gods - see Chocolatey #669
  • Shims now have noop (--shimgen-noop) and help (--shimgen-help) switches - see ShimGen #8 and ShimGen #10
  • Shims will terminate underlying process on termination signal - see ShimGen #11
  • Shims now have gui (--shimgen-gui) and exit (--shimgen-exit) switches - see ShimGen #13 and ShimGen #12
  • Dat help menu tho. I mean srsly guise - see Chocolatey #641

This package has no dependencies.

Discussion for the Chocolatey Package

Ground Rules:

  • This discussion is only about Chocolatey and the Chocolatey 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 Chocolatey, 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