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