简体   繁体   English

如何将安装日志路径传递给Chocolatey中的MSI?

[英]How do I pass the install log path to an MSI in chocolatey?

In the chocolateyInstall.ps1 script this works and installs the package: 在ChocolateyInstall.ps1脚本中,它可以工作并安装软件包:

Install-ChocolateyPackage 'GoogleChrome' msi /qn /L*V $toolsDir\GoogleChrome.msi

This gives me an error: 这给我一个错误:

Install-ChocolateyPackage 'GoogleChrome' msi /qn /L*V C:\Windows\temp\GoogleChrome_install.log $toolsDir\GoogleChrome.msi

 Attempt to use original download file name failed for 'C:\Windows\temp\GoogleChrome_install.log'.
Copying GoogleChrome
  from 'C:\Windows\temp\GoogleChrome_install.log'
Cannot find path 'C:\Windows\temp\GoogleChrome_install.log' because it does not exist.
ERROR: Chocolatey expected a file to be downloaded to 'C:\Users\Administrator\AppData\Local\Temp\2\chocolatey\GoogleChro
me\54.0.2840.71\GoogleChromeInstall.msi' but nothing exists at that location.
The install of googlechrome was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\GoogleChrome\tools\chocolateyInstall.ps1'.
 See log for details.

Chocolatey installed 0/1 packages. 1 packages failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

I would suggest running choco new (from the latest version of Chocolatey). 我建议运行choco new (来自最新版本的Chocolatey)。 The method you are calling and the way you are calling it is kind of outdated. 您正在调用的方法和调用方式已经过时了。

You need to be passing your silent arguments all as one argument, right now it is splitting the argument up based on spaces: 您需要将所有无声参数作为一个参数传递,现在它正在基于空格将参数拆分:

$silentArgs = "/qn /norestart /l*v `"$env:Temp\GoogleChrome_install.log`""
Install-ChocolateyPackage 'GoogleChrome' msi $silentArgs $toolsDir\GoogleChrome.msi

Here's what newer chocolateyInstall.ps1 files look like: 这是更新的ChocolateyInstall.ps1文件的外观:

$ErrorActionPreference = 'Stop'

$packageName  = 'Google-Chrome'
$toolsDir     = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$fileLocation = Join-Path $toolsDir 'GoogleChrome.msi'
$fileLocation64 = Join-Path $toolsDir 'GoogleChrome64.msi'
if (Get-ProcessorBits 64) {
$forceX86 = $env:chocolateyForceX86
  if ($forceX86 -eq 'true') {
    Write-Debug "User specified '-x86' so forcing 32-bit"
  } else {
    $fileLocation = $fileLocation64
  }
}

$packageArgs = @{
  packageName   = $packageName
  softwareName  = 'Google Chrome*'
  file          = $fileLocation
  fileType      = 'msi'
  silentArgs    =  "/qn /norestart /l*v `"$env:Temp\GoogleChrome_install.log`""
  validExitCodes= @(0,1641,3010)
}

Install-ChocolateyInstallPackage @packageArgs 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM