我想升级一个特定的软件包,但前提是它没有安装。我运行一个更新脚本,使我的所有电脑保持最新状态。cup all
并且choco upgrade all
非常适合此目的,但不能处理在用户 appdata 下本地安装的应用程序,如 f.lux。所以我这样做是为了遍历不同的用户并安装那些执行用户空间安装的应用程序:
$orgUserProfile=$Env:USERPROFILE
$orgLocalAppData=$Env:LOCALAPPDATA
$Env:USERPROFILE="C:\users\Alex"
$Env:LOCALAPPDATA="${Env:USERPROFILE}\AppData\Local"
# Installed to c:\Users\Alex\AppData\Local\SourceTree
choco upgrade sourcetree
choco upgrade f.lux
$Env:USERPROFILE="C:\users\Lisa"
$Env:LOCALAPPDATA="${Env:USERPROFILE}\AppData\Local"
# I'm not sure updates will work for lisa, not sure I want to force it, it seems choco is not multi-user
choco upgrade f.lux
$Env:USERPROFILE=$orgUserProfile
$Env:LOCALAPPDATA=$orgLocalAppData
cup all
但是在我的某些电脑上还没有安装 sourcetree 和 f.lux 而且我也不想让我的升级脚本安装它们。
有没有一种简单的方法可以让 chocolatey 仅在已安装时才升级?这样我就不必手动解析列表了
附言:
答案1
目前尚不存在,但请关注https://github.com/chocolatey/choco/issues/1646- 如果在计划版本中发布,它将成为 v0.10.12 的一部分。