为啥 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 的独立包?的主要内容,如果未能解决你的问题,请参考以下文章

Chocolatey Ngrok.portable 不工作

为啥 PostgreSQL 9.2.1 可以存储大于 2GB 的大对象?

无效的 URI:无法解析主机名。 Visual Studio 和 Chocolatey 安装问题

Windows10使用Chocolatey安装mysql之后无法使用的解决办法

为啥 Windows 为其系统地址空间保留 1Gb(或 2 Gb)?

【已解决】为啥上传的 APP 无法进行 TestFlight 测试