OS: windows

说明(core)

  • choco默认安装到C盘,choco工具本身的安装位置可以修改
  • 通过choco安装的软件的默认安装位置也是在C盘,也是可以修改
  • 在通过choco安装其他软件的时候,通过参数指定安装的位置,否则就安装到默认的位置下

环境变量设置

 - 变量名: ChocolateyInstall
 - 变量值: G:\Chocolatey
# 设置choco这个工具的安装目录,结果是将choco这个工具直接解压在该目录下

安装choco

通过CMD安装(需要仔细看完说明)

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
  • 说明
    • // 可以看出这句话是通过cmd调用终端来执行命令
    • // 最后的&& SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin其中的SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin,是这只环境变量,让bin下的choco命令全局暴露
    • // 安装choco的时候不是默认目录安装的话,不需要&& SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin这句话[该命令中的%ALLUSERSPROFILE%表示C:\ProgramData]
    • // && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin其中的SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin可以直接不要,安装的时候会自动加上找到choco安装目录,并添加path

通过powershell安装

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装好了设置通过choco安装的软件的安装位置

choco config set --name installLocation --value "D:\Your\Custom\Install\Path"

查看choco的各种配置(如通过choco安装的软件的默认安装目录)

choco config list

通过choco工具安装其他软件并指定安装目录

choco install git -ia "'/DIR=G:\Programs\Git'" # ia==install-arguments

问题

  • 以下是一些可能导致软件包不按预期安装到默认目录的原因:

  • 软件包配置: 一些软件包可能在其 Chocolatey 脚本中硬编码了安装目录,而不考虑 Chocolatey 配置文件的设定。

  • 软件包的支持程度: 不同的软件包创建者可能对 Chocolatey 的支持程度有所不同。有些软件包可能更注重用户定制,而有些可能更固定在默认的安装目录中。

  • Chocolatey 配置: 如果你已经通过 Chocolatey 配置文件(chocolatey.config)设置了默认安装目录,一些软件包可能会使用该配置,而其他可能忽略。

常用的choco命令

choco -v # 查看版本
choco config list # 查看安装了的软件
choco config get <configName 
choco config set <configName> <value> # 设置配置
choco config set proxy http://localhost:1080 # 设置VPN,加速下载
choco config unset proxy # 取消代理

choco find keyword # 搜索
choco list keyword # 同上 
# 搜索结果中 带有 [Approved] 是经过认证的,意味着更加安全,质量也有保障。
#  Possibly broken 可能损坏了,不推荐安装
choco -? # - 后面是选项参数
choco list keyword -a # 搜索所有版本
choco list keyword -e # 精确匹配 -e 是  --exact 的缩写
choco list keyword --approved-oly # 只搜索通过的认证的包
choco list keyword --version=value # 搜索特定版本的包

choco -h #帮助
choco -y # 默认同意所有操作询问
choco list -l # 只显示本地安装的包
choco list --localonly # 同上

choco install pkgname1 pkgname2 # 安装
choco install pkgname -version 7.22.0 # 安装特定版本的包
# 如何安装特定范围的版本?目前还不支持
choco install pkgname -y # 直接安装,不需要再次确认运行脚本

# 指定目录安装
choco install <packageName> --install-arguments="'/INSTALLDIR=C:\Your\Custom\Install\Path'"

choco uninstall pkgname # 卸载
choco list -l # 查看版本号
choco outdated # 查看过时的包,可更新的包,最后一个 pinned 选项是说明包是否禁止升级

choco pin add -n=pkgname # 禁 止包升级,在升级所有时特别有用
choco pin add -n=git # 禁止 git 升级
choco pin add -n=git --version 1.2.3 # 禁止某个版本升级
choco pin remove --name git # 从禁止升级列表中移除

choco upgrade pkgname # 更新
choco upgrade --except="pkg1,pk2" # 更新是排除某些包和 pin 功能类似
choco upgrade all # 更新所有

知识点

  • 环境变量
    • 用户级环境变量
    • 系统级别环境变量
  • cmd 和 powershell
    • powershell可以看成cmd的plus,并逐渐取代cmd

经验

  • (建议使用Microsoft20推出的winget)
  • choco工具安装软件的时候使用默认安装目录(上面提到过)
  • 如果安装的时候指定安装目录(意思就是不是在choco官方指定的安装路径、很有可能安装出错),如果自已经修改了默认安装目录,那么choco就会将该软件安装到官方指定的目录
    • 指定安装目录说明
      • 安装目录需要安装包的支持