0

我正在开发一个需要解压缩.zip文件的程序。在尝试了几种不同的方法来做到这一点之后,我发现唯一能满足我所有需求的方法是7z.exe. 它在我开发时效果很好,因为我可以将可执行文件的位置硬编码到代码中。但是,如果其他人尝试使用它,则该部分将不起作用。有没有办法让他们访问这个?谢谢!

4

1 回答 1

1

我建议您使用压缩库(查看 libarchive:http ://www.libarchive.org )。如果您不能这样做,您应该将 7z.exe 及其依赖项与您的应用程序一起发布,将它们放在与您的主可执行文件相对的固定位置。然后你得到你的主要可执行绝对路径使用GetModuleFileName,剥离和结合使用相对路径PathCchCombine

char filename[MAX_PATH];
GetModuleFileName(NULL,filename,(sizeof(filename))/(sizeof char));
PathCchRemoveFileSpec(filename,(sizeof(filename))/(sizeof char));
PathCchCombine(filename,(sizeof(filename))/(sizeof char),filename,"./7zip/7zip.exe");
//the absolute path of 7z.exe is now in filename

文档GetModuleFileName

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx

PathCchRemoveFileSpec

http://msdn.microsoft.com/en-us/library/hh707092(v=vs.85).aspx

PathCchCombine

http://msdn.microsoft.com/en-us/library/hh707085(v=vs.85).aspx

于 2013-08-30T12:41:24.403 回答