Показать полную графическую версию : [решено] Добавление OEM информации - все вопросы
Страниц :
1
2
3
4
5
[
6]
7
8
9
10
11
12
Sanja Alone
28-10-2006, 04:51
Новая версия oeminfo.cmd (2006-10-27)
Вся инфа и цветастый :) код в вике (http://wiki.oszone.net/index.php/Изменение_OEM_информации)
Что изменилось:
Реализован реестровый метод (Reg) составления списка обновлений (запускайте файл с ключом /r или /R).
Расширена выводимая информация об ОС.
Появилась возможность дополнить отображаемую инф-цию своими строками (ищите в файле текст "Пример добавления своих строк").
Проведена оптимизация (выброшены н-рые лишние операции, н-рые заменены более продуктивными).
Прямая ссылка для скачивания rar-архива с файлом - вот (http://wiki.oszone.net/images/1/19/OEMINFO.rar)
P.S. Меня интересует мнение по реализации реестрового метода (особенно от создателей UpdatePack-ов) о корректности использования для составления списка обновлений ветки HKLM\SOFTWARE\Microsoft\Updates. С веткой HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix код был бы попроще, но здесь перечислены не все апдейты (например, нет DotNet-овских). Вариант с HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall мне кажется несерьезным, т.к. требует чуть-ли не пословного сравнения параметров DisplayName для н-рых обновлений в ветках вида {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}. Также хочу поинтересоваться о правильности идеи отбрасывания денонсированных обновлений исключением веток, содержащих "SP-".
Следующая строка должна иметь вот такой вид, а в оригинале там ошибка (применён не апостроф, а одинарная кавычка и отсутствует параметр usebackq) и поэтому команда не обрабатывается как надо. В итоге переменной lang ничего не присваивается.
rem язык ОС (419 - рус.)
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции
rem (ASCII-код символа после знака "равно" должен быть 09)
for /F "usebackq tokens=3 delims= " %%j in (`reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale`) do set lang=%%j
Sanja Alone
К сожалению в папке с каталогами безопасности тоже отсутствует часть обновлений и я предложил вытаскивать их из реестра, естественно более громоздко, но точнее.
Предлагаю вот так вытаскивать путь к дистрибутиву, так как на диске нельзя разместить несколько дистрибутивов в одной папке i386 и естественно они все разные.
::Считываем всю строку ключа "SourcePath" из реестра и присваеваем её переменной "WINNTSIF"
FOR /F "usebackq tokens=3 delims= " %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath`) do set WINNTSIF=%%i
set WINNTSIF=%WINNTSIF:~2%
::Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist "%CDROM%%WINNTSIF%\winn?.sif" (
set WINNTSIF=%CDROM%%WINNTSIF%\winn?.sif
)
Sanja Alone
29-10-2006, 11:15
alcos
в оригинале там ошибкаНет там ошибки. Это вариант команды. Процитирую фрагмент справки по FOR:
FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры]
FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
или, если использован параметр usebackq:
FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters]
FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]ASCII-код кавычек в первом сл. - 27 (хвост кавычки влево); в случае usebackq - 60 (хвост вправо).
вытаскивать их из реестраМой вариант реализации подходит?
вот так вытаскивать путь к дистрибутивуОК. Пусть будет в кач-ве резервного способа.
P.S. Обновил файл.
Sanja Alone
В последнем варианте OEMINFO.CMD в перечень обновлений у меня попал IE7 и "прописался" самым первым :), что испортило внешний вид списка :(
Нельзя ли как-то "зафиксировать" длину вписываемого в список имени (добавлять до восьми знаков)? :shuffle:
Тогда возможно безболезненно и "...буквы M, S, Q заменяются на KB" убрать ;)
Sanja Alone
29-10-2006, 17:28
YuriPet
в перечень обновлений у меня попал IE7Могу я посмотреть на reg-файл? (regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"). Можно на мыло, на rapidshar-у или просто вложив заархивированный файл в сообщение.
добавлять до восьми знаковДополнять можно заменой того же "M" на "пробелM". А можно вообще оставлять названия как есть, но, тогда KB887606_26 и KB887606_42 будут считаться разными обновлениями и займут в списке больше одной позиции.
и "...буквы M, S, Q заменяются на KB" убратьЭти апдейты в описаниях так и называются, например:
M886903 = Microsoft .NET Framework 1.1 Hotfix (KB886903)
S867460 = Microsoft .NET Framework 1.1 Service Pack 1 (KB867460)Насчет Q не скажу, но такие обновления были до SP2.
Но, если какая-то замена не нужна, то следует просто удалить соотв. заменяющую строку:
set tmp=!tmp:M=KB!
set tmp=!tmp:S=KB!
set tmp=!tmp:Q=KB!
All
P.S. Если у кого-то в список апдейтов добавляется что-то лишнее, то, пожалуйста, выкладывайте свой файл ветки реестра апдейтов (используйте команду regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"). Только заархивируйте его чем-нибудь. Надеюсь, что никто не посчитает это конфиденциальной инфой :) - имя мне нужно, чтобы знать кому отвечать (вместо %USERNAME% даже лучше вписать свой ник на форуме).
Sanja Alone
Я не совсем "въехал" по-поводу Дополнять можно заменой того же "M" на "пробелM" Предлагалось сделать так, чтобы вместо, например, "IE7" было "IE7пятьпробелов".
Sanja Alone
30-10-2006, 05:50
Новая версия oeminfo.cmd (2006-10-30)
Что изменилось:
В список попадают все обновления ветки HKLM\SOFTWARE\Microsoft\Updates.
Если название обновления короче 8 символов, то оно дополняется пробелами до этой длины (нужно для выравнивания списка в окне "Сведения о поддержке").
Смотреть здесь (http://wiki.oszone.net/index.php/Изменение_OEM_информации)
Качать здесь (http://wiki.oszone.net/images/1/19/OEMINFO.rar)
YuriPet
Предлагалось сделать так, чтобы вместо, например, "IE7" было "IE7пятьпробелов".Уже сделал :)
Sanja Alone
За "Уже сделал :)" спасибо, но... Шрифт то не моноширинный!
Т.е. моя идея с восьмью символами не срабатывает и список не выравнивается :(
Может с табуляцией поэкспериментировать?
И еще..
Твой CMD сообщает о 130 обновлениях и мой тоже. Но у меня среди них отсутствуют ie7 и WGA!
Получается у тебя чего-то нет? "Где собака порылась?" ;)
Оба oeminfo.ini вложены.
Sanja Alone
31-10-2006, 02:56
Новая версия oeminfo.cmd (2006-10-31)
Что изменилось:
Введен анализ командной строки (можно использовать ключи /k, /v, /r).
Файл правильно работает как с русской, так и с английской версией REG.EXE.
Названия обновлений выравниваются по длине в 8 символов при любом методе составления списка.
Смотреть (http://wiki.oszone.net/index.php/Изменение_OEM_информации)
Качать (http://wiki.oszone.net/images/1/19/OEMINFO.rar)
YuriPet
Может с табуляцией поэкспериментировать?Расползаются еще больше и как попало :(
у меня среди них отсутствуют ie7 и WGAКакой oeminfo.cmd используется?
"Где собака порылась?"Расхождение вызвано DotNet 2.0 обновлениями (KB922770,KB916002,KB917283) - у них глубина пути меньше, вот мой файл их и отбрасывает (завтра подумаю, что можно сделать) и KB909520 (лежит в подветке SP-1). Проблему с KB909520 уже исправил.
В свою очередь, в файле you_oeminfo.ini присутствуют ie7, WGA, KB887606 и KB888111, к-рых нет уже в oeminfo.ini. Вот и получалось, что оба файла выдавали одинаковое к-во обновлений :)
Sanja Alone
Еще одна "бяка"... :(
После установки полного английского IE7 появляются: IDNMitigationAPIs (Microsoft Internationalized Domain Names Mitigation APIs);
NLSDownlevelMapping (Microsoft National Language Support Downlevel APIs). Их имена "изменяются-обрезаются", соответственно до "IDNKBiti" и "NLKBDown"
Наверное "Полного удовлетворения получить нельзя!?" :biggrin:
Sanja Alone
01-11-2006, 04:25
Новая версия oeminfo.cmd (2006-11-01)
Что изменилось:
Решена проблема с обновлениями .Net 2.0. Теперь они также попадают в список.
Смотреть (http://wiki.oszone.net/index.php/Изменение_OEM_информации)
Качать (http://wiki.oszone.net/images/1/19/OEMINFO.rar)
YuriPet
Их имена "изменяются-обрезаются"Можно поступить радикально - убрать фрагмент кода:
set tmp=!tmp:M=KB!
set tmp=!tmp:S=KB!
set tmp=!tmp:Q=KB!
set tmp=!tmp:~0,8!После этого, названия всех обновлений будут вписываться в первозданном виде. Выравнивание, ес-но, пойдет лесом :)
Наверное "Полного удовлетворения получить нельзя!?"Угу :)
Sanja Alone
А если попробовать реализовать такой путь - сначала вывести только обновления с именами не соответствующими форматам KB*, M*, S* и Q* (без подмен, без обрезания, отсортированные, по одному в строке), а затем все остальные (с подменой "M", "S", "Q" на "KB", урезанные до 8-ми знаков, осортированные и по 6 в строке)?
P.S. Я еще не надоел? :)
prokazzza
01-11-2006, 09:53
Sanja Alone
почему у тя отображается только 104 обновления
а у alcos 130???
prokazzza
Запусти CMD-шник с ключом "/R" ;)
prokazzza
01-11-2006, 10:52
Sanja Alone
YuriPet
Oeminfo alcos
http://wiki.oszone.net/images/9/9c/Oem2.jpg
Oeminfo Sanja Alone
http://wiki.oszone.net/images/a/a5/Oem3.jpg
Oeminfo Sanja Alone c ключом /R
http://wiki.oszone.net/images/4/4f/Oem1.jpg
Sanja Alone
02-11-2006, 08:10
YuriPet
А если попробовать реализовать такой путьЯ подумаю... Но это испортит внешний вид списка :(
prokazzza
отображается только xxx обновлений
Кинь мне файлик, полученный в рез-те выполнения такой команды regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"
prokazzza
02-11-2006, 10:27
Sanja Alone
отображается только xxx обновлений
Нужно чтобы всё отображалось :)
В список попадают все обновления ветки HKLM\SOFTWARE\Microsoft\Updates.
Похоже что не все
Sanja Alone
Последний файлик вроде срабатывает неплохо, но:
У меня из 92 обновлений показывает только 89.
Отсутствуют:
MSXML 6.0 Parser (KB925673)
Клиент управления правами Windows (KB839178)
Обновление безопасности для Windows XP (KB913433)
Все они прописаны только в секции Uninstal реестра и каталоги безопасности на них отсутствуют тоже.
Sanja Alone
04-11-2006, 06:53
Новая версия oeminfo.cmd (2006-11-04)
Что изменилось:
Можно указать по какой длине выравнивать названия обновлений - 8 символов по ум. (определяется переменной UPNAMEL).
Буквы M, S, Q в названиях обновлений больше не заменяются на KB.
Смотреть (http://wiki.oszone.net/index.php/Изменение_OEM_информации)
Качать (http://wiki.oszone.net/images/1/19/OEMINFO.rar)
prokazzza
Похоже что не всеИз ветки HKLM\SOFTWARE\Microsoft\Updates - ВСЕ! А что еще где-то прописывается, так это особые ситуации и они требуют отдельного рассмотрения.
alcos
Все они прописаны только в секции Uninstal реестраВыходит, что так и есть :( А в секции HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix у меня еще затаилось Q147222. Что с ним делать?
Чтобы учесть все, придется к анализу ветки HKLM\SOFTWARE\Microsoft\Updates прилепить анализ HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix, а еще вручную вписывать те самые особые обновления из ветки HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.
В таком сл., нужно анализировать все 3 файла:
regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"
regedit /ea %USERNAME%_HotFix.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
regedit /ea %USERNAME%_Uninstall.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"Но, правильно ли это делать? Может просто обновление установлено каким-то нестандартным способом (например, через UpdatePack). При обычной установке этих обновлений-исключений они также прописываются только в Uninstall?
Можно указать по какой длине выравнивать названия обновлений - 8 символов по ум. (определяется переменной UPNAMEL).Извращенцы :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.