我正在开发一个需要解压.zip
个文件的程序。在尝试了几种不同的方法之后,我能找到的唯一能满足我所有需求的方法是7z.exe
。因为我可以将可执行文件的位置硬编码到代码中,所以我正在开发它。但是,如果其他人试图使用它,该部分将无法正常工作。有没有办法让他们访问这个?谢谢!
答案 0 :(得分: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