Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для 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