Что нового

Не распаковывать архив если он уже был распакован

.me

Новичок
Сообщения
89
Репутация
1
Всем привет, подскажите

Код:
If @OSArch = "X86" Then
$sUrlOfFile = ("http://site.ru/soft32.zip")
Else
$sUrlOfFile = ("http://site.ru/soft64.zip")
EndIf

Local $hDownload = InetGet($sUrlOfFile, @TempDir & "\soft.zip", 1, 1)
Do
    Sleep(250)
Until InetGetInfo($hDownload, 2)

$gszip = @TempDir & "\soft.zip"
$mydir = @AppDataDir & "\game"
$iFlag1 = + 4 + 16
_Zip_UnzipAll($gszip, $mydir, iFlag1)
ConsoleWrite(@error & @CRLF)

т.е если по данному пути
Код:
@AppDataDir & "\game"
есть уже папка с файлами, запрашивает подтверждение, возможно ли убрать это или не распаковывать повторно?
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
если перезапись не нужна, то перед распаковкой можно проверять наличие папки
Код:
FileExists

если нужно повторно копировать несмотря на наличие папки, то сначала удалить папку а потом извлекать архив
при перезаписи при распаковке использовать флаг 16
Код:
_Zip_UnzipAll($sZipFile, $sFolder, 16)

насколько я понял из справки
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
joiner, перезапись не получится, т.к exe запущен и перезаписать, например, используемые ддл и ехе файл не даст.

сделал примерно так

Код:
If Not FileExists(@AppDataDir & "\game") Then
$gszip = @TempDir & "\soft.zip"
$mydir = @AppDataDir & "\game"
$iFlag = + 4 + 16
_Zip_UnzipAll($gszip, $mydir, $iFlag)
ConsoleWrite(@error & @CRLF)
EndIf
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
если это обновление программы, то, естественно, все модули программы должны быть выгружены, а на ходу обновлять не получится. так что нужно что то выбирать
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
joiner, нет, это не обновление, это от повторного запуска
 
Верх