Показать полную графическую версию : Вопросы По WPI
north_crow
13-07-2006, 08:18
Запуск настроек в WPI v.5.1 приводит к сообщению: Невозможно открыть './wpiscripts/useroptions.js, выберете по умолчанию
в скаченом тобой архиве нету файла useroptions.js - просто войди в настройки и нажми SAVE и тогда файл создастся.
Vlad_zone
13-07-2006, 19:48
Это я проверил сразу - файл не создается. Подставил useroptions.js из вер. 5.0, читает, но при попытке сохранить изменения выдает ошибку функции SaveOptions() в линии 1466 файла optionswizard.js. Файл config.js в конфигурации не видит вобще, хотя при запуске все программы видны и даже происходит запуск. Архив качал с родного сайта.
Sanja Alone
14-07-2006, 01:33
gora
Файл русского языкаИзвини, что не отписал сразу - пропустил твой пост :( Подправил пункт txtDebugMode[lang] и выложил файл на форуме MSFN в ветке WPI 5.1 Translations (http://www.msfn.org/board/index.php?showtopic=77872).
north_crow
у меня везде в конце строк стоит ;Скорее всего, где-то есть еще какие-то ошибки. У меня после указанной правки зацикливание установки более не имело места. Во избежание потенциальных проблем при переходе на новую версию, рекомендую воспользоваться моим методом: перенесение настроек из старых файлов в соотв. файлы новой версии с соблюдением требований новой версии (это касается как настроек, так и тем; тем даже в большей мере, т.к. там изменения более существенные).
при инсталяции совершенно случайным образом некоторые пункты помечаются красным ХНасколько я понял при поиске возможной причины проблемы, то она проявляется при пролистывании списка устанавливаемых приложений, т.е. при установке большего кол-ва приложений, чем помещается на одной странице установщика WPI (по ум., вроде 20). Как я уже сказал выше, мне помогло именно дописывание "точек с запятой".
Vlad_zone
файл не создаетсяWPI с винта запускал? Путь к useroptions.js менял? А подсовывая старый файл выбросил ли оттуда переменную DiscPath? Дописал ли туда новые переменные SortWithinCats, RestartType, DoNotLoadDesktop? (хотя, это и не должно быть причиной проблем, т.к. в globals.js прописаны дефолтные значения всех переменных).
выдает ошибку функции SaveOptions() в линии 1466Вот эта линия:tf = fso.CreateTextFile(strFile, true);Если не создается файл, то это означает, что или указаны недопустимые путь/имя файла или нет доступа к диску/каталогу, куда должен быть записан файл.
north_crow
14-07-2006, 08:20
Скорее всего, где-то есть еще какие-то ошибки. У меня после указанной правки зацикливание установки более не имело места. Во избежание потенциальных проблем при переходе на новую версию, рекомендую воспользоваться моим методом: перенесение настроек из старых файлов в соотв. файлы новой версии с соблюдением требований новой версии (это касается как настроек, так и тем; тем даже в большей мере, т.к. там изменения более существенные).
проблема с зацикливанием решена!
опытным путем обнаружилось, что зацикливание начинается если идит запуск программ инсталяции не с компашки а с жесткого дика (у меня парочка маленьких утилиток лежало в $OEM$\$$). как только я эти утилиты переместил на компашку и с нееже запускал - то зацикливания исчезли!
Vlad_zone
14-07-2006, 22:07
Всем спасибо! Вопрос с запуском решился очень просто. Надо было при первом запуске указать фактические пути расположения файлов useroptions.js и config.js кнопкой "новые настройки". При следующем сапуске все видит. Помогли Ваши подсказки.
Sanja Alone
15-07-2006, 02:56
north_crow
у меня парочка маленьких утилиток лежало в $OEM$\$$Вероятно, причина проблемы именно в баксах, а не в том, что запуск осуществлялся с HDD. У меня все пашет нормально с обоих типов носителей, правда, проги лежат в более правильных :) каталогах.
Я тоже думаю, что причина не в том, откуда запускаются программы, т.к у меня проблема решилась после того как я удалил из конфига все проги, кроме одной, а потом повторно их внес, ничего другого при этом не трогая....
alexinn63
18-07-2006, 23:31
у меня английская версия с русским Mui устанавливаю в версии 5.1 русский сохраняю и вижу какие-то крокозяблы.подскажите.скачал lang_ru.js все равно не помогает.спасибо заранее
DenchikK
19-07-2006, 00:16
alexinn63
У меня так же английская версия но все работает без крокозяблов тебе надо поменять кодовую странницу помог как здорово оказывается писать без знаков припинания всегда так дальше делать буду должно помочь правда всё понятно
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1252"="c_1251.nls"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Arial,0"="Arial,204"
"Comic Sans MS,0"="Comic Sans MS,204"
"Courier,0"="Courier New,204"
"Microsoft Sans Serif,0"="Microsoft Sans Serif,204"
"Tahoma,0"="Tahoma,204"
"Times New Roman,0"="Times New Roman,204"
"Verdana,0"="Verdana,204"
DeleteIt
01-08-2006, 08:05
Версия 5.1, соотв. никакой документации нет :(
Вопрос в следующем - скрипт инсталляции зацикливается, т.е. после установки всех приложений идет на 2-й и 3-й круг, пока в диспетчере не прибьешь процесс.
С чем сие может быть связано?
DeleteIt
скрипт инсталляции зацикливается
Промучался с этой проблемой несколько дней, пока не залез на MSFN, благо английский еще не совсем забыл, там и нашел решение, спасибо товарищу sadicq ...
Открываем 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;
}
Далее в installer.js меняем функцию
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);
}
После данных изменений глюк с зацикливанием больше не проявляется, я после этого по крайней мере раз десять уже переписывал свой конфиг - все работает !
DeleteIt
08-08-2006, 08:05
Ok, tnhx, возьмем на заметку, правда я за это время свой скрипт с гуем успел накалякать на AutoIt. :)
Суть такова, на стадии T12 запускаем скрипт, он с инишника считывает приложения и выводит массив чекбоксов.
Для отмеченных создаются ключи в RunOnceEx.
Для выбранного приложения можно запустить 2 дополнительных и импорт файла реестра.
Если есть интерес - могу выложить.
DeleteIt Интерес есть. Выложи пожалуйста.
DeleteIt
08-08-2006, 16:48
Ок, ловите, только чур ногами не больно пинать :) т.к. с 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
Формат ini в этом случае такой:
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
Параметр Cond - никак пока не используется.
Имена секций - цифры по порядку,
Я компилированный скрипт и ini файл кидаю в $OEM$ и вызываю из батника через cmdlines.txt после установки DX и пр. софта необходимого на любой машине.
Здравствуйте все.
Ставлю софт с CD-Roma с помощью WPI 5.2. (До этого пользовал 4.3.8, все было нормально). Теперь при запуске WPI выскакивает ошибка сценария:
Строка: 42
Символ: 3
Ошибка:Объектная переменная или переменная блока With не задана"
Код: 0
URL: file://d:\soft\wpi52\wpi.hta
Как быть?
вот здесь (http://www.msfn.org/board/index.php?showtopic=80250)
Перешел на 5.3, и все получилось... :)
Sanja Alone
10-08-2006, 09:46
Вышла новая версия WPI - 5.3 (http://www.wpiw.net/downloads/WPI_5.3.rar) (8 августа 2006) Список изменений (http://www.wpiw.net/changelog.htm).
Впечатления от перехода с версии 5.1 на 5.3:
Заметно некоторое ускорение WPI (полностью выброшен режим дебага -> уменьшилось к-во проверок в скриптах). Но это и потенциальный источник проблем - авторы WPI теперь могут допускать больше ошибок. То что они это умеют было заметно и по предыдущим версиям :)
Менюшки настройки, imho, стали похуже, да и с подписями авторы сильно напутали. Мне это как бы все равно, т.к. я всегда настройки вписывал вручную в соотв. js-файлы, но для простых юзеров это плохое "улучшение"...
Пропадание таймера при его отключении действительно удобно.
Не радует окончательная дезинтеграция кнопки "Manual". Выходит, что руководство по программе никто писать не собирается...
Очень удобна новая возможность изменения цвета выбранных для установки приложений (класс .chktxt в файле Themes\Имя_темы\wpi.css). Поставил себе приятный зеленый цвет color: #7DF27D;.
Вот такие двоякие эмоции вызвала у меня новая версия...
Модифицированные скрипты для WPI 5.3 с отключенным функционалом отметки чекбоксов категорий вкладываю в этот пост.
Dark Engel
16-08-2006, 16:41
господа обьясните идиоту плиз. В свое время запускал WPI 4xxx через RunOnceEx.cmd и усе работало. Но в 5 версии больше нет WPI.cmd и я не знаю как его запустить после установки. Пытался в стартовой строке заменить WPI.cmd на WPI.hta не сработало. Плиз хелп как его после инсталла на автостарт запихнуть. :(
Dark Engel
Но в 5 версии больше нет WPI.cmd и я не знаю как его запустить после установки.
Как это нет? Через него и запускаю. Разве что в дистрибе он не идет.
Dark Engel
16-08-2006, 19:27
Как это нет? Через него и запускаю. Разве что в дистрибе он не идет.
так его в дистре нет. где взять ?
У меня как было все настроено, так и осталось. Через wpi.cmd от старой версии. Только каталог WPI подсунул от новой версии и заново все программы вбил, т.к. подсунуть старые настройки не получилось.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC