Chocolatey 安装包失败

Chocolatey Install Package Failing

对于那些熟悉创建 Chocolatey 程序包的人来说,有人可以帮助解释为什么这个程序不起作用吗?它打包,但是当我测试(只安装包)时,它不会工作。 这是 chocolateyinstall.ps1 文件:

$ErrorActionPreference = 'Stop'; # stop on all errors
$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$fileLocation = Join-Path $toolsDir 'armcc.exe'
$packagename = 'ARM_RVCT'

$packageArgs = @{
  packageName   = $packageName
  unzipLocation = $toolsDir
  fileType      = 'EXE' #only one of these: exe, msi, msu
  #url           = $url
  #url64bit      = $url64
  file         = $fileLocation

  softwareName  = 'ARM_RVCT*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique

  silentArgs    = '/S' # ALLUSERS=1 DISABLEDESKTOPSHORTCUT=1 ADDDESKTOPICON=0 ADDSTARTMENU=0
  validExitCodes= @(0)
}

Install-ChocolateyInstallPackage @packageArgs # https://chocolatey.org/docs/helpers-install-chocolatey-install-package

当我执行 choco pack 然后 运行 choco install arm_rvct 时,我得到以下输出:

Installing the following packages:
arm_rvct
By installing you accept licenses for the packages.

arm_rvct v3.1
arm_rvct package files install completed. Performing other installation steps.
Installing ARM_RVCT...
Microsoft.PowerShell.Commands.WriteErrorException
Error: C3079E: armcc command with no effect
Error: C3065E: type of input file '/S' unknown
Microsoft.PowerShell.Commands.WriteErrorException
ERROR: Running ["C:\ProgramData\chocolatey\lib\arm_rvct\tools\armcc.exe" /S ] was not successful. Exit code was '1'. See log for possible error messages.
The install of arm_rvct was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\arm_rvct\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).

Failures
 - arm_rvct (exited 1) - Error while running 'C:\ProgramData\chocolatey\lib\arm_rvct\tools\chocolateyinstall.ps1'.
 See log for details.

它会在错误消息中准确告诉您问题所在:

Error: C3079E: armcc command with no effect
Error: C3065E: type of input file '/S' unknown

首先,看起来您可能正在注释掉,或者至少没有为 armcc.exe 提供必需的参数。其次,在 armcc.exe 的上下文中,/S 似乎不适用于静默安装 - 它需要一个您当前未提供的输入文件作为静默参数的一部分。


armcc.exe 不是安装程序 btw - 如果您没有适合您的工具链的安装程序,请考虑将工具链放入 zip 存档中,将该 zip 嵌入您的包中,然后安装Install-ChocolateyZipPackage instead of Install-ChocolateyInstallPackage(后者用于安装exe或msi安装程序)。

这应该会自动为您的可执行文件生成一些垫片并将它们放在路径上。请注意,由于这看起来像是针对 arm_rvct 编译器的,如果它通常接受管道输入,Chocolatey 垫片实际上不支持管道输入,因此请记住生成垫片的限制。


发行说明中确实 official installer for the ARM toolchain. However, the installation instructions 没有提供任何静默安装说明。也就是说,这是未记录的安装程序的常见问题 - 但这并不意味着您也不能执行静默安装,需要您付出一些努力。

您可以尝试 运行 setup.exe /S 或使用 msiexec /i "ARM Compiler 6.13.msi" /qn 引用的 ARM Compiler 6.13.msi。如果这些都不起作用,您可以选择与供应商联系以询问静默安装的工作原理,或者您可以采用获取已安装文件并将它们打包成 zip 的方式。请注意,安装程序,尤其是 devkits 和工具链,可能会在 Windows 中注册程序集,如果简单的文件安装不起作用,这可能会导致逆向工程变得复杂。


虽然在这种情况下,供应商将是了解您如何能够在整个组织中部署此包的最佳资源。