我正在尝试在一组远程计算机上使用安装包安装 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
安装包 - /qn:
q
告诉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/