You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Winget处理NSIS升级流程及命令行参数的技术问询

Winget升级逻辑与各安装包类型参数规范

一、NSIS安装程序的升级行为

  • 若你的NSIS安装包本身支持原地升级(即安装包启动后会自动检测现有版本并完成覆盖升级),Winget会直接运行新下载的安装程序,不会先卸载现有版本。
  • 只有当安装包不支持原地升级,且你在YAML清单中明确配置了卸载相关参数(比如指定UninstallCommand),Winget才会先执行卸载操作,再运行新安装包。

二、不同安装包类型的参数规范

1. MSIX

  • MSIX是微软现代化打包格式,Winget直接调用系统MSIX安装接口,无需额外指定安装参数。
  • 升级时MSIX会自动处理版本替换,无需卸载旧版本,只需确保清单中的PackageIdentifier和Publisher与旧版本一致。
  • 核心清单配置:InstallerType: msix,InstallerUrl指向MSIX包地址。

2. INNO Setup

  • 默认静默参数:/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
  • 自定义参数可通过清单的InstallerSwitches配置,示例:
    InstallerSwitches:
      Silent: "/VERYSILENT /NORESTART"
      SilentWithProgress: "/SILENT /NORESTART"
    
  • 升级逻辑:INNO安装包自带升级检测,Winget直接运行带静默参数的新包即可完成升级,无需手动卸载旧版本。

3. NSIS

  • 默认静默参数:/S(注意大写)
  • 自定义参数配置示例:
    InstallerSwitches:
      Silent: "/S /D=C:\CustomInstallPath"
    
  • 升级逻辑:若安装包支持原地升级则直接运行新包;若不支持,需在清单中配置UninstallCommand(从旧版本卸载注册表项中获取),Winget会先执行卸载再安装新版本。

4. 通用EXE(无特定安装框架)

  • 无统一静默参数,需根据安装程序自身支持情况配置,常见参数包括:/quiet、/silent、/qn(MSI封装的EXE)、/VERYSILENT(类INNO的EXE)
  • 配置示例:
    InstallerSwitches:
      Silent: "/quiet /norestart"
    
  • 升级逻辑:若EXE支持原地升级则直接运行;若不支持,需配置UninstallCommand让Winget先卸载旧版本再安装。

三、Winget底层调用说明

Winget底层通过调用系统对应安装接口实现:MSIX调用Add-AppxPackage类接口,EXE/NSIS/INNO则直接启动安装程序进程并传递你在清单中配置的参数。所有参数传递逻辑完全依赖YAML清单里的InstallerSwitches配置,以及对应安装包类型的默认参数规则。

内容的提问来源于stack exchange,提问作者morleyc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:54:23