PDA

Показать полную графическую версию : [решено] Распаковка файлов


Str_ani_ck
09-08-2009, 20:48
Мне нужно сделать так чтобы распаковался архив в C:\Tempload\ , но потом после распаковки запустился файл C:\Tempload\Bin\acadFeui\Setup.exe

Run ("C:\Tempload\Install.exe")
WinWait("Самораспаковывающийся архив WinRAR","&Папка назначения:")
ControlClick("Самораспаковывающийся архив WinRAR","&Папка назначения:","Button2")
Sleep (2000)
Run ("C:\Tempload\Bin\acadFeui\Setup.exe")


Но архив еще распаковался полностью , а эта команда уже нашла и запустила Setup.exe, соответсвенно никакой установки не получается.


Run ("C:\Tempload\Bin\acadFeui\Setup.exe")

Как можно этого избежать?

Nik_rus
09-08-2009, 21:08
Вместо слипа нужно использовать это:
WinWaitClose("Самораспаковывающийся архив WinRAR")
Да, все верно.
Вот код автоматический) :
$exe = "drive.exe" ;exe шник от винраровского архива
$pass = "drive" ; пароль
$usepass = 1 ; использовать ли пароль
$dir = "\dir" ; Папка
Run($exe)
WinWaitActive("Самораспаковывающийся архив WinRAR","",60)
ControlSetText("Самораспаковывающийся архив WinRAR","","[CLASS:Edit; INSTANCE:1]",$dir)
ControlClick("Самораспаковывающийся архив WinRAR","","[CLASS:Button; INSTANCE:2]")
If $usepass = 1 Then
WinWaitActive("Ввод пароля","",60)
ControlSetText("Ввод пароля","","[CLASS:Edit; INSTANCE:1]",$pass)
ControlClick("Ввод пароля","","[CLASS:Button; INSTANCE:1]")
EndIf
WinWaitClose("Самораспаковывающийся архив WinRAR")
Run("notepad.exe")
А дальше все сами

Str_ani_ck
10-08-2009, 00:36
Спасибо действительно работает, я уже программ пять переделал под автоматическую установку. Все это так интересно.

$exe = "drive.exe" ;exe шник от винраровского архива
$pass = "drive" ; пароль
$usepass = 1 ; использовать ли пароль
$dir = "\dir" ; Папка
Run($exe)
WinWaitActive("Самораспаковывающийся архив WinRAR","",60)
ControlSetText("Самораспаковывающийся архив WinRAR","","[CLASS:Edit; INSTANCE:1]",$dir)
ControlClick("Самораспаковывающийся архив WinRAR","","[CLASS:Button; INSTANCE:2]")
If $usepass = 1 Then
WinWaitActive("Ввод пароля","",60)
ControlSetText("Ввод пароля","","[CLASS:Edit; INSTANCE:1]",$pass)
ControlClick("Ввод пароля","","[CLASS:Button; INSTANCE:1]")
EndIf
WinWaitClose("Самораспаковывающийся архив WinRAR")
Run("notepad.exe")

FlatX007
10-08-2009, 06:56
Непойму никак зачем нажимать AutoIT`ом на кнопки интерфейса WinRar`а если есть консольный WinRar ... (все параметры указываем через командною строку)

crashtuak
10-08-2009, 07:49
Str_ani_ck, FlatX007, а я ваще не врублюсь, если можно использовать SFX архивы_запустил архив с ключем пароля, и все дела,вообще никаких кнопок жать не надо :).

FlatX007
10-08-2009, 10:42
Прочиатай ещё раз внимательно мой пост выше ... я тоже самое написал

Nik_rus
10-08-2009, 13:10
Кхм, а если через ком-строку то так:
$exe = "drive.exe" ;exe шник от винраровского архива
$pass = "drive" ; пароль
$usepass = 1 ; использовать ли пароль
$dir = "D:\AutoIt\AutoKey\dir" ; Папка
If $usepass=1 Then
Run($exe & " -d" & $dir & " -p" & $pass & " -s2")
Else
Run($exe & " -d" & $dir & " -s2")
EndIf
WinWaitClose("Самораспаковывающийся архив WinRAR")
Run("notepad.exe")
Вот так

Medic84
10-08-2009, 13:23
Непойму никак зачем нажимать AutoIT`ом на кнопки интерфейса WinRar`а если есть консольный WinRar ... (все параметры указываем через командною строку) »
Ну учится человек! Это его практика :) Я вот тоже ерундой занимался когда то :)




© OSzone.net 2001-2012