我正在尝试创建Chocolatey包,并且能够将“choco pack”和“choco push”到本地的Chocolatey.server(简单服务器)存储库。我已经将C:\ProgramData\Chocolatey\config\chocolatey.config配置为指向本地的Chocolatey.server URL。当我尝试运行时

choco install test1

我收到以下错误:



在我的test.nuspec中,我有以下内容:
<files>
  <!-- This section controls what actually gets packaged into the Chocolatey package -->
  <file src="tools*" target="tools" />
  <!-- Building from Linux? You may need this instead: <file src="tools/*" target="tools" /> -->
</files>

在我的Chocolateyinstall.ps1中,我有:
$ErrorActionPreference = 'Stop';
$packageName= 'Test1'
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$fileLocation = Join-Path $toolsDir 'Test1.exe'

$packageArgs = @{
  packageName = $packageName
  fileType = 'exe'
  file = $fileLocation
  silentArgs = "/SP"
  validExitCodes= @(0, 3010, 1641)
  softwareName = 'Test1*'
  checksum = ''
  checksumType = 'md5'
  checksum64 = ''
  checksumType64 = 'md5'
}

Install-ChocolateyPackage @packageArgs

最佳答案

错误

该错误告诉您,您多次指定了file参数,这意味着您可能具有以下之一:

  • 在您的file中两次列出了$packageArgs
  • 已指定fileTypefile并称为Install-ChocolateyPackage,后者仅包含filetype(但由于部分参数名称匹配,PowerShell将两个参数都传递给filetype)
  • 传递了@packageArgsfile作为参数

  • 我们已将此问题添加到https://chocolatey.org/docs/troubleshooting中。

    如果您已经解决了该方面,现在可能会遇到其他错误。请参阅下一节以了解原因。

    编码

    您正在尝试传递 Install-ChocolateyInstallPackage 而不是 Install-ChocolateyPackage 的参数。

    如果您单击链接,则会注意到Install-Chocolatey Install 软件包用于本地嵌入式或UNC共享二进制文件的区别,其中Install-ChocolateyPackage用于提取远程资源。

    创建软件包建议

    创建软件包时,强烈建议您使用choco new(来自Chocolatey的最新发行版本),因为它会生成包含已记录的已生成chocolateyInstall.ps1中包含的差异的文档的包装。我们称其为“及时文档”。

    看来您确实根据代码使用了choco new,但我只是想补充一点,最新版本将提供有关创建软件包的最有用的文档。

    关于chocolatey - Chocolateyinstall.ps1或nuspec文件的Choco安装问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38376422/

    10-13 02:07