如何为指定Chocolatey包禁用自动卸载程序并解决卸载输出异常?
问题解决:Chocolatey包卸载的两个问题处理
问题1:卸载输出出现"0"
这个"0"是Uninstall-ChocolateyPackage命令返回的成功退出码,PowerShell默认会将未捕获的命令返回值打印到控制台。解决方法是把命令返回值赋值给$null,避免多余输出:
修改后的chocolateyuninstall.ps1片段:
# 将返回值赋值给$null,阻止退出码0被输出 $null = Uninstall-ChocolateyPackage @packageArgs
问题2:仅禁用当前包的自动卸载器
要单独针对这个包关闭Chocolatey自动卸载功能(不影响全局设置),只需在卸载脚本开头添加环境变量配置:
最终完整的chocolateyuninstall.ps1:
$ErrorActionPreference = 'Stop' # stop on all errors # 仅当前包禁用自动卸载器 $env:ChocolateyAutoUninstaller = 'disabled' $packageArgs = @{ packageName = $env:ChocolateyPackageName softwareName = 'Multigit*' fileType = 'EXE' silentArgs = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-' # Inno Setup file = 'C:\Program Files (x86)\IDEMIA\Multigit\Uninstall\unins000.exe' } $null = Uninstall-ChocolateyPackage @packageArgs
额外优化建议
安装脚本中silentArgs被注释,InnoSetup安装包建议启用静默参数,避免安装时弹出交互窗口,修改chocolateyInstall.ps1的packageArgs部分:
$packageArgs = @{ packageName = $env:ChocolateyPackageName fileType = 'EXE' file = Join-Path $toolsDir 'Multigit installer 1.5.1' softwareName = 'Multigit*' silentArgs = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-' # 取消注释启用静默参数 }
内容的提问来源于stack exchange,提问作者Philippe F
相关产品推荐
相关产品推荐

