在安装命令中,Chocolatey 版本高于 0.9.8.23 时,PackageID 是否区分大小写?我在 Win7 64 位上使用“命令提示符”,包源是私有的 ProGet 服务器 (v.3.1.0)。
这是我尝试过的(请注意PackageID 中的第一个字母!):
C:\Users\VMWIN764>cinst fileLocatorLite2014
The default install location has been changed . . .
Chocolatey (v0.9.8.27) is installing 'fileLocatorLite2014' and dependencies. By
installing you accept the license for 'fileLocatorLite2014' and each dependency
you are installing.
Unable to find version '1.0.0.820' of package 'fileLocatorLite2014'.
Command 'install' failed (sometimes this indicates a partial failure). Additiona
l info/packages: fileLocatorLite2014
C:\Users\VMWIN764>cinst FileLocatorLite2014
The default install location has been changed . . .
Chocolatey (v0.9.8.27) is installing 'FileLocatorLite2014' and dependencies. By
installing you accept the license for 'FileLocatorLite2014' and each dependency
you are installing.
FileLocatorLite2014 v1.0.0.820
Installing FileLocatorLite2014...
FileLocatorLite2014 has been installed.
Finished installing 'FileLocatorLite2014' and dependencies - if errors not shown
in console, none detected. Check log for errors if unsure.
阅读评论让我想到使用 Fiddler 查看服务器请求,因为cinst
在两次测试中使用相同的 ProGet 服务器时,错误大小写的 PackageID 在 Chocolatey 0.9.8.23 上可以工作,而在 0.9.8.27 上却不行!
因此,Fiddler 显示 0.9.8.23(使用 nuget.exe v2.1.31022.9038)发出以下请求:
/nuget/Chocolatey_Tools/Packages()?$filter=tolower(Id)%20eq%20'googlechrome'&$orderby=Id
在 0.9.8.27(使用 nuget.exe v2.8.50506.491)中结果如下:
/nuget/Chocolatey_Tools/FindPackagesById()?$filter=IsLatestVersion&$orderby=Version%20desc&$top=1&id='googlechrome'
/nuget/Chocolatey_Tools/Packages()?$filter=tolower(Id)%20eq%20'googlechrome'&$orderby=Id
/nuget/Chocolatey_Tools/Packages(Id='googlechrome',Version='33.0.1750.146')
答案1
Chocolatey 不区分大小写,但 ProGet 似乎区分大小写(只是将 Gary 的评论总结成一个答案)。
然而,NuGet 2.8 似乎确实有一些东西使内容区分大小写。如果服务器端不能弥补这种命名不兼容性,这就是 FTL。