Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скрипт для продолжения установки после отработки процесса

Ответить
Настройки темы
[решено] Скрипт для продолжения установки после отработки процесса

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Делаю установку MathCAD 14. Для чего запускаю скрипт CMD:

Код: Выделить весь код
IF  EXIST  "%ProgramFiles%\Mathcad\Mathcad 14\mathcad.exe" exit
IF  EXIST  "%systemroot%\PS.txt" goto XP
exit
:XP
start /wait Setup.exe /s /sms /v" /qn SILENTINSTALL=\"TRUE\" PRODUCTTYPE=\"ENT\" ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat
xcopy license "%ProgramFiles%\Mathcad\Mathcad 14\" /S /H /Y
start /wait REGEDIT /S license.reg
xcopy Rus "%ProgramFiles%\Mathcad\Mathcad 14\" /S /H /Y
exit
Проблема в том, что данный инсталятор запускает дочерний процесс установки, закрыв при этом Setup.exe (ключ /sms не помогает). Из за этого программа не успевает установится до конца а тут уже копируются файлы русификации и получается не то, что хотелось бы. Вот прошу помочь со скриптом, который бы реализовывал команды из моего CMD, при этом после запука команды:

Код: Выделить весь код
start /wait Setup.exe /s /sms /v" /qn SILENTINSTALL=\"TRUE\" PRODUCTTYPE=\"ENT\" ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat
необходимо чтобы остальные команды начали выполнятся после завершения работы процесса IDriver.exe, который появляется в Диспетчере задач вместо процесса Setup.exe. И еще хотелась бы пауза после завершения процесса IDriver.exe в 5-10 секунд (на всякий случай).
И также нужно в скрипте реализовать мои первых два условия проверки наличия установленной проги (если есть то завершение скрипта) и наличие маркерного файла (если его нет то завершение скрипта). Спасибо.

Отправлено: 23:32, 14-05-2009

 

Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


На AutoIt это будет выглядеть примерно так:

Код: Выделить весь код
#NoTrayIcon

If (FileExists(@ProgramFilesDir & '\Mathcad\Mathcad 14\mathcad.exe')) Or (Not FileExists(@SystemDir & '\PS.txt')) Then
    Exit
EndIf

RunWait('Setup.exe /s /sms /v /qn SILENTINSTALL=TRUE PRODUCTTYPE=ENT ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat')
Sleep(1000)
ProcessWaitClose('IDriver.exe')
Sleep(5000); На всякий случай
ShellExecuteWait('xcopy', 'license "' & @ProgramFilesDir & '\Mathcad\Mathcad 14\" /S /H /Y')
RunWait('Regedit.exe /S license.reg')
MsgBox(0, 'MathCAD 14', 'Установка завершена.')
Естественно я это не проверял, к тому же я мог напутать с параметрами при вызове Setup.exe. Надеюсь, если что, то ты сможешь поправить строку сам. Но на мой взгляд тебе проще вставит в свой CMD-файл проверку на существование этого "зловредного" процесса IDriver.exe. Реализовать это можно, например, с помощью VBS-скрипта.

Код: Выделить весь код
IF  EXIST  "%ProgramFiles%\Mathcad\Mathcad 14\mathcad.exe" exit
IF  EXIST  "%systemroot%\PS.txt" goto XP
exit
:XP
start /wait Setup.exe /s /sms /v" /qn SILENTINSTALL=\"TRUE\" PRODUCTTYPE=\"ENT\" ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat
Sleep.vbs
xcopy license "%ProgramFiles%\Mathcad\Mathcad 14\" /S /H /Y
start /wait REGEDIT /S license.reg
xcopy Rus "%ProgramFiles%\Mathcad\Mathcad 14\" /S /H /Y
exit
где Sleep.vbs представляет собой следующие:

Код: Выделить весь код
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objService, "Win32_Process").objectSet

Do Until False
    Wscript.Sleep 1000
    objRefresher.Refresh
    Flag = True
    For Each objItem in colItems
        If InStr(objItem.ExecutablePath, "IDriver.exe") Then
            Flag = False
        End If
    Next
    If Flag = True Then
        Exit Do
    End If
Loop

Wscript.Sleep 5000
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:31, 15-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Yashied, AutoIt не срабатывает, ну и да ладно. Второй вариант мне более понравился. Вопросик Маленький только:
Wscript.Sleep 5000 - это сколько секунд задержка и зачем в начале эта задержка? Для подстраховки чтобы успеть так сказать словить процесс нужный?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:15, 15-05-2009 | #3


Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


Так не пиши в батнике start и будет тебе счастье. start именно для того и предназначен, чтобы батник сразу продолжил работу.
Setup.exe /s /sms /v" /qn SILENTINSTALL=\"TRUE\" PRODUCTTYPE=\"ENT\" ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


Отправлено: 18:26, 15-05-2009 | #4


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Цитата Pozia:
Yashied, AutoIt не срабатывает, ну и да ладно. Второй вариант мне более понравился. Вопросик Маленький только:
Wscript.Sleep 5000 - это сколько секунд задержка и зачем в начале эта задержка? Для подстраховки чтобы успеть так сказать словить процесс нужный? »
Wscript.Sleep 5000 - задержка 5 сек (как ты сказал на всякий случай). Wscript.Sleep 1000 - задержка в цикле (1 сек). Нет смысла проверять слишком часто наличие процесса и загружать этим процессор. Одной секунды вполне достаточно.

Цитата Sylver Dragon:
Так не пиши в батнике start и будет тебе счастье. start именно для того и предназначен, чтобы батник сразу продолжил работу.
Setup.exe /s /sms /v" /qn SILENTINSTALL=\"TRUE\" PRODUCTTYPE=\"ENT\" ALLUSERS=1 PRODUCT_CODE=11111111111111-1111-1111 LICENSEPATH=license.dat »
У него написано start /wait. Это тоже самое, что и отсутствие этого. Проблема в том, как я понял, Setup.exe запускает другой процесс, а сам заканчивает свою работу не дожидаясь завершения запущенного процесса.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:29, 15-05-2009 | #5


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата Sylver Dragon:
start именно для того и предназначен, чтобы батник сразу продолжил работу »
вы ничего не путаете случайно? как я знаю start для запуска программы а /wait для ожидания завершения установки. Мне кажется без start все будет также

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:39, 15-05-2009 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скрипт для продолжения установки после отработки процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипт для выполнения команд после подтверждения Pozia AutoIt 14 27-06-2012 23:46
CMD/BAT - Скрипт для установки обновлений в win nt 4.0 ultra_fs Скриптовые языки администрирования Windows 4 14-01-2011 15:20
[решено] Блок компа и перезагрука после отработки батника Pozia AutoIt 7 26-01-2010 20:22
Любой язык - [решено] Скрипт который бы запускал 2 процесса и в случае убийства одного убивал бы и другой iDrug Скриптовые языки администрирования Windows 7 12-10-2009 19:08
Скрипт для установки MathType Pozia AutoIt 0 29-01-2009 00:41




 
Переход