gpt4 book ai didi

powershell - 如果未安装软件,则安装Chocolatey软件包,如果已经安装了较新版本的软件,则跳过安装?

转载 作者:行者123 更新时间:2023-12-02 23:39:00 25 4
gpt4 key购买 nike

我正在使用以下PowerShell脚本通过Octopus Deploy步骤安装dotnetcore-windowshosting版本1.1.1。

ChocolateyPackageId等于“dotnetcore-windowshosting”,并且
$ ChocolateyPackageVersion等于“1.1.1”。

但是,目标计算机安装了比Chocolatey软件包安装的新版本的DotNetCore.1.0.4_1.1.1-WindowsHosting.exe。结果,出现错误,警告我目标计算机已经安装了较新的版本。

如何像脚本中一样使用cinst安装软件包,但是,如果已经安装了要安装的软件包(或更新版本),请忽略并且不引发错误?

$chocolateyBin = [Environment]::GetEnvironmentVariable("ChocolateyInstall", "Machine") + "\bin"
if(-not (Test-Path $chocolateyBin)) {
Write-Output "Environment variable 'ChocolateyInstall' was not found in the system variables. Attempting to find it in the user variables..."
$chocolateyBin = [Environment]::GetEnvironmentVariable("ChocolateyInstall", "User") + "\bin"
}

$cinst = "$chocolateyBin\cinst.exe"
$choco = "$chocolateyBin\choco.exe"

if (-not (Test-Path $cinst) -or -not (Test-Path $choco)) {
throw "Chocolatey was not found at $chocolateyBin."
}

if (-not $ChocolateyPackageId) {
throw "Please specify the ID of an application package to install."
}

$chocoVersion = & $choco --version
Write-Output "Running Chocolatey version $chocoVersion"

$chocoArgs = @()
if([System.Version]::Parse($chocoVersion) -ge
[System.Version]::Parse("0.9.8.33")) {
Write-Output "Adding --confirm to arguments passed to Chocolatey"
$chocoArgs += @("-y", "")
}

if (-not $ChocolateyPackageVersion) {
Write-Output "Installing package $ChocolateyPackageId from the Chocolatey package repository..."
& $cinst $ChocolateyPackageId $($chocoArgs)
}
else {
Write-Output "Installing package $ChocolateyPackageId version $ChocolateyPackageVersion from the Chocolatey package repository..." & $cinst $ChocolateyPackageId -Version $ChocolateyPackageVersion $($chocoArgs)
}

最佳答案

开源的

继续执行您正在使用的脚本,但是检查所安装内容的退出代码,它可能具有有效的退出代码,表明已安装较新的版本。

商业广告

实现您正在寻找的最佳方法可能已经存在。 Chocolatey for Business具有同步命令和自动同步功能。 https://chocolatey.org/docs/features-synchronize

如果您运行choco sync然后调用安装程序,那么您将已经有一个由Chocolatey管理的软件包的较新版本。因此它将忽略您的脚本。

choco sync
choco upgrade <name> -y <options>

如果未安装软件包,则此处升级可实现安装;如果源中包含较新版本,则升级可实现升级

关于powershell - 如果未安装软件,则安装Chocolatey软件包,如果已经安装了较新版本的软件,则跳过安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47520817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com