Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Распаковать архив 7-zip из программы на компьютере, где нет архиваторов (http://forum.oszone.net/showthread.php?t=271258)

Pavluha 03-11-2013 15:47 2246606

Распаковать архив 7-zip из программы на компьютере, где нет архиваторов
 
Здравствуйте. В файл программы внедрён (функцией 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 2246612

Используйте перед распаковкой архива (к примеру):
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 2246621

-TRM-, я так и думал, в принципе, делать, однако нет ли других способов?

-TRM- 04-11-2013 15:22 2247214

Pavluha, а какие ещё способы могут быть если у человека нет зипа?

Pavluha 04-11-2013 17:12 2247260

Цитата:

Цитата -TRM-
Pavluha, а какие ещё способы могут быть если у человека нет зипа? »

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

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

-TRM- 04-11-2013 17:54 2247282

Pavluha, Ну тогда не забываем ставить тему в состояние-решено.

Iska 04-11-2013 22:00 2247440

Цитата:

Цитата -TRM-
а какие ещё способы могут быть если у человека нет зипа? »

Например, CAB ;).

-TRM- 05-11-2013 10:53 2247701

Iska, CAB нормально будет распаковывать ZIP архивы?

Iska 05-11-2013 10:56 2247703

-TRM-, сомневаюсь. Я имел в виду и использовать архивы cab вместо zip.


Время: 05:03.

Время: 05:03.
© OSzone.net 2001-