运行安装包,而不提示安装 NuGet



我正在尝试在一组远程计算机上使用安装包安装 msi,但我不断收到安装 nuget 的交互式提示。 有没有办法关闭该提示?

install-package software.msi
The provider 'nuget v2.8.5.208' is not installed.
nuget may be manually downloaded from
https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll and installed.
Would you like PackageManagement to automatically download and install 'nuget' now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

显然你可以从Install-Package安装原始MSI。为了不提示安装 Nuget 提供程序,以及防止发生其他提示,请使用 MSI 提供程序运行Install-Package

Install-Package -ProviderName msi -Force software.msi

并不是说这是不可能的,但从表面上看,我没有看到将其他参数传递给 Powershell 6 及更高版本的 MSI 的方法(Powershell 5.1 确实有一个-AdditionalArguments参数)。因此,如果您的 MSI 安装程序确实需要传入其他参数,请记住这一点。如果我找到一种方法来做到这一点,我会更新答案。

我认为您正在寻找msiexec,而不是Install-Package,因为后者从存储库安装特殊格式的软件包。

如果要使用msiexec安装software.msi,可以这样做:

msiexec /i $pathToSoftwareMsi /qn

如果要将安装日志写入文件,可以添加日志记录参数:

msiexec /i $pathToSoftwareMsi /qn /l*v $pathToOutputLogFile

参数说明

  • /i:告诉msiexec安装包
  • /qnq告诉msiexec在没有用户交互的情况下执行。n将 UI 级别设置为No UI。这些有助于确保安装程序在无人参与安装期间不会要求输入。
  • /l*v:将输出记录到指定的文件。/l表示要将日志输出到文件,*v表示所有日志记录选项以及详细内容。

您可以通过运行msiexec /?查看所有选项

Nuget 安装命令:

install-packageprovider nuget -force

Install-Package 主要用于在 .NET 项目的上下文中安装 NuGet 包。

要安装 msi,您只需运行 msi 或使用 msiexec。我在这里找到了一个很好的解释:https://powershellexplained.com/2016-10-21-powershell-installing-msi-files/

最新更新