Chocolatey安装程序包失败

时间:2020-02-19 14:47:40

标签: powershell cmd arm chocolatey

对于那些熟悉创建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.

1 个答案:

答案 0 :(得分:1)

它准确地告诉您错误消息中的问题:

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

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


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

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


看起来确实有一个Install-ChocolateyInstallPackage用于ARM工具链。但是,发行说明中的​​official installer没有提供任何静默安装说明。也就是说,这是未公开文档的安装程序的常见问题-但这并不意味着您也无法付出任何努力来执行静默安装。

您可以尝试运行setup.exe /S或使用ARM Compiler 6.13.msi引用的msiexec /i "ARM Compiler 6.13.msi" /qn。如果上述两种方法都不起作用,则可以选择与供应商联系以询问静默安装的工作方式,或者可以采用将已安装文件打包为zip的方法。请注意,安装程序(尤其是对于devkit和工具链的安装程序)可能会在Windows中注册程序集,如果简单的文件安装不起作用,则反向工程可能会变得很复杂。


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