 |
|
Редактирование svcpack.inf в процессе установки Windows
Необходимо для создания интерактивного выбора устанавливаемых программ из presetup.cmd
Методика описана тут или смотрим здесь:
читать дальше »
======
Касаемо Presetup.cmd
Предлагаю вам конструкцию presetup для возможности выбора устанавливаемых компонентов. Я сделал его для возможности выбора "весомых" программ на этапе RunOneEx. Вы можете прикрутить еще и к Т-13.
Сделал это для интерактивного выбора установки программ для разных компьютеров (слабых, старых, новых...) и для потребности каждого пользователя в отдельности (себя - для быстрой установки на виртуальную машину).
Если кто-то скажет, что для этого есть WPI и BS PostInstall - отвечу вам что использовать их не хочу и не желаю наворачивать дополнительными программами диск.
Вот сама конструкция
читать дальше »
Код:
:: ================================== Конструкция для интерактивного выбора программ ==================================
:: ======================================================= НИЖЕ =======================================================
:DotNET
if exist %SrcDosPath%\I386\SVCPACK\DNet1140.exe (
MSGBOX.EXE "•®вЁвҐ гбв**®ўЁвм .NET Framework 2.0...4.0 ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="7" (
expand -r %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
find /V "DNet1140.exe -ai2P -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf >> %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new
move /y %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
)
)
:Office
if exist %SrcDosPath%\I386\SVCPACK\office2007.exe (
MSGBOX.EXE "•®вЁвҐ гбв**®ўЁвм Office 2007 ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="7" (
expand -r %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
find /V "office2007.exe -ai -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf >> %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new
move /y %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
)
)
:Winstyle
if exist %SrcDosPath%\I386\SVCPACK\Winstyle.exe (
MSGBOX.EXE "•®вЁвҐ §*ЇгбвЁвм Ё§¬Ґ*Ґ*ЁҐ Ё*вҐа䥩б* Windows ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="7" (
expand -r %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
find /V "Winstyle.exe -ai -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf >> %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new
move /y %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
)
)
:xReset
if exist %SrcDosPath%\I386\SVCPACK\xReset10.exe (
expand -r %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
find "DNet1140.exe -ai2P -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
if %ERRORLEVEL%==0 (
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
goto Drivers
)
find "office2007.exe -ai -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
if %ERRORLEVEL%==0 (
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
goto Drivers
)
find "Winstyle.exe -ai -gm2" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
if %ERRORLEVEL%==0 (
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
goto Drivers
)
find /V "xReset10.exe -aiK -! 120 zzzzzzReset" %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf >> %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new
move /y %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf.new %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
makecab %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf %systemdrive%\$WIN_NT$.~LS\I386\svcpack.in_
del %systemdrive%\$WIN_NT$.~LS\I386\svcpack.inf
)
)
:: ======================================================= ВЫШЕ =======================================================
:: ================================== Конструкция для интерактивного выбора программ ==================================
П.С.
Может быть как-то можно оптимизировать код, но я не знаю как, т.к. писал для своего уровня познания %)
======
Я так понял, что при запуске установки из Windows на системном диске создаются папки $WIN_NT$.~LS ...
Соответственно presetup.cmd отработает корректно.
При запуске из DOSа, видимо, методика другая.
Возможна ли реализация сабжа?
|
Вложений: 1
Придумал другую реализацию данной задачи.
Текст, добавляемый в presetup.cmd
читать дальше »
Код:
:: ================================== Конструкция для интерактивного выбора программ ==================================
:: ======================================================= НИЖЕ =======================================================
:DotNET
if exist %SrcDosPath%\I386\SVCPACK\DNet1140.exe (
MSGBOX.EXE "•®вЁвҐ гбв**®ўЁвм .NET Framework 2.0...4.0 ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="6" md "%systemdrive%\RunOnceEx\777"
)
:Office
if exist %SrcDosPath%\I386\SVCPACK\MSOffice2007.exe (
MSGBOX.EXE "•®вЁвҐ гбв**®ўЁвм MS Office 2007 ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="6" md "%systemdrive%\RunOnceEx\888"
)
:Winstyle
if exist %SrcDosPath%\I386\SVCPACK\Winstyle.exe (
MSGBOX.EXE "•®вЁвҐ §*ЇгбвЁвм Ё§¬Ґ*Ґ*ЁҐ Ё*вҐа䥩б* Windows ЇаЁ ЇҐаў®¬ ўе®¤Ґ ў бЁб⥬г? “бв**®ўЄ* ¬®¦Ґв §**пвм ¤«ЁвҐ«м*®Ґ ўаҐ¬п!" "MSGBOX" 3 3 10 && cmdow.exe MSGBOX /top
if "%errorlevel%"=="6" md "%systemdrive%\RunOnceEx\999"
)
:: ======================================================= ВЫШЕ =======================================================
:: ================================== Конструкция для интерактивного выбора программ ==================================
После отработки presetup.cmd обрабатывается эддон y-RunOneEx (прикреплен)
Для работы необходим эддон CMD_Files ( http://forum.oszone.net/attachment.p...1&d=1276759361)
Для оптимизации установки Windows и ускорения времени установки данный метод не совсем оптимальный ( хочется реализовать метод, описанный в шапке)
|
сделал finish следующего содержания:
Код:
@echo off
setlocal enabledelayedexpansion
Set WD=%~1
set file=svcpack.inf
If Exist "%I386%\%file%" Copy "%I386%\%file%" "%WD%\">nul
expand -r svcpack.in_
set file=svcpack.inf
for /f "delims=[] tokens=1" %%a in ('find /n "SetupHotfixesToRun" %file%') do set /a line=%%a-6
del /q tmp_file 2>nul
set counter=1
for /f "tokens=*" %%a in (%file%) do (
echo %%a>>tmp_file
if "!counter!"=="!line!" (
echo SetupHotfixes.bat>> tmp_file
goto Finish
)
set /a counter+=1
)
:Finish
move /y tmp_file %file%
makecab %file%
del /q %file% 2>nul
Copy /Y "%WD%\%file%" "%I386%\">nul
но он не отрабатывает вообще. подскажите где я делаю неправильно
и как сделать так, чтоб орбаватывались пустые строки тоже
|
И все-таки я добил задуманное
Сделал [addon] z-KeepPrefSVC
Полностью осуществляет поставленные в шапке темы задачи!
Просьба протестировать :)
|
Время: 04:41.
© OSzone.net 2001-