为啥 Chocolatey 无法打包一个 ~2GB 的独立包?
Posted
技术标签:
【中文标题】为啥 Chocolatey 无法打包一个 ~2GB 的独立包?【英文标题】:Why does Chocolatey fail to pack a ~2GB self-contained package?为什么 Chocolatey 无法打包一个 ~2GB 的独立包? 【发布时间】:2016-03-30 08:07:01 【问题描述】:我想使用cpack
命令从“app.nuspec”文件构建一个独立的“app.nupkg”包。这是我的应用程序的目录树:
C:\CHOCO_REPO\APP
│ app.nuspec
│
├───bin
│ dist
│ Setup.exe
│
└───tools
chocolateyinstall.ps1
chocolateyuninstall.ps1
dist 文件(大小~2G)实际上是程序。当我尝试运行时:
cpack app.nupgk
我明白了:
bin\dist
Cannot access a closed stream
带有调试选项:
cpack app.nuspec -d
我明白了:
Attempting to build package from 'app.nuspec'.
bin\dist
Attempting to delete file "C:\choco_repo\APP\app.nupkg".
Chocolatey had an error occur:
System.ObjectDisposedException: Can not access a closed Stream.
at System.IO.Compression.DeflateStream.EnsureNotDisposed()
at MS.Internal.IO.Packaging.CompressStream.Flush()
at MS.Internal.IO.Zip.ZipIOLocalFileBlock.FlushExposedStreams()
at MS.Internal.IO.Zip.ZipIOLocalFileBlock.UpdateReferences(Boolean closingFlag)
at MS.Internal.IO.Zip.ZipIOBlockManager.SaveContainer(Boolean closingFlag)
at MS.Internal.IO.Zip.ZipIOBlockManager.SaveStream(ZipIOLocalFileBlock blockRequestingFlush, Boolean closingFlag)
at MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Dispose(Boolean disposing)
at System.IO.Stream.Close()
at System.IO.Packaging.PackagePart.Close()
at System.IO.Packaging.Package.DoClose(PackagePart p)
at System.IO.Packaging.Package.DoOperationOnEachPart(PartOperation operation)
at System.IO.Packaging.Package.System.IDisposable.Dispose()
at NuGet.PackageBuilder.Save(Stream stream)
at chocolatey.infrastructure.app.nuget.NugetPack.BuildPackage(PackageBuilder builder, IFileSystem fileSystem, String outputPath)
at chocolatey.infrastructure.app.services.NugetService.pack_run(ChocolateyConfiguration config)
at chocolatey.infrastructure.app.runners.GenericRunner.run(ChocolateyConfiguration config, Container container, Boolean isConsole, Action`1 parseArgs)
at chocolatey.infrastructure.app.runners.ConsoleApplication.run(String[] args, ChocolateyConfiguration config, Container container)
at chocolatey.console.Program.Main(String[] args)
Exiting with 1
有什么帮助吗?谢谢
【问题讨论】:
【参考方案1】:可能是大小。 NuGet 和 .NET 在可以放入包的大小方面存在一些限制。
可能只是 Choco,但我对此表示怀疑,因为它是作为 AnyCPU 构建的,这意味着在 64 位时是 x64。
我见过一些人做了一些巧妙的事情来获取一个 6GB 的 iso 并将其拆分为多个包,这些包是主包的依赖项。
【讨论】:
实际上“dist”文件有 2.7GB 大小。是否有您知道的参考/链接可以为我指明正确的方向以尝试解决此问题?以上是关于为啥 Chocolatey 无法打包一个 ~2GB 的独立包?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PostgreSQL 9.2.1 可以存储大于 2GB 的大对象?
无效的 URI:无法解析主机名。 Visual Studio 和 Chocolatey 安装问题
Windows10使用Chocolatey安装mysql之后无法使用的解决办法