Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [решено] Редактирование svcpack.inf в процессе установки Windows (http://forum.oszone.net/showthread.php?t=178390)

sLiDeR-X 17-06-2010 10:59 1435904

Редактирование 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а, видимо, методика другая.

Возможна ли реализация сабжа?

sLiDeR-X 17-06-2010 11:28 1435918

Вложений: 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 и ускорения времени установки данный метод не совсем оптимальный (хочется реализовать метод, описанный в шапке)

sLiDeR-X 18-06-2010 13:46 1436747

upd

mamont1 18-06-2010 15:17 1436817

Я пользую приблуду от NOV
http://forum.oszone.net/post-903496.html#post903496 - и ниже сами файлы
там тоже родной сетуп подменяется - мож пригодится
исходники - (по моему так называется-?) тоже есть. могу скинуть.

sLiDeR-X 19-06-2010 16:51 1437481

сделал 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

но он не отрабатывает вообще. подскажите где я делаю неправильно
и как сделать так, чтоб орбаватывались пустые строки тоже

sLiDeR-X 20-06-2010 17:55 1437981

И все-таки я добил задуманное

Сделал [addon] z-KeepPrefSVC

Полностью осуществляет поставленные в шапке темы задачи!
Просьба протестировать :)


Время: 04:41.

Время: 04:41.
© OSzone.net 2001-