我正在尝试创建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
fileType
和file
并称为Install-ChocolateyPackage
,后者仅包含filetype
(但由于部分参数名称匹配,PowerShell将两个参数都传递给filetype
)@packageArgs
和file
作为参数我们已将此问题添加到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/