PDA

Показать полную графическую версию : Маленькие хитрости автоустановки


Страниц : 1 2 3 [4] 5 6 7 8 9 10 11

LeoRush
29-05-2006, 11:04
SAOPP А что смущает?

maugli
29-05-2006, 16:17
Прочитал про Sleep.exe.
Подскажите, куда закинуть эту утилитку? В $OEM$\$$\System32\...?

SAOPP
29-05-2006, 19:11
LeoRush
?

Vadikan
29-05-2006, 20:12
SAOPP
зыы Этот (http://forum.oszone.net/post-389052-10.html) пост ОЧЕНЬ понравился, но кто бы подсказал как его немного подредактировать, а то что-то с отсчётом проблемы...Напишите автору PM, если никто больше не подскажет.

maugli
Прочитал про Sleep.exe. Подскажите, куда закинуть эту утилитку? В $OEM$\$$\System32\Да.

SAOPP
29-05-2006, 20:15
Vadikan
Спасибо, я просто не отписался в этой теме... я давно уже всё перепробовал и отписывался в другой теме на соответствующий вопрос :) Недостатком autoit явялется то, что он "паузит" систему на время своего выполнения.

bogomolv
19-06-2006, 00:26
Часто при автоустановке желательно знать наличие модема, пишущего CD или DVD, ноутбук ли это, или стационарная машина, а иногда и просто требуется определить наличие конкретной железки!
Лень заморачиваться, поэтому привожу оригинальные autoit-скрипы, идею которых при желании всегда можно реализовать с помощью обычных батников.

Наличие модема
RegRead('HKLM\SYSTEM\CurrentControlSet\Services\Modem\Enum','0')
If Not @error Then
;настройка соединений, установка download'еров и т.д. …
EndIf

Наличие пишущего CD или DVD
;Наличие CD-RW
If RegRead('HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning','DriveIndex')='' Then Exit
;Наличие DVD-RW (проверен недостаточно)
If RunWait('@ComSpec@ /C reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE" /s | find "-RW"','',0)<>0 Then Exit
;установка Nero…

Особые схемы управления питанием ноутбука, AMD (Cool'n'Quiet)
If FileExists('%WINDIR%\system32\drivers\CmBatt.sys') Then RunWait('regedit /s nast_powerNB.reg')
If FileExists('%WINDIR%\system32\drivers\asacpi.sys') Then RunWait('regedit /s nast_powerAMD.reg')

Наличие сети
$net=RegRead('$HKLM_CC$\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001','NetCfgInstanceId')
If Not @error Then
;настройка сети
Else
;убрать значок "Сетевое окружение" с Рабочего стола
RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer','NoNetHood','REG_BINARY' ,'00000000')
EndIf

Считывание на стадии cmdlines будущего разрешения экрана
Изюм в том, что заданные в unattend.txt параметры разрешения могут быть избыточными, или же могут "не подхватиться" драйвера…
$screen=1024
If RunWait('@ComSpec@ /C reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses" /s | find "DefaultSettings.XResolution" | find "500"','',0)=0 Then $screen=1280

Проверка наличия конкретной железки
$hwid='PCI\VEN_1102&DEV_0002' ;SBlive
If RunWait('@ComSpec@ /C devcon.exe hwids "$hwid$" | find "$hwid$"','',0)=0 Then
;продолжение установки дров
EndIf

qeraser
14-08-2006, 11:04
Sanja Alone

К сожалению не получается сделать, чтобы Ваш файл корректно работал у меня. Не работает список апдейтов и не извлекает серийник

Тестировал на дистрибутиве лежащем на винте D:\XPCD\WINDISTRIB\WINXPU\

Вот слегка отредактированный вариант (поменял пути)

@echo off

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem производитель
set MANUFACTURER=Ivan
rem модель
set MODEL=Unattended XP DVD
rem кол-во апдейтов в одной строке
set UPMAX=6
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
set KEYISVISIBLE=0
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 каталог с апдейтами
set UPDATESDIR=d:\XPCD\WINDISTRIB\WINXPU\I386\SVCPACK
rem маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
set UPDATESMASK=*.*
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
set WINNTSIF=d:\XPCD\1xpu\winnt.sif

rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

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%"
echo Line1=ProductKey: %%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 Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
echo Line%i%=Installation Date and Time: %date% (%time:~0,-6%)>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1
echo Line%i%=Installed Components and Updates:>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Винды)
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 Выход из этого пакетного файла.
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%"
)
)
)

Sanja Alone
15-08-2006, 09:40
qeraser
Не работает список апдейтовМожно добавить в файл принудительное включение расширенной обработки команд: SETLOCAL ENABLEEXTENSIONS
и не извлекает серийникПри наличии самого файла winn?.sif и серийника в строке ProductKey = серийник этого файла, такое возможно лишь в сл. установленного атрибута "скрытый" для файла winn?.sif.

qeraser
15-08-2006, 09:58
Sanja Alone
Разобрался.
Не работает список апдейтовнадо было сохранить батник в DOS-866 кодировке.не извлекает серийникне включил параметр KEYISVISIBLE

Я слегка отредактировал батник чтобы он отображал еще и количество исправлений.

В стиле Installed Components and Updates (109)

Netlick
24-08-2006, 19:52
Можно ли в завершении процесса установки, проиграть любимый музыкальный файл на заднем плане???
Т.е. чтобы играла музыка, а проигрыватель был невидим???

Vadikan
24-08-2006, 21:14
Netlick
Пожалуйста, прочтите прикрепленное сообщение (первый пост темы), обратив внимание на текст, выделенный жирным красным шрифтом. Потом воспольуйтесь фильтрами (http://tools.oszone.net/Vadikan/faq.html#filters) по названию темы по музык.

http://oszone.net/user_img/050214130343/filters.png

Результат (http://forum.oszone.net/forumdisplay.php?f=32&filter_string=музык&filter_by=title)

Netlick
25-08-2006, 16:03
Так я имел ввиду на фоне завершения процесса установки, а не во время выполнения RunOnceEx...

Vadikan
25-08-2006, 18:58
Netlick
Так я имел в виду, что надо указанную тему целиком прочитать (4 сообщения) и перейти по ссылкам, а не только на название посмотреть. :moderator

IVAndron
28-08-2006, 22:28
Всем привет!

Вариант создания маркерных файлов.

Например, используя файл winn1.sif, прописываем в нем:


[GuiUnattended]
DetachedProgram="cmd /c echo .>%SYSTEMDRIVE%\Temp\winn1"


в этом случае создается маркерный файл winn1 :)

Dust112
03-09-2006, 11:08
Sanja Alone
qeraser
Объясните, что это за символ ^| . Зарание спасибо.

Sanja Alone
04-09-2006, 02:00
Dust112
что это за символ ^|Отвечу двумя тезисами:

Символ | - конвейер (cчитывает выходные данные одной команды и записывает их на вход другой команды)
Амперсанд (&), вертикальная черта (|) и скобки ( ) являются специальными символами, которым должен предшествовать управляющий символ (^) или кавычки, если эти символы передаются в качестве аргументов.

boss911
09-09-2006, 00:15
prokazzza

Еп, ну вы посмотрите на него, ты "наверно" опять ошибся постом, да сюда (http://forum.oszone.net/thread-47582.html) это надо постить и плиз, обведи скрипт тегом [CОDE], юзай поиск!!

krestik
06-10-2006, 10:17
Подскажите пожалуйста как написать пакетный файл для настройки маршрутизации с помощью команды "route add"

-MAXX-
06-10-2006, 18:28
Sanja Alone
чёта ээээ.. мож заработался я просто..
чес говоря в скриптах не особо силён 8(
после отработки батча висит очко командной строки...
сам батч не закрывается чтоль?
запускаю при первой загрузе в систему из install.cmd
пытаюсь закрыть вручную - пишет типа вы хотите прервать выполнение командного файла? y/n
мож что мудрого в конце дописать? пробовал влепить ему exit - просто закрывается и в oeminfo не пишет обновления,
только дату установки.
хелп ми..

кажись не туда запостил 8(
просьба админам - если что, перенесите

Sanja Alone
07-10-2006, 03:39
-MAXX-
Файл должен сам закрываться (благодаря команде goto :EOF). А "очко командной строки" у тебя, скорее всего, висит от install.cmd (в его конце и должен быть этот самый exit). Ну и ес-но, вызывать oeminfo.cmd из другого cmd-файла нужно при пом. команды call.




© OSzone.net 2001-2012