<分区>
我正在开发一个需要解压缩 .zip
文件的程序。在尝试了几种不同的方法之后,我发现唯一可以满足我所有需求的方法是 7z.exe
。它在我开发时效果很好,因为我可以将可执行文件的位置硬编码到代码中。但是,如果其他人尝试使用它,那部分将不起作用。有什么办法可以让他们访问这个吗?谢谢!
<分区>
我正在开发一个需要解压缩 .zip
文件的程序。在尝试了几种不同的方法之后,我发现唯一可以满足我所有需求的方法是 7z.exe
。它在我开发时效果很好,因为我可以将可执行文件的位置硬编码到代码中。但是,如果其他人尝试使用它,那部分将不起作用。有什么办法可以让他们访问这个吗?谢谢!
最佳答案
我建议您使用压缩库(查看 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
关于c++ - 如何增加 7z.exe 的可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532791/