如何获得要在 XP 上解压缩的 NANT zip 任务的输出?
我在我的 Vista 开发机器上编写了以下 Nant 脚本,并对 Nant zip 任务的输出感到满意,因为我可以解压它,遇到任何问题:
<zip zipfile="${dir.build}CeoConfigUtilities.${build-version}.zip">
<fileset basedir="${dir.configutilities}" prefix="CeoConfigUtilities">
<include name="**" />
</fileset>
</zip>
我将 Nant 脚本签入 SVN,构建服务器压缩了我的文件没有问题。 我测试了一下,发现我也可以在我的 Vista 机器上解压它们。 Life和Nant都很好,对吧? 好吧,其他人在 Windows XP Pro 上解压这些文件时会收到以下消息:
压缩的文件夹无效或已损坏。
我将我的机器上生成的文件带到 XP 机器上并收到相同的消息。 我注意到的一个区别是,当我使用 XP 的内置工具打开 zip 时,它说每个文件的压缩率为 100%。 在 Vista 上使用 jZip,每个文件都有不同的、非 100% 的比率。
有人经历过这样的事情吗? 是否有一些我不知道的设置可以使 Nant zip 任务的输出在 XP 上可解压缩? Nant 对我来说效果很好,如果这个愚蠢的解压缩问题给 XP 用户带来麻烦,我会感到失望。
I wrote the following Nant script on my Vista dev machine and was pleased as punch with the output of the Nant zip task, as I can unzip it with any problems:
<zip zipfile="${dir.build}CeoConfigUtilities.${build-version}.zip">
<fileset basedir="${dir.configutilities}" prefix="CeoConfigUtilities">
<include name="**" />
</fileset>
</zip>
I checked the Nant script into SVN, and the build server zipped up my files without a problem. I tested and found I can unzip those on my Vista machine too. Life and Nant are good, right? Well, others get the following message when unzipping these files on Windows XP Pro:
The Compressed (zipped) Folder is invalid or corrupted.
I took the files produced on my machine to an XP machine and got the same message. One difference I notice is that, when I open the zip using XP's built-in tools, it says the compression ratio for each file is 100%. Using jZip on Vista, each file has a different, non-100% ratio.
Has anyone experienced anything like this? Is there some setting I don't know about to make the output of the Nant zip task be unzippable on XP? Nant was working out so well for me that I'll be disappointed if this silly unzip issue fouls things up for XP users.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现我的问题的答案不在于 Nant 脚本,而在于版本不兼容,我认为通过程序集版本重定向来解决这个问题很聪明。 这教会了我如何认为自己很聪明!
事实证明,我手上的 Nant 发行版(签入 StructureMap SVN 存储库的发行版)包含两个不同版本的 SharpZipLib。 在lib中,SharpZipLib.dll的版本是0.85.5.452。 在 lib\common\neutral 中,SharpZipLib.dll 的版本为 0.85.1.271。 添加 zip 任务会产生程序集绑定错误,因此我将以下内容添加到 Nant.exe.config:
我认为 DLL Hell 已经死了,而且我还认为我已经超越了我们现在所处的新地狱。 事实证明,我应该简单地将 lib\commmon\neutral 中的旧版本复制到 lib 中的新版本上。
现在我的构建服务器生成可以在 XP 上解压缩的文件。
I found the answer to my question lies not in Nant script but a version incompatibility that I thought I was being clever by working around via an assembly version redirection. That teaches me for thinking I am clever!
It turns out that the distro of Nant I had my hands on (the one checked into the StructureMap SVN repository) contains two different versions of SharpZipLib. In lib, SharpZipLib.dll is version 0.85.5.452. In lib\common\neutral, SharpZipLib.dll is version 0.85.1.271. Adding a zip task yielded an assembly binding error, so I added the following to Nant.exe.config:
I thought DLL Hell was dead and I also thought I had outsmarted whatever new hell we are in now. As it turns out, I should have simply copied the old version in lib\commmon\neutral over the new version in lib.
Now my build server produces files that can be unzipped on XP.