Показать полную графическую версию : Вопросы По WPI
DenchikK
04-11-2005, 02:17
Всё таки очень мне понравилась идея с функцией FileExist. Сегодня все свои программы переделывал. Теперь вот думаю, как бы поизящней определять компоненты компютера, с целью установки не всех программ: то бишь если нет LAN не ставить сетевые программы, и далее по списку: модем, звуковая карта, пишущие приводы и проч. Пока в голову приходят слишком ненадёжные решения.
Sanja Alone
04-11-2005, 06:24
CTEPBA
У меня почемуто не работает при входе в систему выдается такое:У меня все работало без проблем и у тебя должно работать... Конечно, если ничего не намудришь :)
проблема вот еще в чем, а если в системе не один привод?Ну и что? Переменной cdrom будет присвоена буква диска (%~d0 (http://forum.oszone.net/showthread.php?t=46182)), с к-рого был запущен файл prep_env.cmd (в моем варианте) или буква диска на к-ром найден маркерный (wpi.ico или любой другой заданный) файл (этот базовый вариант; исп-ся в приведенном выше install.cmd).
Ладно я сделал так в систему копируется файл install.cmd стаким содержимым:
@ECHO OFF
cmdow.exe @ /hid
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\wpi.ico set CDROM=%%i:
echo Found CD-Rom as drive %cdrom%
ECHO.
ECHO Calling WPI
ECHO.
regedit /s %cdrom%\WPI\common\WPI.reg
REM Force resolution to needed size for wpi interface.
start %cdrom%\WPI\Tools\VideoChanger.exe 1024x768x16@75 -q
REM Make WPI directory the current directory.
for /f "delims=: tokens=1" %%i in ("%cdrom%\WPI") do %%i:
cd "%wpipath%"
REM Start WPI and wait for its end
start /wait %windir%\system32\mshta.exe "%cdrom%\WPI\wpi.hta"
exit
:end
А файл wpi.cmd я вообще убрал, вроде все работает.
WinMaster
09-11-2005, 12:25
DenchikK
Andrey Kornev
Sanja Alone
Всем спасибо :)
Автору статьи тут http://oszone.net/display.php?id=2985&page=2 лучше бы подправить ссылки...
Автору статьи тут http://oszone.net/display.php?id=2985&page=2 лучше бы подправить ссылки...Ваше пожелание выполнено. В скобках замечу, что ссылка на форум была рабочей, а в форуме тема со ссылками на сайте прикреплена.
DenchikK
10-11-2005, 10:59
По-моему я придумал, как определять мать (для установки IAA) и Видяху (для установки дров). Коряво конечно, но работать будет. Идея позаимствована у bogomolov - но с этим описанием так справится не смог.
Идея вот в чём: devcon создаю список устройств, который сбрасывается в файл .txt, там ищу нужный идентификатор, на основе найденной строки создаю какой-нибудь файлик, по которому через WPI и будет определятmся, что ставить.
Черновичок (например видеокарты) пока такой (просто определение):
файл test.bat -> devcon find pci\* > test.txt
run ('test.bat')
sleep (500)
$file = FileOpen("test.txt", 0)
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$chars = StringLeft($line, 12)
if $chars="PCI\VEN_10DE" Then
MsgBox(0, "У Вас Стоит:", "Видяха Nvidia")
endif
if $chars="PCI\VEN_1002" Then
MsgBox(0, "У Вас Стоит:", "Видяха ATI")
endif
if $chars="PCI\VEN_8086" Then
MsgBox(0, "У Вас Стоит:", "Видяха Intel")
endif
Wend
FileClose($file)
Exit
К сожалению, модем, LAN, RW и вероятно, тюнер, так не определить. На нескольких компах смотрел - ID разный.
Sanja Alone
11-11-2005, 01:56
DenchikK
MsgBox(0, "У Вас Стоит:", "Видяха Nvidia")
Угу, и видяха, и чипсет и т.д. и т.п. Вот я ввожу у себя на компе команду devcon hwids PCI\VEN_10DE|more и вижу (перечисляю только устройства с именами):
NVIDIA nForce PCI System Management
PCI\VEN_10DE&DEV_0064
NVIDIA nForce2 ATA Controller (v2.6)
PCI\VEN_10DE&DEV_0065
NVIDIA(R) nForce(TM) Audio Codec Interface
PCI\VEN_10DE&DEV_006A
NVIDIA GeForce2 Ti
PCI\VEN_10DE&DEV_0151
NVIDIA nForce2 AGP Host to PCI Bridge
PCI\VEN_10DE&DEV_01E8
NVIDIA nForce2 Memory Controller
PCI\VEN_10DE&DEV_01EB
NVIDIA nForce2 Memory Controller
PCI\VEN_10DE&DEV_01EC
NVIDIA nForce2 Memory Controller
PCI\VEN_10DE&DEV_01ED
NVIDIA nForce2 Memory Controller
PCI\VEN_10DE&DEV_01EE
NVIDIA nForce2 Memory Controller
PCI\VEN_10DE&DEV_01EF
VEN определяет производителя, но для конкретного ус-ва нужно знать DEV-идентификатор. А если посмотреть на рез-т выполнения команды devcon hwids *|more, то становится вообще страшно...
Идея позаимствована у bogomolovВот только реализацией он делиться не хочет :) Затравку дал и все...
DenchikK
11-11-2005, 03:46
Sanja Alone
Блин, жалко! А какая идея была! И так хорошо исполнялась на тех компах, до которых я мог добраться (правда 4 из них - с одинаковой материнкой, но разными видеокартами).
Вот что пока я смог нарыть:
PCI\VEN_10DE&DEV_0281 - NVIDIA GeForce4 Ti 4200
PCI\VEN_10DE&DEV_0141 - NVIDIA GeForce 6600
PCI\VEN_10DE&DEV_0322 - NVIDIA GeForce FX 5200
PCI\VEN_1002&DEV_4E48 - RADEON 9800 PRO
PCI\VEN_8086&DEV_2560 - Встроенная Видяха Intel на 815 плате
И если в этом случае, нужен DEV - то затея просто не имеет смысла.
Хотя, может быть поступить так: в AutoIT я видел (надо будет сейчас найти) функцию поиска заданных символов в строке, может его и присабачить? То бишь получаем файле test.txt такие данные:
PCI\A347SCSI\0000 : A347SCSI SCSI Controller
PCI\VEN_10DE&DEV_0281&SUBSYS_89431462&REV_A1\4&299CCBFA&0&0008: NVIDIA GeForce4 Ti 4200 with AGP8X
PCI\VEN_10EC&DEV_8169&SUBSYS_728C1462&REV_10\4&1F7DBC9F&0&30F0: Realtek RTL8169/8110 Family Gigabit Ethernet NIC
PCI\VEN_1131&DEV_7130&SUBSYS_21151461&REV_01\4&1F7DBC9F&0&18F0: AVerMedia, AVerTV WDM Video Capture (7130)
PCI\VEN_12B9&DEV_1008&SUBSYS_00A212B9&REV_01\4&1F7DBC9F&0&08F0: U.S. Robotics 56K Fax PCI
PCI\VEN_8086&DEV_244E&SUBSYS_00000000&REV_C2\3&13C0B0C5&0&F0: Intel(R) 82801 PCI Bridge - 244E
PCI\VEN_8086&DEV_24D0&SUBSYS_00000000&REV_02\3&13C0B0C5&0&F8: Intel(R) 82801EB LPC Interface Controller - 24D0
PCI\VEN_8086&DEV_24D2&SUBSYS_72801462&REV_02\3&13C0B0C5&0&E8: Intel(R) 82801EB USB Universal Host Controller - 24D2
PCI\VEN_8086&DEV_24D3&SUBSYS_72801462&REV_02\3&13C0B0C5&0&FB: Intel(R) 82801EB SMBus Controller - 24D3
PCI\VEN_8086&DEV_24D4&SUBSYS_72801462&REV_02\3&13C0B0C5&0&E9: Intel(R) 82801EB USB Universal Host Controller - 24D4
PCI\VEN_8086&DEV_24D5&SUBSYS_00801462&REV_02\3&13C0B0C5&0&FD: Realtek AC'97 Audio
PCI\VEN_8086&DEV_24D7&SUBSYS_72801462&REV_02\3&13C0B0C5&0&EA: Intel(R) 82801EB USB Universal Host Controller - 24D7
PCI\VEN_8086&DEV_24DB&SUBSYS_72801462&REV_02\3&13C0B0C5&0&F9: Intel(R) 82801EB Ultra ATA Storage Controllers
PCI\VEN_8086&DEV_24DD&SUBSYS_72801462&REV_02\3&13C0B0C5&0&EF: Intel(R) 82801EB USB2 Enhanced Host Controller - 24DD
PCI\VEN_8086&DEV_24DE&SUBSYS_72801462&REV_02\3&13C0B0C5&0&EB: Intel(R) 82801EB USB Universal Host Controller - 24DE
PCI\VEN_8086&DEV_2570&SUBSYS_00000000&REV_02\3&13C0B0C5&0&00: Intel(R) 82865G/PE/P/GV/82848P Processor to I/O Controller - 2570
PCI\VEN_8086&DEV_2571&SUBSYS_00000000&REV_02\3&13C0B0C5&0&08: Intel(R) 82865G/PE/P/GV/82848P Processor to AGP Controller - 2571
17 matching device(s) found.
И делаем поиск:
NVIDIA вместе с PCI\VEN_10DE - ставим ForceWare
Radeon вместе с PCI\VEN_1002 - ставим Catalyst
и для Intel надо посмотреть, каким словами он определяется.
А если взять формирование файла test.txt таким образом:
devcon hwids * > testhwids.txt
То мы ещё явно получаем слова Tuner, CDRW, DVD_RW, Ethernet. Модем можно определить по словам Fax, Modem, и для внешнего - посмотрю на работе завтра как Zyxel зовётся.
Может такой выход пойдёт?
И ещё хотел спросить про FileExist в WPI - можно ли поставить двойное условие показа программы? Что типа - показывать программу в списке, если программа не установлена и имеется на диске?
Sanja Alone
11-11-2005, 08:26
DenchikK
Может такой выход пойдёт?
bogomolv уже как-то реализовал (см. тему по Автоиту) данное действо, кстати, благодаря увиденному в одном из моих скриптов способу применения ф-ции StringSplit - чтение некоего подобия описанного тобой файла testhwids.txt с формированием массива и последующим поиском идентификаторов и установкой нужных дров. Можешь его напрячь - авось поделится кодом. Я бы и сам мог что-то подобное наваять, но, сейчас и без того своих проблем хватает - безработица, знаешь ли :(
двойное условие показа программы?А в чем проблема? Я же тебе похожий пример давал :) Ну ладно, вот:
cond[pn]=['!FileExists("%programfiles%\\Куда_Прога_обычно_устанавливается\\Прога.exe")&&FileExists("%cdrom%\\Прога\\Прога_сетап.exe")']Ты это хотел?
DenchikK
11-11-2005, 14:32
Sanja Alone
Ты это хотел?
Точно-точно - это всё у меня от того, что нужно спать иногда и ранним утром тормозить не буду - да и память лучше станет...
Спасибо, и sorry что ступил...
DenchikK
16-11-2005, 05:06
Беда пришла откуда не ждали! Когда у меня программы были распиханы
равномерно и ровно - всё было хорошо. Теперь же, когда идет проверка
на то, установлена или нет та или иная программа, выходит такая вот
бяка: некоторые программы сильно упихиваются вниз окна - и или не
видны совсем, или видны - но чуть-чуть. С этим что-то можно сделать?
http://img490.imageshack.us/img490/6021/20051116045534cr4rp.jpg (http://imageshack.us)
Sanja Alone
17-11-2005, 02:07
DenchikK
Попробуй явно задать порядок сортировки категорий в файле Wpiscripts\useroptions.js, например так:
var sortorder=['System','File Managers','Net','Tests','Multimedia','CD/DVD Tools','Archivers','Utils','Office','Antivirus','TV','Misc'];Если это уже сделано... тогда не увлекайся проверками :)
DenchikK
17-11-2005, 02:30
Это то конечно сделано. Значит никак? Жаль, а я думал, может где то есть параметры, отвечающие за границы распределения текста.
Sanja Alone
17-11-2005, 03:36
DenchikK
может где то есть параметры, отвечающие за границы распределения текста.Они есть - см. Wpiscripts\boxes.js. Здесь всего две функции, к-рые и определяют всю эту кухню - можешь покопаться, что-то изменить.
DenchikK
18-11-2005, 14:35
Впал в ступор понять не могу: в версии 4.2 всё работает как надо, ставлю 4.3.5, чтоб проверить работу, тупо заменяю config.js и useroptions.js - половина программ пропадает. Ставлю обратно 4.2 - всё работает. Что же там глобально так поменяли?
Sanja Alone
19-11-2005, 00:30
DenchikK
Что же там глобально так поменяли?Да много всего (http://www.wpiw.net/changelog.htm). Теперь нормально отключается впаяный по какому-то недоразумению (или извращенному вкусу) проигрыватель :) А тупо скопировать поверх не выходит, потому как появилась новая фишка - варианты конфигов (configlist), да и htm-ки тем сильно изменены. Короче говоря, для отсутсвия глюков лучше перенеси свой список прог в новый config.js, ну и установи переменные в useroptions.js.
Увожаемый All!
Подскажите, как же правильнее будет запускать WPI
на форуме MSFN советуют делать так:
Создаём runonceex.cmd :
cmdow @ /HID
@ECHO OFF
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\001 /V 1 /D "%CDROM%\Software\WPI\WPI.cmd" /f
EXIT
В cmdlines.txt пишем:
[COMMANDS]
"RunOnceEx.cmd"
А что мешает сразу написать в cmdlines.txt
[COMMANDS]
..\Software\wpi\wpi.cmd
что от этого измениться?
Ginsot
Так если вы его из cmdlines.txt вызовите, то он на Т-12 и запустится. Я даже не уверен будет ли он работать на этом этапе... WPI нужно при первом входе в систему запускать, что runonceex и обеспечивает, импортируя ключи в реестр, которые в свою очередь отработают при первом входе.
Э-э-э получается runonceex.cmd при вызове из cmdlines.txt не запускается на выполнение а только добавляет ключи в реестр. Правильно?
На Т-12 WPI запускается, только вот отработает он или нет, вернее установятся ли проги, я так и не узнал из-за ошибки в %wpipath% во вторник попробую, у меня вся сборка на работе...
Пробовал запустить WPI.cmd из [GuiRunOnes] - "не найден путь". Задумался...
Как передать в этой секции, что wpi запускается с %cdrom%?
Sanja Alone
23-01-2006, 03:27
Ginsot
Как передать в этой секции, что wpi запускается с %cdrom%?
Более чем подробно об этом я уже рассказывал чуточку выше (http://forum.oszone.net/showpost.php?p=369730&postcount=106)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC