Что нового

Зацикливание выполнения

DimDim

Новичок
Сообщения
1
Репутация
0
Вопрос состоит в следующем, при запуске скрипта он во-первых только со 2-3 раза отрабатывает полностью, а во вторых через некоторые время может сам повторно запускаться.
Даже при компиляции exeшника и его запуске происходит точно такая же картина. Никаких циклов или чего-нибудь подобного нет в скрипте, он совершенно простой.
Собственно кроме установки и копирования файлов там ничего больше и нет.. это какой-то баг или есть неточности в скрипте?
Вставлял msgbox, что бы хоть как-то понять, где он затыкается и отследить ход выполнения.
Еще раздумывал о принудительном завершение в конце файла, но есть ли смысл..
Все выполняется из под админа

Код:
;-----------------------------------------------------------------------
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#RequireAdmin
AutoItSetOption('MouseCoordMode',0)

MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")

;------------------------------------------------------------------
;Установка ISetup

ShellExecuteWait(@ScriptDir & "\ISetup.msi")

WinWaitActive("ISetup")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(10000)
Send("{ENTER}")

MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")


;------------------------------------------------------------------
; Установка клиента

Run(@ScriptDir & "\Client-Setup.exe")

WinWaitActive("Установка — Client")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{TAB}")
Sleep(2000)
Send("{UP}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{DOWN}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(10000)
Send("{ENTER}")


MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")

;------------------------------------------------------
;Копирование папок

ShellExecute("C:\Program Files (x86)\Soft\Client")
DirCopy(@ScriptDir &"\Calculators","C:\Program Files (x86)\Soft\Client\Calculators", 1)
Sleep(1000)
FileCopy(@ScriptDir &"\Client.exe.config","C:\Program Files (x86)\Soft\Client", 9)

Sleep(2000)

MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")

;-----------------------------------------------------------------------------------------
 
Последнее редактирование модератором:

Glass4217

Знающий
Сообщения
106
Репутация
12
Попробуйте разбить скрипт на фукции, это очень удобно

Код:
_Isetup()
Func _Isetup()
;Установка ISetup

ShellExecuteWait(@ScriptDir & "\ISetup.msi")

WinWaitActive("ISetup")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("{ENTER}")
Sleep(10000)
Send("{ENTER}")

MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")
EndFunc

И я очень не уверен что вам нужно использовать
Код:
ShellExecuteWait
 

InnI

AutoIT Гуру
Сообщения
4,548
Репутация
1,249
@DimDim
Код:
MsgBox(0,"Info","If Close - OK")
Sleep(2000)
WinWaitActive("Info")
Send("{ENTER}")

Если этим кодом вы пытаетесь закрыть само сообщение MsgBox, то не сможете. Окно MsgBox нужно закрывать вручную. Соответственно, после закрытия скрипт ожидает активного окна "Info", при отсутствии которого будет ждать вечно... до запуска второй копии скрипта.
 
Верх