将参数传递给MSI

问题描述 投票:1回答:1

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 
chocolatey
1个回答
1
投票

让采取例如巧克力味GUI包,它也使用MSI的安装。如果您运行下面的命令:

choco install chocolateygui --install-arguments="'/forcerestart'"

该附加的参数将被传递到底层MSI,这将导致对MSI的安装完成时,重新启动机器。

注意:这将没有完成的巧克力安装的副作用,所以包会安装实际上并不显着。这只是扩充传递给MSI的参数的例子。

另一个例子是,以运行以下命令:

choco install chocolateygui --install-arguments="'/forcerestart'" --override-arguments

第二个参数,--override-arguments仅造成被传递到被尊重的参数。这样做会导致安装到方框,由于无声参数已经从包装中取出。

所以,长话短说,这听起来像你在做什么是完全正确的。如果你可以分享你正在尝试使用的确切的命令,它可能会帮助弄清楚是怎么回事。

作为一个侧面说明,貌似要创建一个嵌入式的巧克力包装,​​这意味着MSI实际上是包含在nupkg文件中。这是完全有效的,但是,你应该使用Install-ChocolateyInstallPackagehttps://chocolatey.org/docs/helpers-install-chocolatey-install-package),而不是Install-ChocolateyPackagehttps://chocolatey.org/docs/helpers-install-chocolatey-package

© www.soinside.com 2019 - 2024. All rights reserved.