[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
Спасибо, понял, надо пробовать. Если не затруднит, еще вопрос:
Подправил как мог скрипт, смущает выделенная строка.
И, если все правильно, скрипт запустит или Install.wim, или install.esd ?
@echo off
SET DD=puh1
SET MM=win7x64
for %%I 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 (
dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I:
dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I:
)
If NOT "%DVDDrive%"=="" echo Found Install.wim at %DVDdrive%\%DD%\%MM%\install.wim
IF "%DVDdrive%"=="" (

echo ERROR - COULD NOT FIND INSTALL.WIM in %DD%\%MM% folder!
pause
pause
goto :EOF
)
if exist %DVDdrive%\%DD%\%MM%\unattend.xml SET UN=/unattend:%DVDdrive%\%DD%\%MM%\unattend.xml
if exist %DVDdrive%\%DD%\%MM%\OEM\nul SET OEM=/m:%DVDdrive%\%DD%\%MM%\OEM
REM look for whole sources folder copied over
If exist %DVDdrive%\%DD%\%MM%\setup.exe (
%DVDdrive%
REM setup will use its path to find the install.wim
%DVDdrive%\%DD%\%MM%\setup.exe %OEM% %UN%
goto :RBT
)
if not exist X:\Setup.exe goto :BAD
REM if not then just call setup in root of boot.wim
X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.wim %OEM% %UN%
X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.esd %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find X:\Setup.exe !
@echo Press a key to reboot now...
pause
:RBT
wpeutil reboot
pause


Last edited by puhpol on 2014-12-15 21:15; edited 1 time in total

[Quote]

    Guest
  • REPUTATION:0

    [+] [-]
puhpol, скрипт должен запустить установщик (т.е., Setup.exe). Выделенная строка выдаёт сообщения, если найден install.wim (install.esd). Там проблем нет. А вот конструкция
X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.wim %OEM% %UN%
X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.esd %OEM% %UN%
работать не будет (даже если найден install.esd, будет пытаться запустить install.wim - и тут будет ошибка). Правильнее было бы назначить переменную (в примере - %inst%) для install.wim или install.esd. например, так:
dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.wim
dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.esd
и запускать, соответственно сразу нужное
X:\setup.exe /installfrom:%inst% %OEM% %UN%

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
То есть этот кусок будет выглядеть так:
if not exist X:\Setup.exe goto :BAD
dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.wim
dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.esd
X:\setup.exe /installfrom:%inst% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find X:\Setup.exe !
@echo Press a key to reboot now...
pause
:RBT
wpeutil reboot
pause
Подразумевается что в папке лежит один файл , или esd , или wim

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
Вот на бабочке выложили скрипт от korsak7 . Вот то что нужно , насколько я понимаю.
@echo off
SET DD=ИМЯ ПАПКИ
SET MM=ИМЯ ПОДПАПКИ
for %%I 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 %%I:\%DD%\%MM% set DVDdrive=%%I:
set fullpath=%DVDdrive%\%DD%\%MM%
if exist %fullpath%\install.wim set container=%fullpath%\install.wim
if exist %fullpath%\install.esd set container=%fullpath%\install.esd
IF "%container%"=="" (
echo ERROR - COULD NOT FIND INSTALL.WIM INSTALL.ESD in %DD%\%MM% folder!
pause
pause
goto :EOF
)
if exist %fullpath%\unattend.xml SET UN=/unattend:%fullpath%\unattend.xml
if exist %fullpath%\_unattend.xml SET UN=/unattend:%fullpath%\_unattend.xml
if exist %fullpath%\OEM\nul SET OEM=/m:%fullpath%\OEM
if exist %fullpath%\$OEM$\nul SET OEM=/m:%fullpath%\$OEM$
:: if not exist %SystemDrive%\Setup.exe goto :BAD
:: REM if not then just call setup in root of boot.xxx
:: %SystemDrive%\setup.exe /installfrom:%container% %OEM% %UN%
:: goto :RBT
if not exist X:\Setup.exe goto :BAD
REM if not then just call setup in root of boot.wim
X:\setup.exe /installfrom:%container% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find X:\Setup.exe !
@echo Press a key to reboot now...
pause
:RBT
wpeutil reboot
pause


Last edited by puhpol on 2014-12-15 21:16; edited 1 time in total

[Quote]

    Guest
  • REPUTATION:0

    [+] [-]

Я бы сделал как-то так (скрипт исправлен 15.12.2014)

@echo off
setlocal enabledelayedexpansion
SET DD=2k10
SET MM=Windows.Setup
SET IN=NI
for %%I 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 (
set IP=%%I:\!DD!\!MM!
dir /d !IP!\install.wim&&set IN=!IP!\install.wim
dir /d !IP!\install.esd&&set IN=!IP!\install.esd
dir /d !IP!\install.swm&&set IN=!IP!\install.swm
IF !IN! NEQ NI goto :INST
)
IF %IN% EQU NI (
echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder!
pause
pause
goto:RBT
)
:INST
echo %IP%
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
cd /d %IP%
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find %ST% !
echo.
:RBT
exit
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
Отличия от скрипта Корсака:
1. Проверка наличия файла установки организована через DIR (не отрывает окно с ошибкой на отсутсвующих/повреждённых носителях).
2. Поиск ведётся до первого найденного файла с дистрибутивом (в варианте Корсака независимо от результатов поиска перебираются все диски, и используется последний найденный вариант).
3. Поиск производится для всех возможных видов дистрибутива (WIM, ESD, SWM).
4. Если в папке с дистрибутивом имеется Setup.exe, то будет использован именно он, а не X:\Setup.exe

Вариант поиска для использования "внешнего" скрипта установки

@echo off
setlocal enabledelayedexpansion
For /F "skip=2 tokens=2* delims=)" %%i In ('REG QUERY HKLM\SYSTEM\ControlSet001\Control /v SystemStartOptions') DO (
SET FP=%%~pj
set NM=%%~nj
)
set FP=%FP:*)\=%
for %%I 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 (
dir /d %%I:\%FP%%NM%.wim&&(
if exist %%I:\%FP%%NM%.cmd set (SC=%%I:\%FP%%NM%.cmd&goto:Start)
if exist %%I:\%FP%winsetup.cmd (set SC=%%I:\%FP%winsetup.cmd&goto:Start)
)
)
echo Script not found!!!
pause
exit
:Start
start /w %SC%
exit
Второй скрипт позволяет организовать универсальную установку из любой папки. Как это работает:
1. Скрипт добавляем в ядро РЕ-установщика вместо первого скрипта.
2. РЕ-установщик может находиться в любой папке (естественно, с адекватным путём). Например, РЕ-установщик в папке 2k10\WinSetup.User\setup886.wim.
3. После старта скрипта производится поиск по всем носителям установщика setup886.wim (как маркера) в нужной папке (т.е., 2k10\WinSetup.User). Если рядом (в той же папке) есть файл setup886.cmd (имя должно соовпадать с именем wim-установщика, а расширение cmd) либо winsetup.cmd, тогда управление будет передано этому файлу. Приоритетным является "именной" скрипт (setup886.cmd), т.е., при наличии обоих вариантов выполнен будет именно он. Если рядом с установщиком отсутствуют "именной" или общий (winsetup.cmd) скрипты, поиск будет продолжен.
4. В качестве "именного" или общего скриптов можно использовать первый скрипт этого сообщения, указав в нём желаемую папку хранения своих дистрибутивов.


Last edited by Guest on 2014-12-15 21:49; edited 6 times in total

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
Изменяем файл BOOT.WIM (черновик)
1. Качаем архив "mu.rar", Прикреплен к сообщению,
2. Папку из архива извлекаем в корень диска С.

Что в папке

Папка "imagex" - папка с программой imagex 64- и 32-битными версиями программы.
Файлы:
EI.CFG - нужен для пропуска ввода ключа в boot.wim от Windows 8/8.1 (для Windows 7 не нужен, в этом случае требуется правка Mod.cmd )
Mod.cmd - запускает интеграцию скриптов и файлов в boot.wim
winpeshl.ini - дает команду запуска файла mysetup.cmd при загрузке boot.wim.
mysetup.cmd - запускает файл set7.cmd или set8.cmd в зависимости от вашего выбора.
set7.cmd - файл, запускающий установку Windows 7 (в нашем случае). Необходимо править, прописать имя папки и подпапки.
set8.cmd - файл, запускающий установку Windows 8.1 (в нашем случае). Необходимо править, прописать имя папки и подпапки.
3. Идем по пути: С:\mu\imagex\ видим папки "x32" и "x64", входим в папку в зависимости от установленной системы. И запускаем с правами Администратора файл "install.bat".
После этого переходим в папку С:\mu\
4. Открываем текстовым редактором файл mysetup.cmd и, если вас что-то не устраивает, правим под свои предпочтения.
5. Открываем текстовым редактором файл set7.cmd и во второй и третьей строке прописываем имена папок, из которых будет грузиться система (то-есть, где будет лежать файл install.wim или install.esd).
5.1 Открываем текстовым редактором файл set8.cmd и во второй и третьей строке прописываем имена папок, из которых будет грузиться система (то-есть, где будет лежать файл install.wim или install.esd).
6. Проверить, все ли вы правильно отредактировали. Правильно ли прописаны имена файлов в mysetup.cmd? Правильно ли указанны имена папок в файлах set8.cmd и set7.cmd?
7. Из образа с Windows x86 извлекаем файл boot.wim в папку "mu" (находится в папке "sources").
8. От имени Администратора запускаем файл Mod.cmd. Появится окошко, в котором можно контролировать процесс интеграции файлов в образ (сначала монтируется образ, потом копируются файлы и сохранение изменений). После закрытия окна ваш boot.wim готов.
9. Готовый файл обязательно переименовать или перенести куда нибудь (я просто переименовываю в bootх86.wim). Так как мы изменили загрузчик только для 32-битной системы.
10. Из образа с Windows x64 извлекаем файл boot.wim в папку "mu" (находится в папке "sources").
11. От имени Администратора запускаем файл Mod.cmd. Появится окошко, в котором можно контролировать процесс интеграции файлов в образ (сначала монтируется образ, потом копируются файлы и сохранение изменений). После закрытия окна ваш boot.wim готов.
Таким образом, при загрузке файла boot.wim (предустановочной среды Windows) будет запускаться файл mysetup.cmd, где будет предложено выбрать какую систему ставить. И, в зависимости от вашего выбора, будет запущен файл set8.cmd или set7.cmd.

Если используется boot.wim от Windows 7

Если используется boot.wim от Windows 7 то файл EI.CFG не нужен.
Файл можно не удалять из папки, нужно отредактировать файл Mod.cmd
Открываем файл "Блокнотом" и удаляем выделенные строки.
cls
@echo off
pushd %cd%
REM set the path here
SET MP=%CD%
IF "%MP%"=="\" SET MP=
if not exist %MP%\winpeshl.ini (
echo %MP%\winpeshl.ini not found!
echo This script should be in the same folder as your bootmgrx files
goto :EOF1
)
IF NOT EXIST %MP%\boot.wim (
echo ERROR %MP%\boot.wim does not exist!
goto :EOF1
)
REM to create an empty MOUNT folder
if not exist C:\MOUNT\NUL MD C:\MOUNT
SET IMGNO=2
Echo mounting the 2nd image in the wim file onto your C:\mount folder...
IMAGEX /mountrw %MP%\boot.wim 2 c:\mount
if errorlevel 1 echo IMAGE #2 NOT FOUND IN BOOT.WIM - trying image #1...
if errorlevel 1 SET IMGNO=1
if errorlevel 1 IMAGEX /mountrw %MP%\boot.wim 1 c:\mount
if errorlevel 1 echo IMAGE #1 NOT FOUND
if errorlevel 1 goto :EOF12
echo IMAGE #%IMGNO% mounted OK
echo Copying over the winpeshl.ini and mysetup.cmd files
copy %MP%\winpeshl.ini C:\mount\windows\system32\*.*
if errorlevel 1 goto :EOFERR
copy %MP%\mysetup.cmd C:\mount\windows\system32\*.*
if errorlevel 1 goto :EOFERR
copy %MP%\set7.cmd C:\mount\*.*
if errorlevel 1 goto :EOFERR
copy %MP%\set8.cmd C:\mount\*.*
if errorlevel 1 goto :EOFERR
copy %MP%\EI.CFG C:\mount\sources\*.*
if errorlevel 1 goto :EOFERR

echo Saving changes in boot.wim...
IMAGEX /unmount /commit C:\MOUNT
if errorlevel 1 goto :EOF1
echo Files added to %MP%\boot.wim (image %IMGNO%) OK
goto :EOF
:EOFERR
echo ERROR FOUND - so dismounting boot%IM%.wim without saving any changes!
IMAGEX /unmount C:\MOUNT
goto :EOF
:EOF12
echo ERROR mounting boot&.wim using ImageX !!!
:EOF1
pause
Изучаем выделенное жирным шрифтом.
ПРИМЕЧАНИЯ:
Скриптов для установки системы (set8.cmd и set7.cmd) может быть сколько угодно. Чтобы добавить дополнительные скрипты, нужно дописать их интеграцию в boot.wim в файле Mod.cmd (под спойлером смотрим выделенное жирным, то-есть копировать две строчки с изменением имени файла). Так же требуется редактирование файла mysetup.cmd (там вроде все понятно).
Если скрипты set8.cmd и set7.cmd копировать на носитель, с которого вы будете все это дело загружать. А в папку, где у вас лежит install.wim копировать все содержимое папки "sources" из дистрибутива Windows (кроме boot.wim), при запуске файла set8.cmd или set7.cmd под Windows PE начнется установка Windows. То-есть, запуск set8.cmd запустит установку системы, если запущен под какой-то сборкой (обязательно наличие всего содержимого папки "sources" из дистрибутива Windows.
Так как в скрипте прописан запуск двух вариантов установки: Запуск файла setup.exe из X:\Setup.exe (файл boot.wim, предустановочная среда Windows), или запуск файла setup.exe из указанной в файле set7.cmd папки.
Если вы используете русский образ boot.wim, можно русифицировать скрипты. Для этого: открыть файл mysetup.cmd, например, редактором Notepad++. Выбрать кодировку кирилица/OEM 666 переписать нужные фразы. Повторить действия для set8.cmd и set7.cmd.

Пример mysetup.cmd

TITLE УСТАНОВКА WINDOWS
@echo off
cls
color 27
echo.
echo.
echo 1 = Установить Windows 8.1
echo.
echo 2 = Установить Windows 7
echo.
echo.
SET /P ANS="Какую систему будем ставить? (нажмите 1 или 2 ): "
IF /I "%ANS%"=="1" start X:\set8.cmd
IF /I "%ANS%"=="2" start X:\set7.cmd
pause

set7.cmd

@echo off
SET DD=ИМЯ ПАПКИ
SET MM=ИМЯ ПОДПАПКИ
SET IN=NI
for %%I 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 (
set IP=%%I:\%DD%\%MM%
dir /d %IP%\install.wim&&set IN=%IP%\install.wim
dir /d %IP%\install.esd&&set IN=%IP%\install.esd
IF %IN% NEQ NI goto:INST
)
IF %IN% EQU NI (
echo ОШИБКА - нет файлов INSTALL.WIM INSTALL.ESD в %DD%\%MM% !
pause
pause
goto:RBT
)
:INST
if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml
if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml
if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM
if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$
set ST=X:\Setup.exe
if exist %IP%\Setup.exe set ST=%IP%\Setup.exe
if not exist %ST% goto :BAD
%ST% /installfrom:%IN% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Нет файла %ST% !
echo.
:RBT
@echo Press a key to reboot now...
pause
wpeutil reboot
pause
Если скрипт в русской кодировке интегрировать в английскую версию boot.wim, вместо руских букв будут кракозяблики.


Last edited by puhpol on 2014-12-15 11:16; edited 1 time in total

[Quote]

    Andrei888
  • 13
  • Longevity: 10 years
  • Posts: 11
  • REPUTATION:0

    [+] [-]
  • Location: КАЗАКСТАН
Здравствуйте.
Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim?

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
zxen, Привет! Спасибо большое! Завтра буду тестить.
894Здравствуйте.
Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim?
Приветствую. Если не запускать установку под сборкой какой (ВИН РЕ) то достаточно одного insatal.wim

[Quote]

    korsak7
  • 107
  • Longevity: 9 years
  • Posts: 1063
  • REPUTATION:62

    [+] [-]
891Изменяем файл BOOT.WIM (черновик)
Кстати, WIM-ы умеет изменять 7z - без лишнего шаманства и многостраничных инструкций :)

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
korsak7,
Ваш скрипт мне более понятен. Только я маленько подправил закомментированную вами часть...
@echo off
SET DD=ИМЯ ПАПКИ
SET MM=ИМЯ ПОДПАПКИ
for %%I 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 %%I:\%DD%\%MM% set DVDdrive=%%I:
set fullpath=%DVDdrive%\%DD%\%MM%
if exist %fullpath%\install.wim set container=%fullpath%\install.wim
if exist %fullpath%\install.esd set container=%fullpath%\install.esd
IF "%container%"=="" (
echo ERROR - COULD NOT FIND INSTALL.WIM INSTALL.ESD in %DD%\%MM% folder!
pause
pause
goto :EOF
)
if exist %fullpath%\unattend.xml SET UN=/unattend:%fullpath%\unattend.xml
if exist %fullpath%\_unattend.xml SET UN=/unattend:%fullpath%\_unattend.xml
if exist %fullpath%\OEM\nul SET OEM=/m:%fullpath%\OEM
if exist %fullpath%\$OEM$\nul SET OEM=/m:%fullpath%\$OEM$
if not exist %fullpath%\Setup.exe goto :BAD
REM if not then just call setup in root of boot.xxx
%fullpath%\setup.exe /installfrom:%container% %OEM% %UN%
goto :RBT
if not exist X:\Setup.exe goto :BAD
REM if not then just call setup in root of boot.wim
X:\setup.exe /installfrom:%container% %OEM% %UN%
goto :RBT
:BAD
dir X:\ /b
echo Cannot find X:\Setup.exe !
@echo Press a key to reboot now...
pause
:RBT
wpeutil reboot
pause


Last edited by puhpol on 2014-12-21 13:40; edited 1 time in total

[Quote]

    Guest
  • REPUTATION:0

    [+] [-]
puhpol, подправил свой скрипт на 3-й страничке. Теперь должен работать правильно.

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 892
  • REPUTATION:75

    [+] [-]
conty9, Доброго времени. Спасибо!
Сам уже пол дня вожусь, да толку мало.
Есть вопрос: А как в CMD заставить использовать или ecd или wim. То-есть, есть ли какое значение, которое заменяло бы значение слова ИЛИ ?

[Quote]

    korsak7
  • 107
  • Longevity: 9 years
  • Posts: 1063
  • REPUTATION:62

    [+] [-]
4. Если в папке с дистрибутивом имеется Setup.exe, то будет использован именно он, а не X:\Setup.exe
Кто в курсе - скажите пару слов - в чем разница между этими вариантами?
гуглить лень al

[Quote]

    korsak7
  • 107
  • Longevity: 9 years
  • Posts: 1063
  • REPUTATION:62

    [+] [-]
953korsak7,
Ваш скрипт мне более понятен. Только я маленько подправил закомментированную вами часть...
По идее надо вообще скрипт переделывать , чтобы переменные с путями DD и MM были вне boot.wim

[Quote]

    Guest
  • REPUTATION:0

    [+] [-]
puhpol, заставить-то, думаю, можно... Те же dir или if exist воспримут install.* и обработают правильно... Но ведь переменной нужно передать точное имя с расширением.

Page 2 of 19


Display posts:    

Current time is: 04-Dec 01:46

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum