Войти

Показать полную графическую версию : [решено] Распаковать архив 7-zip из программы на компьютере, где нет архиваторов


Pavluha
03-11-2013, 15:47
Здравствуйте. В файл программы внедрён (функцией FileInstall) архив 7-zip. Мне нужно закинуть этот архив во временную папку, получить содержимое архива, переместить разархивированные файлы в место назначения и удалить временную папку. Предположим, что у пользователя не установлен архиваторы 7-zip, WinRAR и им подобные. Как распаковать архив?

Вот код программы:

GUICreate ('Тест', 500, 40)
GUICtrlCreateLabel('Распаковать в:',10,10,90,20)
$hInput = GUICtrlCreateInput('',100,10,300,20)
$hButton = GuiCtrlCreateButton('Обзор',400,10,40,20)
$hButtonNext = GUICtrlCreateButton ('Далее>',450,10,50,20)

GUISetState()

While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case $hButton
$sPath = FileSelectFolder('Выберите папку:','',4,GuiCtrlRead($hInput))
GuiCtrlSetData($hInput,$sPath)
Case $hButtonNext
_ExtractArchive()
EndSwitch
WEnd

Func _ExtractArchive()
$sDir = @TempDir & '\sljkghklsdg'
DirCreate($sDir)
FileInstall('somefile.7z',$sDir & '\somefile.7z')
_Extract($sDir & '\somefile.7z',GUICtrlRead($hInput))

DirRemove($sDir)
EndFunc


Нужна функция _Extract()

-TRM-
03-11-2013, 16:01
Используйте перед распаковкой архива (к примеру):
FileInstall("С:\7z\7z.dll", @ScriptDir & "\7z.dll", 1)
FileInstall("С:\7z\7za.exe", @ScriptDir & "\7za.exe", 1)
и потом передавайте уже команды в @ScriptDir & "\7za.exe"

Pavluha
03-11-2013, 16:14
-TRM-, я так и думал, в принципе, делать, однако нет ли других способов?

-TRM-
04-11-2013, 15:22
Pavluha, а какие ещё способы могут быть если у человека нет зипа?

Pavluha
04-11-2013, 17:12
Pavluha, а какие ещё способы могут быть если у человека нет зипа? »

а чёрт его знает. мне бы просто хотелось увидеть вариант с меньшим размером так сказать файлов распаковщиков. стандартная библиотека весит аж 900 кб.

всё, нашёл решение (чисто случайно). в папке моей любимой игры World Of Tanks нашёл точно такую же библиотеку, только размером 170 кб (или она сжата, или вырезаны какие-то ненужные функции), и притом рабочая (распаковывать может, а упаковку могу реализовать сам через консоль).

-TRM-
04-11-2013, 17:54
Pavluha, Ну тогда не забываем ставить тему в состояние-решено.

Iska
04-11-2013, 22:00
а какие ещё способы могут быть если у человека нет зипа? »
Например, CAB (http://ru.wikipedia.org/wiki/CAB) ;).

-TRM-
05-11-2013, 10:53
Iska, CAB нормально будет распаковывать ZIP архивы?

Iska
05-11-2013, 10:56
-TRM-, сомневаюсь. Я имел в виду и использовать архивы cab вместо zip.




© OSzone.net 2001-2012