Вопросы По WPI
|
Старожил Сообщения: 286 |
Профиль | Отправить PM | Цитировать
Windows Post Install Wizard (WPI) Официальный сайт WPI Официальный форум WPI на MSFN.org Обзор WPI в статье "Выбор устанавливаемых приложений" (там рассказ о старой версии, но кое-что почерпнуть можно) Для тех кто в танке: WPI не волшебная палочка и сама по тихому программы устанавливать не умееет!!! Очень внимательно читаем материалы хотя бы по этим и этой ссылкам! Полезные сообщения в теме: |
|
Отправлено: 03:34, 10-03-2005 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать DeleteIt
Цитата:
Открываем program.js и меняем функцию ProgsInCat() на следующее: function ProgsInCat(whichCat) { position="program.js"; whatfunc="ProgsInCat()"; var i, res; res = 0; for(i=1; prog[i]; i++) { if (cond[i] && cond[i][0]) if (cat[i] && cat[i]==whichCat && eval(unescape(ReplacePath(cond[i][0]).replace(/\\/g, "\\\\")))) res++; else; else if (cat[i] && cat[i]==whichCat) res++; } return res; } function InstallOne(item,cmdName) { position="installer.js"; whatfunc="InstallOne()"; var cmd, ReturnCode, result; CheckInstaller(); cmd=eval('programs['+item+'].'+cmdName); if (cmd==null || (cmdLine=ReplacePath(cmd[0]))=='') return; if (cmdName=='regb' || cmdName=='rega') { if (!FileExists(cmdLine)) { programs[i].fail=true; cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' *** Fail *** (File does not exist): RegEdit /S "'+cmdLine+'"'); return; } if (cmdLine.indexOf(" ") != -1 && cmdLine.substr(0,1) != '"') cmdLine='"'+cmdLine+'"'; cmdLine="RegEdit /S "+cmdLine; } else cmdLine=handleCommand(cmdLine); try { ReturnCode=WshShell.Run(cmdLine,1,true); result='Success'; programs[i].success=true; } catch(ex) { result='*** Fail ***'; programs[i].fail=true; } cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' '+result+' (returned code '+ReturnCode+'): "'+cmdLine+'"'); } function InstallOne(item,cmdName) { position="installer.js"; whatfunc="InstallOne()"; var cmd, ReturnCode, result; CheckInstaller(); cmd=eval('programs['+item+'].'+cmdName); if (cmd==null || (cmdLine=ReplacePath(cmd[0]))=='') return; if (cmdName=='regb' || cmdName=='rega') { if (!FileExists(cmdLine)) { programs[item].fail=true; cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' *** Fail *** (File does not exist): RegEdit /S "'+cmdLine+'"'); return; } if (cmdLine.indexOf(" ") != -1 && cmdLine.substr(0,1) != '"') cmdLine='"'+cmdLine+'"'; cmdLine="RegEdit /S "+cmdLine; } else cmdLine=handleCommand(cmdLine); try { ReturnCode=WshShell.Run(cmdLine,1,true); result='Success'; programs[item].success=true; } catch(ex) { result='*** Fail ***'; programs[item].fail=true; } cmdName=(cmdName=='regb') ? 'Reg Before' : (cmdName=='rega') ? 'Reg After' : cmdName; WriteLogLine(cmdName+' '+result+' (returned code '+ReturnCode+'): "'+cmdLine+'"'); } for(i=0; i<programs.length && programs[i] != null && !BreakLoop; i++) { ce++; programs[i].success=false; programs[i].fail=false; UpdateInstallList(ce,programs); StartLogEntry(programs[i]); InstallOne(i,'regb'); CheckInstaller(); for(j=1; j<=6 && !BreakLoop; j++) { InstallOne(i,'cmd'+j); CheckInstaller(); } CheckInstaller(); InstallOne(i,'rega'); CheckInstaller(); WriteLogLine("Finished installation"); UpdateProgressBar(Math.round((ce/programs.length)*100)); Pause(0,250); } for(k=0; k<programs.length && programs[k] != null && !BreakLoop; k++) { ce++; programs[k].success=false; programs[k].fail=false; UpdateInstallList(ce,programs); StartLogEntry(programs[k]); InstallOne(k,'regb'); CheckInstaller(); for(j=1; j<=6 && !BreakLoop; j++) { InstallOne(k,'cmd'+j); CheckInstaller(); } CheckInstaller(); InstallOne(k,'rega'); CheckInstaller(); WriteLogLine("Finished installation"); UpdateProgressBar(Math.round((ce/programs.length)*100)); Pause(0,250); } |
|
Отправлено: 18:47, 03-08-2006 | #251 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Ok, tnhx, возьмем на заметку, правда я за это время свой скрипт с гуем успел накалякать на AutoIt.
Суть такова, на стадии T12 запускаем скрипт, он с инишника считывает приложения и выводит массив чекбоксов. Для отмеченных создаются ключи в RunOnceEx. Для выбранного приложения можно запустить 2 дополнительных и импорт файла реестра. Если есть интерес - могу выложить. |
Отправлено: 08:05, 08-08-2006 | #252 |
Пользователь Сообщения: 92
|
Профиль | Отправить PM | Цитировать DeleteIt Интерес есть. Выложи пожалуйста.
|
Отправлено: 13:05, 08-08-2006 | #253 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Ок, ловите, только чур ногами не больно пинать т.к. с AutoIt знаком лишь неделю.
Ограничения: т.к. скрипт запускается на стадии T12 - разрешение всего 640*480, больше 60 приложений в диалог уже трудно вместить. Это собственно скрипт: #include <Array.au3> #include <GuiConstants.au3> #Include <process.au3> Opt("GUIOnEventMode", 1) ;~ Переменные используемые в скрипте: ;~ $Border - Отступ\промежуток между колонками checkbox ;~ $HOtst - отступ сверху ;~ $wicol - ширина checkbox ;~ $nrow - кол-во рядов checkbox ;~ $distr - путь к папке с дистрибутивами на CD Dim $ns, $ps, $ks, $inifile = @ScriptDir & '\AppInstall.ini', $distr='\Soft\' Dim $Border = 10, $HOtst = 30, $YCurr = $HOtst, $XCurr = $Border, $ncol = 3, $wicol = 190, $nrow = 20, $currrow = 1 Dim $CHB_ARRAY Dim $CD=OsGetCD ('Win51') Const $Key='HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx' $cnt_sect = IniReadSectionNames($inifile) GuiCreate("Установка приложений", 620, 460,-1, -1) GUICtrlCreateLabel ('Выберите приложения для автоматической установки:', 100, 15) GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents") For $i = 1 To $cnt_sect[0] $ns=IniRead ( $inifile, $cnt_sect[$i], "Name", "0" ) $ps=IniRead ( $inifile, $cnt_sect[$i], "Path", "0" ) If $ns <> '0' And $ps <> '0' Then $ind=$cnt_sect[$i] If $CHB_ARRAY=="" Then $CHB_ARRAY=$ind Else $CHB_ARRAY = $CHB_ARRAY & '-' & $ind EndIf EndIf Next $CHB_ARRAY = StringSplit ($CHB_ARRAY, '-') Dim $int = $CHB_ARRAY[0] Dim $CH_ARRAY[$int] For $i = 1 To UBound ($CHB_ARRAY) - 1 $ns=IniRead ( $inifile, $CHB_ARRAY[$i], "Name", "0" ) $ind = $i-1 $currrow = $currrow + 1 $CH_ARRAY[$ind] = OsCreateChBox ($ns, $XCurr, $YCurr, $wicol, 15) $YCurr=$YCurr + 20 If $currrow > $nrow Then $YCurr=$HOtst $XCurr=$XCurr + $wicol + $Border $currrow = 0 EndIf Next GUISetState (@SW_SHOW) While 1 Sleep(10) Wend Func OsGetCD ($file) $var = DriveGetDrive("CDROM") If NOT @error Then For $i = 1 to $var[0] If FileExists ($var[$i] & '\' & $file) Then MsgBox(4096,"Found CDROM" & $i, 'Installation CDROM Label is - ' & $var[$i] & @CRLF & 'Starting Setup.') $CD = $var[$i] EndIf Next EndIf Return $CD EndFunc Func SpecialEvents () _RunDos('REG ADD ' & $Key & ' /V TITLE /D "Installing Applications" /f') For $i = 0 to UBound ($CH_ARRAY) - 1 $chstate = GUICtrlRead ($CH_ARRAY[$i]) $ind = $i + 1 $ns=IniRead ( $inifile, $CHB_ARRAY[$ind], "Name", "0" ) $ps=IniRead ( $inifile, $CHB_ARRAY[$ind], "Path", "0" ) $ps2=IniRead ( $inifile, $CHB_ARRAY[$ind], "Path2", "0" ) $ps3=IniRead ( $inifile, $CHB_ARRAY[$ind], "Path3", "0" ) $reg=IniRead ( $inifile, $CHB_ARRAY[$ind], "Reg", "0" ) If StringLen ($ind) = 1 Then $ind = '00' & $ind Else $ind = '0' & $ind EndIf If Number($chstate) = Number($GUI_CHECKED) Then _RunDos('REG ADD ' & $Key & "\" & $ind & ' /VE /D "' & $ns & '" /f') _RunDos('REG ADD ' & $Key & "\" & $ind & ' /V 1 /D "' & $CD & $distr & $ps & '" /f') If $ps2 <> '0' And $ps2 <> '' Then _RunDos('REG ADD ' & $Key & "\" & $ind & ' /V 2 /D "' & $CD & $distr & $ps2 & '" /f') EndIf If $ps3 <> '0' And $ps3 <> '' Then _RunDos('REG ADD ' & $Key & "\" & $ind & ' /V 3 /D "' & $CD & $distr & $ps3 & '" /f') EndIf If $reg <> '0' And $reg <> '' Then _RunDos('REG ADD ' & $Key & "\" & $ind & ' /V 4 /D "' & 'REGEDIT /S ' & $CD & $distr & $reg & '" /f') EndIf EndIf Next Exit EndFunc Func OsCreateChBox ( $Label, $posX, $posY, $L, $H) $Curr_CHB = GuiCtrlCreateCheckbox($Label, $posX, $posY, $L, $H) GUICtrlSetState ($Curr_CHB, 1) Return $Curr_CHB EndFunc AppInstall.ini ; Примечание, если в пути есть кавычки - перед ними необходим слеш \" !!! [1] Name=Outpost Firewall 3.51 Path=OutPost\setup.exe Path2= Path3= Cond= Reg= ... [3] Name=Ligth Alloy 4 Path=LA\LAsetup.exe /S \"/Path=%ProgramFiles%\LA\" /StMenu=1 /Desktop=1 /Assoc=0 Path2= Path3= Cond= Reg= .... [14] Name=PoverDVD 7 Path=PoverDVD\PowerDVD7.exe Path2=PoverDVD\Russ.exe Path3= Cond= Reg=PoverDVD\powerdvd.reg Имена секций - цифры по порядку, Я компилированный скрипт и ini файл кидаю в $OEM$ и вызываю из батника через cmdlines.txt после установки DX и пр. софта необходимого на любой машине. |
Отправлено: 16:48, 08-08-2006 | #254 |
Ветеран Сообщения: 508
|
Профиль | Отправить PM | Цитировать Здравствуйте все.
Ставлю софт с CD-Roma с помощью WPI 5.2. (До этого пользовал 4.3.8, все было нормально). Теперь при запуске WPI выскакивает ошибка сценария: Строка: 42 Символ: 3 Ошибка:Объектная переменная или переменная блока With не задана" Код: 0 URL: file://d:\soft\wpi52\wpi.hta вот здесь Перешел на 5.3, и все получилось... |
Последний раз редактировалось snark, 09-08-2006 в 13:48. Отправлено: 11:38, 09-08-2006 | #255 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать Вышла новая версия WPI - 5.3 (8 августа 2006) Список изменений.
Впечатления от перехода с версии 5.1 на 5.3:
Модифицированные скрипты для WPI 5.3 с отключенным функционалом отметки чекбоксов категорий вкладываю в этот пост. |
------- Отправлено: 09:46, 10-08-2006 | #256 |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать господа обьясните идиоту плиз. В свое время запускал WPI 4xxx через RunOnceEx.cmd и усе работало. Но в 5 версии больше нет WPI.cmd и я не знаю как его запустить после установки. Пытался в стартовой строке заменить WPI.cmd на WPI.hta не сработало. Плиз хелп как его после инсталла на автостарт запихнуть.
|
------- "Чем больше мы умнеем, тем больше понимаем что мы глупцы."
Отправлено: 16:41, 16-08-2006 | #257 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Dark Engel
Цитата:
|
|
Отправлено: 18:52, 16-08-2006 | #258 |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- "Чем больше мы умнеем, тем больше понимаем что мы глупцы."
Отправлено: 19:27, 16-08-2006 | #259 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать У меня как было все настроено, так и осталось. Через wpi.cmd от старой версии. Только каталог WPI подсунул от новой версии и заново все программы вбил, т.к. подсунуть старые настройки не получилось.
|
Отправлено: 13:51, 17-08-2006 | #260 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] создал WPI икону / WPI.ico / для него и файл Autorun.inf | tim75 | Хочу все знать | 7 | 25-02-2013 06:48 | |
WPI.autorun | Pris | Автоматическая установка Windows 2000/XP/2003 | 10 | 16-01-2012 06:07 | |
Пакет русификации WPI .:[все вопросы]:. | Aspirine | Автоматическая установка Windows 2000/XP/2003 | 19 | 08-08-2010 01:43 | |
wpi-wpi | d2201 | Автоматическая установка Windows 2000/XP/2003 | 11 | 13-04-2005 10:19 | |
PROXY-сервера ---- вопросы, вопросы, вопросы | Galosh | Хочу все знать | 2 | 09-07-2003 00:57 |
|