为什么我的代码在zip提取上抛出IOException?

时间:2017-06-20 08:31:42

标签: vb.net compact-framework ioexception

我使用VB.Net在Windows CE应用程序上使用DotNetZip库(紧凑框架版本)。这似乎在CE 5.0上有效;问题出在CE 6.0上。异常对象的消息只是" IOException出现" (不是非常具体,是的),当我尝试从InnerException获取消息时,它本身会抛出NullReferenceException。

更新:当zip文件包含exe文件时,会发生错误,文本文件没有问题。

更新(再次):问题不在于Zip库,它与exe(被复制的那个)有关。我仍然在寻找它为什么使用"。 GetProcesses(OpenNetCF)在列表中没有它。其他前任,尽管以前跑过,都可以被覆盖。不是这个,不是一旦它已经运行过。

以下是代码:

Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
                Dim f As ZipEntry
                For Each f In zip1
                    f.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
                Next
            End Using

这就是堆栈:

IOException

   at System.IO.__Error.WinIOError(Int32 errorCode, String str)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, 

String msgPath)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at Ionic.Zip.ZipEntry.InternalExtract(String baseDir, Stream outstream, String password)
   at Ionic.Zip.ZipEntry.Extract(String baseDirectory, ExtractExistingFileAction extractExistingFile)
   at updateMpad3.Form1.Timer1_Tick(Object sender, EventArgs e)
   at System.Windows.Forms.Timer._WnProc(WM wm, Int32 wParam, Int32 lParam)
   at System.Windows.Forms.ApplicationThreadContext._InternalContextMessages(WM wm, Int32 wParam, Int32 lParam)
   at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
   at System.Windows.Forms.Application.Run(Form fm)
   at updateMpad3.Form1.Main()

1 个答案:

答案 0 :(得分:0)

固定。我在“我的文档”中提取,重命名/移动要覆盖的文件,并将提取的文件复制到Program Files(替换的exe应该是)。

但是,我不确定是什么造成的。没有什么可以覆盖那个特定的exe。 DotNetZip无法直接提取到特定的exe文件夹(即使重命名后;其他exes工作正常),但File.Copy工作得很好。