在chocolatey documentation他们的状态,为了将参数传递给MSI需要使用以下参数:
--ia,--installargs,--installarguments,--install-参数= VALUE InstallArguments - 安装参数传递给在包装中的本机安装程序。默认为未指定。
我想,假设它会自动追加到MSI执行,但参数没有通过。
然后我看着chocolateyinstall.ps1我有,我注意到有默认初始化它看起来像传递给MSI准确参数silentArgs参数。我试图与希望删除它,它会传递参数给MSI但仍没有运气。
所以,问题是:我怎么使用cinst或巧克力安装时,通过从命令行参数MSI?
这是我chocolateyinstall.ps1这是非常标准:
$ErrorActionPreference = 'Stop'; # stop on all errors
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$packageArgs = @{
packageName = $env:ChocolateyPackageName
unzipLocation = $toolsDir
fileType = 'msi'
file = Get-Item $toolsDir\*.msi
checksumType = 'sha256' #default is md5, can also be sha1, sha256 or sha512
# MSI
silentArgs = "/qn /norestart /l*v `"$($env:TEMP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log`""
validExitCodes= @(0, 3010, 1641)
}
Install-ChocolateyPackage @packageArgs
让采取例如巧克力味GUI包,它也使用MSI的安装。如果您运行下面的命令:
choco install chocolateygui --install-arguments="'/forcerestart'"
该附加的参数将被传递到底层MSI,这将导致对MSI的安装完成时,重新启动机器。
注意:这将没有完成的巧克力安装的副作用,所以包会安装实际上并不显着。这只是扩充传递给MSI的参数的例子。
另一个例子是,以运行以下命令:
choco install chocolateygui --install-arguments="'/forcerestart'" --override-arguments
第二个参数,--override-arguments
仅造成被传递到被尊重的参数。这样做会导致安装到方框,由于无声参数已经从包装中取出。
所以,长话短说,这听起来像你在做什么是完全正确的。如果你可以分享你正在尝试使用的确切的命令,它可能会帮助弄清楚是怎么回事。
作为一个侧面说明,貌似要创建一个嵌入式的巧克力包装,这意味着MSI实际上是包含在nupkg文件中。这是完全有效的,但是,你应该使用Install-ChocolateyInstallPackage
(https://chocolatey.org/docs/helpers-install-chocolatey-install-package),而不是Install-ChocolateyPackage
(https://chocolatey.org/docs/helpers-install-chocolatey-package)