Как увеличить переносимость 7z.exe

Я работаю над программой, которую нужно распаковать .zip файлы. Попробовав несколько разных способов сделать это, я смог найти только один, который работал для всех моих потребностей. 7z.exe, Он прекрасно работает во время разработки, так как я могу просто жестко закодировать местоположение исполняемого файла в коде. Однако, если кто-то еще попытается использовать его, эта часть не будет работать. Есть ли способ разрешить им доступ к этому? Спасибо!

0

Решение

Я предлагаю вам использовать библиотеку сжатия (взгляните на 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector