在 Chocolateyinstall.ps1 文件中是否有任何方法可以检查升级命令与安装命令是否触发了该进程?
我尝试使用“choco list --lo”和“choco outdated”等内容,但这些内容不断地显示当前正在安装的软件包 - 即使它尚未完全安装。我希望有某种环境变量或我忽略的简单的东西。
谢谢!
没有(至少我不知道)
我也有同样的问题,因为我目前正在开发一个包,需要知道它是否正在升级。
我尝试向安装程序添加代码以转储所有环境变量(因为 Chocolatey 喜欢使用这些变量),
choco install
和 choco upgrade
之间似乎没有区别。
实际软件安装后,在
$ToolsDir
/$ToolsPath
中创建初始安装文件。 检查其是否存在以确定升级逻辑。
根据我的理解,当安装巧克力包时,
.nupkg
会被提取到$env:ChocolateyInstall\lib\$env:ChocolateyPackageName
(例如:C:\ProgramData\chocolatey\lib\package
。chocolateyInstall.ps1
存在于.\tools
目录中。创建起来非常简单)安装程序运行后的虚拟文件:
$ToolsPath = $MyInvocation.MyCommand.Definition | Split-Path -Parent
$PackageArgs = @{
...
}
Install-ChocolateyPackage @PackageArgs
# Create dummy file
$null = New-Item -Path "$ToolsPath\.installed"
在安装程序的早期,您可以使用以下命令进行检查:
if (Test-Path -Path "$ToolsPath\.installed") {
# Run upgrade logic
} else {
# Run install logic
}
至少,这是我选择的处理方式。