Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Добавление OEM информации - все вопросы

Ответить
Настройки темы
[решено] Добавление OEM информации - все вопросы

Аватара для ANDYru

Ветеран


Сообщения: 1007
Благодарности: 61

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 18-02-2007
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:47, 18-05-2005

 

Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


Новый, основательно доработанный oeminfo.cmd - см. пост

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Последний раз редактировалось Sanja Alone, 10-10-2006 в 04:08. Причина: перенос темы


Отправлено: 02:15, 04-07-2006 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuriPet

Ветеран


Сообщения: 1417
Благодарности: 342

Профиль | Отправить PM | Цитировать


А я вот на днях слегка доработал Доработанный вариант файла oeminfo.cmd Sanja Alone
Надеюсь - не обидится
Теперь его можно использовать не только при установке системы с CD/DVD но и с HDD, а также для обновления информации.
Код: Выделить весь код
@echo off

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem Полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem Маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem Полный путь к дистрибутиву при установке с HDD 
set HDDPATH=D:\WinXP\XP_HDD
rem Производитель
set MANUFACTURER=Автор версии: YuriPet
rem Модель
set MODEL=WinXP Pro SP2 Plus
rem Кол-во апдейтов в одной строке
set UPMAX=6
rem Присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу
for %%d 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 %%d:\%TAGFILE% set CDROM=%%d:
rem Маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
set UPDATESMASK=KB*.*
rem Каталог с апдейтами
if not defined CDROM (
	set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
) else (
	set UPDATESDIR=%CDROM%\I386\SVCPACK
)
rem Если будем обновлять информацию - снимаем атрибуты файлов
if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} (
	ATTRIB -H -S -R %UPDATESDIR%\%UPDATESMASK%
)
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%\i386\winna.sif (
	set WINNTSIF=%CDROM%\i386\winna.sif
) else (
	if exist %CDROM%\i386\winnt.sif (
		set WINNTSIF=%CDROM%\i386\winnt.sif
	)
)
rem Обеспечение обработки winnt.sif при установке с HDD
if not defined WINNTSIF (
	set WINNTSIF=%HDDPATH%\I386\winna.sif
)
rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан
rem Т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"
echo [Support Information]>> "%OEMFILE%"
echo Line1=У вас установлена система Windows XP Professional Edition SP2>> "%OEMFILE%"
echo Line2=с интегрированными пакетами обновлений программного>> "%OEMFILE%"
echo Line3=обеспечения и системы защиты.>> "%OEMFILE%"
echo Line4=>> "%OEMFILE%"

rem Если существует winnt.sif (winna.sif), достаем из него серийный номер
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
if exist %WINNTSIF% (
for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do (
    echo Line5=Ключ продукта: %%j>> "%OEMFILE%"
    echo Line6=>> "%OEMFILE%"
)
    echo Line7=На момент инсталляции системы - %date% %time:~0,-6%>> "%OEMFILE%"
    set i=7
)

rem Если WINNTSIF не существует (обновление информации)
IF NOT EXIST %WINNTSIF% (
   echo Line5=По состоянию на %date% %time:~0,-6%>> "%OEMFILE%"
   SET i=5
)

set /A i+=1
echo Line%i%=установлены следующие обновления (после SP2):>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Windows)
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m)
if not defined numfiles (
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "д*©«®ў"`) do (set numfiles=%%m)
)

rem Вспомогательные переменные
set l=0
set c=0

rem Список апдейтов (имена всех файлов без расширений)
rem (без ключевого слова usebackq команда dir будет воспринята как 
rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения 
rem об отсутствии такого файла в текущем каталоге).
for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint))

rem Возвращаем аттрибут файлов
if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} (
ATTRIB +S %UPDATESDIR%\%UPDATESMASK%
)
rem Выход из этого пакетного файла.
rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает
rem передачу управления в конец текущего пакетного файла. Это позволяет легко
rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto)
goto :EOF

:myprint
if %c% == 0 (
	set str=%kbname%
) else (
	set str=%str%  %kbname%
)

set /A c+=1

if %c% == %UPMAX% (
	echo Line%i%=%str%>> "%OEMFILE%"
	set /A i+=1
	set /A l+=1
	set str=
	set c=0
	set /A tmp=numfiles-l*UPMAX
) else (
	if %numfiles% LSS %UPMAX% (
		if %c% == %numfiles% (
			echo Line%i%=%str%>> "%OEMFILE%"
		)
	)
	if %tmp% LSS %UPMAX% (
		if %c% == %tmp% (
			echo Line%i%=%str%>> "%OEMFILE%"
		)
	)
)
Важно!
В этом пакетном файле используются символы кириллицы. Следовательно, для правильного её отображения в окне "Сведения о поддержке", сохранять файл необходимо в кодировке Windows (1251).
Обратите внимание!
В строке №81 слово "файлов" ("д ©«®ў") должно быть в кодировке DOS (866).

-------

Моим первым "персональным компьютером" был(а) "МИР-1"!


Отправлено: 02:45, 08-09-2006 | #42


Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


YuriPet
Цитата:
set HDDPATH=D:\WinXP\XP_HDD
Лучше не указывать абсолютных путей в данном файле. Предлагаю заменить на:
Код: Выделить весь код
set HDDPATH=%~dp0
set HDDPATH=%HDDPATH:~0,-1%
Без второй строчки можно обойтись, если заменить в файле %HDDPATH%\I386 на %HDDPATH%I386.

Цитата:
Надеюсь - не обидится
Пока меня не забывают, обижаться не на что

P.S. А зачем понадобилось выбрасывать часть кода, отвечающую за видимость/скрытость серийника? Кое-кому это все же нужно.

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Отправлено: 03:33, 09-09-2006 | #43


Покинул форум


Сообщения: 3254
Благодарности: 893

Профиль | Цитировать


YuriPet

Цитата:
Доработанный вариант файла oeminfo.cmd
а где строки для добавления картинки (oemlogo.bmp, oemlogo.gif)?????



Отправлено: 14:52, 09-09-2006 | #44


Аватара для YuriPet

Ветеран


Сообщения: 1417
Благодарности: 342

Профиль | Отправить PM | Цитировать


Sanja Alone
Цитата:
Лучше не указывать абсолютных путей в данном файле. Предлагаю заменить на:
Спасибо - мысль действительно правильная (я чего-то об этом не подумал)
А "видимость/скрытость серийника" - ИМХО дело вкуса

prokazzza
Цитата:
а где строки для добавления картинки (oemlogo.bmp, oemlogo.gif)?????
Зачем? Я её просто в $OEM$\$$\System32 поместил.

-------

Моим первым "персональным компьютером" был(а) "МИР-1"!


Отправлено: 23:57, 09-09-2006 | #45


Покинул форум


Сообщения: 3254
Благодарности: 893

Профиль | Цитировать


YuriPet

не видит добавленных обновлений
просто пустое место под надписью
Цитата:
По состоянию на 10.09.2006 11:47
установлены следующие обновления (после SP2):
вот тут все видит и строки картинки есть
Код: Выделить весь код
cmdow @ /HID
@echo off
SET D=%SYSTEMROOT%\system32\
copy oemlogo.bmp %d%oemlogo.bmp 
echo [General] > "%D%oeminfo.ini"
echo Manufacturer=Windows SP2 >> "%D%oeminfo.ini"
echo Model=Корпоративная Версия >> "%D%oeminfo.ini"
echo [Support Information] >> "%D%oeminfo.ini"
echo Line1=Дата установки системы : %date% >> "%D%oeminfo.ini"
echo Line2= >> "%D%oeminfo.ini"
echo Line3=Время установки системы : %time% >> "%D%oeminfo.ini"
echo Line4= >> "%D%oeminfo.ini"
echo Line5=Установленные обновления : >> "%D%oeminfo.ini"
echo Line6= >> "%D%oeminfo.ini"
SET i=7
ATTRIB -H -S -R %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat
For /F "tokens=1* delims=." %%k in ('dir "%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat" /b') do ( (set kbname=%%k) & (call :myprint) )
GOTO :EOF
:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A i=%i%+1
:EOF

Отправлено: 10:46, 10-09-2006 | #46


Аватара для YuriPet

Ветеран


Сообщения: 1417
Благодарности: 342

Профиль | Отправить PM | Цитировать


prokazzza
Цитата:
Важно!
В этом пакетном файле используются символы кириллицы. Следовательно, для правильного её отображения в окне "Сведения о поддержке", сохранять файл необходимо в кодировке Windows (1251).
Обратите внимание!
В строке №81 слово "файлов" ("д ©«®ў") должно быть в кодировке DOS (866).

-------

Моим первым "персональным компьютером" был(а) "МИР-1"!


Отправлено: 11:49, 10-09-2006 | #47


Аватара для Sanja Alone

Ищу Человека…


Сообщения: 420
Благодарности: 67

Профиль | Сайт | Отправить PM | Цитировать


Исправленный и дополненный oeminfo.cmd

ВНИМНИЕ! Последняя версия oeminfo.cmd отныне находится здесь

Собственно, это мой старый вариант, объединенный с методом "CatRoot", предложенным ANDYru более года назад в теме Добавление OEM информации и реализованным YuriPet-ом на базе доработанного мною первоначального варианта oeminfo.cmd c MSFN (вроде никого не забыл ).

Что изменилось:
  • Теперь код работоспособен на любом этапе установки ОС (проблемы с cmdlines.txt решены).
  • При ненахождении маркерного файла, переменная CDROM устанавливается равной пути запуска файла oeminfo.cmd без 7 последних символов \$OEM$\ (в кач-ве альтернативы, можно было бы брать путь из параметра SourcePath в реестре, но этот способ менее универсален). В данном сл. для составления списка обновлений исп-ся метод "CatRoot".
  • Записи в "Сведениях о поддержке" теперь соотв. языку локали ОС.
  • В конце строки "Установленные компоненты и обновления" ("Installed Components and Updates") в скобках отображается общее к-во апдейтов (соот-щих маске).
  • Серийник по ум. видим.
  • Оптимизирован цикл определения CDROM-а (CDROM-ом считается первый найденный дисковод с маркерным файлом).

! Внимание !
Весь выделенный красным текст должен быть в кодировке ANSI (CP1251), синим - OEM (CP866), зеленым - не важно (это просто комментарии).
Коричневым цветом я выделил те переменные, к-рые Вам захочется или понадобится (возможно) изменить.

Код: Выделить весь код
@echo off

rem магические слова :)
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem производитель
set MANUFACTURER=Sanja Alone
rem модель
set MODEL=Unattended XP DVD
rem кол-во апдейтов в одной строке (по ум. 6)
set UPMAX=6
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
set KEYISVISIBLE=1
rem присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу
rem (CDROM-ом считается первый найденный дисковод с маркерным файлом)
for %%d 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 %%d:\%TAGFILE% set CDROM=%%d:&& goto metka)
:metka
rem каталог с апдейтами и маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
if defined CDROM (
	set UPDATESDIR=%CDROM%\I386\SVCPACK
	set UPDATESMASK=*.*
) else (
	rem определяем переменную CDROM как каталог на HDD
	rem (если файл oeminfo.cmd у Вас будет не в каталоге $OEM$, 
	rem то измените число обрезаемых от переменной справа символов с 7 на требуемое Вам)
	set CDROM=%~dp0
	set CDROM=!CDROM:~0,-7!
	set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
	set UPDATESMASK=KB*.*
	rem Снимаем атрибуты файлов
	attrib -H -S !UPDATESDIR!\!UPDATESMASK!
)
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%\I386\winn1.sif (
	set WINNTSIF=%CDROM%\I386\winn1.sif
) else (
	if exist %CDROM%\I386\winnt.sif (
		set WINNTSIF=%CDROM%\I386\winnt.sif
	)
)
rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

rem язык ОС (419 - рус.)
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции 
rem (ASCII-код символа после знака "равно" должен быть 09)
for /F "tokens=3 delims=	" %%j in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale') do (set lang=%%j)

rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан;
rem т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"

rem Достаем из winnt.sif (winn1.sif) серийный номер
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
if defined WINNTSIF (
	if %KEY% == 1 (
		for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do (
		if %KEYISVISIBLE% == 1 (
			echo [Support Information]>> "%OEMFILE%"
			if %lang% == 00000419 (
				echo Line1=Ключ продукта: %%j>> "%OEMFILE%"
			) else (
				echo Line1=Product Key: %%j>> "%OEMFILE%"
			)
			echo Line2=>> "%OEMFILE%"
			set i=3
		) else (
			echo [OEMSpecific]>> "%OEMFILE%"
			echo SerialNo=%%j>>"%OEMFILE%"
			echo [Support Information]>> "%OEMFILE%"
			set i=1
	))
	) else (
		echo [Support Information]>> "%OEMFILE%"
		set i=1
	)
) else (
echo [Support Information]>> "%OEMFILE%"
set i=1
)

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Windows)
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m)
if not defined numfiles (
for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "файлов"`) do (set numfiles=%%m)
)

rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
if %lang% == 00000419 (
	echo Line%i%=Дата и время установки ^(обновления^): %date% ^(%time:~0,-6%^)>> "%OEMFILE%"
) else (
	echo Line%i%=Installation ^(updation^) date and time: %date% ^(%time:~0,-6%^)>> "%OEMFILE%"
)
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1
if %lang% == 00000419 (
	echo Line%i%=Установленные компоненты и обновления ^(%numfiles%^):>> "%OEMFILE%"
) else (
	echo Line%i%=Installed Components and Updates ^(%numfiles%^):>> "%OEMFILE%"
)
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem вспомогательные переменные
set l=0
set c=0

rem Список апдейтов (имена всех файлов без расширений)
rem (без ключевого слова usebackq команда dir будет воспринята как 
rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения 
rem об отсутствии такого файла в текущем каталоге).
for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint))

rem Возвращаем атрибуты файлов
if %UPDATESDIR% == %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} (
	attrib +S %UPDATESDIR%\%UPDATESMASK%
)
rem Выход из этого пакетного файла.
rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает
rem передачу управления в конец текущего пакетного файла. Это позволяет легко
rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto)
goto :EOF

:myprint
if !c! == 0 (
	set str=!kbname!
) else (
	set str=!str!  !kbname!
)

set /A c+=1

if !c! == %UPMAX% (
	echo Line%i%=!str!>> "%OEMFILE%"
	set /A i+=1
	set /A l+=1
	set str=
	set c=0
	set /A tmp=numfiles-l*UPMAX
) else (
	if %numfiles% LSS %UPMAX% (
		if !c! == %numfiles% (
			echo Line%i%=!str!>> "%OEMFILE%"
		)
	)
	if !tmp! LSS %UPMAX% (
		if !c! == !tmp! (
			echo Line%i%=!str!>> "%OEMFILE%"
		)
	)
)
Приведенный выше файл с правильными кодировками здесьrar-архиве).

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Последний раз редактировалось Sanja Alone, 10-10-2006 в 03:34. Причина: Обновление

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:06, 11-09-2006 | #48


Покинул форум


Сообщения: 3254
Благодарности: 893

Профиль | Цитировать


YuriPet

Спасибо! :beer:

Отправлено: 09:01, 12-09-2006 | #49


Ветеран


Сообщения: 628
Благодарности: 51

Профиль | Отправить PM | Цитировать


Sanja Alone и все остальные авторы OEMINFO
может прикрутить к скрипту еще одну функцию - установка картинки с логотипом проца, в зависимости от типа процессора? Логотипы на почти все типы процов Intel и AMD у меня есть, осталось дело за малым, - написать сам скриптик :-)
Может кто-то уже заморачивался, выложите свои наработки, хотелось бы использовать штатные средства винды (т.е. не используя devcon.exe, zcpu, autoit и т.п.), в каком-то из топиков шла речь про WMI, но тут без вдумчивого вникания в матчасть по этому вопросу не обойтись...

Отправлено: 20:23, 20-09-2006 | #50



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Добавление OEM информации - все вопросы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[статья] Изменение OEM информации и логотипа Windows Vista Vadikan Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 2 20-02-2014 23:53
$OEM$ не копируется на HDD .:[все вопросы]:. Sparrow Автоматическая установка Windows 2000/XP/2003 104 26-10-2010 04:59
Установка - [решено] Добавление OEM-предложений в win7 Welcome Center borodatiy Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 3 06-11-2009 00:04
Vista / 2008 - Добавление OEM логотипов, соглашений, обоев САШOК Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 7 03-06-2009 12:46
Добавление информации на сайт через вэб-интерфейс Vopros Вебмастеру 1 26-06-2003 08:50




 
Переход