How to update all Chocolatey packages except one?
cup all -y
is used to update all Chocolatey packages at boot. At the moment there is an issue in the latest version of VirtualBox, and I want to avoid that this package is updated at boot while the other packages need to be updated.
Attempt to solve the issue
I have checked the help function of the command:
C:\>cup all -h
Chocolatey v0.9.9.8
Upgrade Command
Upgrades a package or a list of packages. Some may prefer to use `cup`
as a shortcut for `choco upgrade`.
Usage
choco upgrade <pkg|all> [<pkg2> <pkgN>] [<options/switches>]
cup <pkg|all> [<pkg2> <pkgN>] [<options/switches>]
NOTE: `all` is a special package keyword that will allow you to upgrade
all currently installed packages.
Examples
choco upgrade chocolatey
choco upgrade notepadplusplus googlechrome atom 7zip
choco upgrade notepadplusplus googlechrome atom 7zip -dvfy
choco upgrade git --params="/GitAndUnixToolsOnPath /NoAutoCrlf" -y
choco upgrade nodejs.install --version 0.10.35
choco upgrade git -s "https://somewhere/out/there"
choco upgrade git -s "https://somewhere/protected" -u user -p pass
Options and Switches
NOTE: Options and switches apply to all items passed, so if you are
installing multiple packages, and you use `--version=1.0.0`, it is
going to look for and try to install version 1.0.0 of every package
passed. So please split out multiple package calls when wanting to
pass specific options.
-?, --help, -h
Prints out the help menu.
-d, --debug
Debug - Run in Debug Mode.
-v, --verbose
Verbose - See verbose messaging.
--acceptlicense, --accept-license
AcceptLicense - Accept license dialogs automatically.
-y, --yes, --confirm
Confirm all prompts - Chooses affirmative answer instead of prompting.
Implies --accept-license
-f, --force
Force - force the behavior
--noop, --whatif, --what-if
NoOp - Don't actually do anything.
-r, --limitoutput, --limit-output
LimitOutput - Limit the output to essential information
--execution-timeout=VALUE
CommandExecutionTimeoutSeconds - Override the default execution timeout
in the configuration of 2700 seconds.
-c, --cache, --cachelocation, --cache-location=VALUE
CacheLocation - Location for download cache, defaults to %TEMP% or value
in chocolatey.config file.
--allowunofficial, --allow-unofficial, --allowunofficialbuild, --allow-unofficial-build
AllowUnofficialBuild - When not using the official build you must set
this flag for choco to continue.
-s, --source=VALUE
Source - The source to find the package(s) to install. Special sources
include: ruby, webpi, cygwin, windowsfeatures, and python. Defaults to
default feeds.
--version=VALUE
Version - A specific version to install. Defaults to unspecified.
--pre, --prerelease
Prerelease - Include Prereleases? Defaults to false.
--x86, --forcex86
ForceX86 - Force x86 (32bit) installation on 64 bit systems. Defaults to
false.
--ia, --installargs, --installarguments, --install-arguments=VALUE
InstallArguments - Install Arguments to pass to the native installer in
the package. Defaults to unspecified.
-o, --override, --overrideargs, --overridearguments, --override-arguments
OverrideArguments - Should install arguments be used exclusively without
appending to current package passed arguments? Defaults to false.
--notsilent, --not-silent
NotSilent - Do not install this silently. Defaults to false.
--params, --parameters, --pkgparameters, --packageparameters, --package-parameters=VALUE
PackageParameters - Parameters to pass to the package. Defaults to
unspecified.
-m, --sxs, --sidebyside, --side-by-side, --allowmultiple, --allow-multiple, --allowmultipleversions, --allow-multiple-versions
AllowMultipleVersions - Should multiple versions of a package be
installed? Defaults to false.
-i, --ignoredependencies, --ignore-dependencies
IgnoreDependencies - Ignore dependencies when upgrading package(s).
Defaults to false.
-n, --skippowershell, --skip-powershell
Skip Powershell - Do not run chocolateyInstall.ps1. Defaults to false.
--failonunfound, --fail-on-unfound
Fail On Unfound Packages - If a package is not found in feeds specified,
fail instead of warn.
--failonnotinstalled, --fail-on-not-installed
Fail On Non-installed Packages - If a package is not already intalled,
fail instead of installing.
-u, --user=VALUE
User - used with authenticated feeds. Defaults to empty.
-p, --password=VALUE
Password - the user's password to the source. Defaults to empty.
But it does not seem to have a function to exclude a certain package.
How to update all packages at boot, except one?
Solution 1:
You have two options: pin a package in advance, or exclude items during choco upgrade
.
Pin Packages to Suppress Upgrades
You can pin any program you don't want updated.
Type choco pin -h
for more details. If that command doesn't give you anything, please upgrade Chocolatey to at least 0.9.9.x.
Pin Command
Pin a package to suppress upgrades.
This is especially helpful when running
choco upgrade
for all packages, as it will automatically skip those packages. Another alternative ischoco upgrade --except="pkg1,pk2"
.Usage
choco pin [list]|add|remove [<options/switches>]
Examples
choco pin choco pin list choco pin add -n=git choco pin add -n=git --version 1.2.3 C4B: choco pin add -n=git --version 1.2.3 --reason "'others may need to review'" choco pin remove --name git
NOTE: --reason
option ONLY available in Chocolatey for Business (C4B).
Exclude Packages While Upgrading
Sometimes you just simply want to exclude items you would normally include in upgrades. You don't want pins as those are meant to live longer than a single command run. That is where the Exclude
option comes in to your upgrade command.
As of Chocolatey v0.9.10, when calling upgrade, you can pass the optional --except
as a switch for upgrade. An example would be choco upgrade all --except="'conemu'"
.
Solution 2:
According to the official documentation:
choco upgrade all --except="'skype,conemu'"