Передача аргументов в MSI - PullRequest
       8

Передача аргументов в MSI

0 голосов
/ 04 февраля 2019

В шоколадной документации указано, что для передачи параметров в MSI необходимо использовать следующий аргумент:

- ia, --installargs, --installarguments, --install-arguments = VALUE InstallArguments - установить аргументы для передачи собственному установщику в пакете.По умолчанию не указано.

Я пробовал это, предполагая, что он будет автоматически добавлен к выполнению MSI, но параметры не были переданы.

Затем я заглянул в мой файл chocolateyinstall.ps1 и заметил параметр silentArgs с инициализацией по умолчанию, которая выглядит как аргументы, передаваемые MSI.Я пытался удалить его, надеясь, что он передаст параметры в MSI, но все же не повезло.

Поэтому вопрос: как передать параметры из командной строки в MSI при использовании cinst или choco install?

Вот мой 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 

1 Ответ

0 голосов
/ 04 февраля 2019

Давайте возьмем, к примеру, установку пакета Chocolatey GUI, который также использует MSI.Если вы выполните следующую команду:

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

Этот дополнительный аргумент будет передан базовому MSI, что приведет к перезагрузке компьютера после завершения установки MSI.

ПРИМЕЧАНИЕ: У этого побочного эффекта не будет завершения установки Chocolatey, поэтому пакет не будет помечен как установленный.Это был просто пример увеличения параметров, передаваемых в MSI.

Другой пример - запуск следующего:

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

Второй параметр, --override-arguments, вызывает только те аргументы, которыепереданы, чтобы быть уважаемым.Это приводит к тому, что установка блокируется, так как тихие аргументы были удалены из пакета.

Итак, короче говоря, похоже, что вы делаете, это правильно.Если вы можете поделиться точной командой, которую вы пытаетесь использовать, это может помочь выяснить, что происходит.

В качестве примечания похоже, что вы создаете встроенный ChocolateyПакет, означающий, что MSI фактически содержится в файле nupkg.Это совершенно верно, однако вы должны использовать Install-ChocolateyInstallPackage (https://chocolatey.org/docs/helpers-install-chocolatey-install-package), вместо Install-ChocolateyPackage (https://chocolatey.org/docs/helpers-install-chocolatey-package)

...