2013-08-30 18 views
0

我正在研究需要解壓縮.zip文件的程序。在嘗試了幾種不同的方法來完成這項工作之後,唯一能找到滿足我所有需求的方法是7z.exe。由於我可以將可執行文件的位置硬編碼到代碼中,因此它可以很好地工作。但是,如果其他人試圖使用它,該部分將不起作用。有什麼方法可以讓他們訪問嗎?謝謝!如何增加7z.exe的可移植性

+5

你可以使用lib7zip,我猜。 –

+0

7zip是開源的 - 隨時使用它: http://sourceforge.net/projects/sevenzip/ – Stefan

回答

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

+0

我沒有想到壓縮庫,謝謝! – thnkwthprtls