puhpol
- 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
|
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%
|
puhpol
- 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
|
puhpol
- 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
|
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
|
Отправлено: 14-Dec-2014 19:02
(after 2 hours 8 minutes)
puhpol
- 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.cmdTITLE УСТАНОВКА 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 pauseset7.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
|
Andrei888
- Longevity: 10 years
- Posts: 11
- REPUTATION:0[+] [-]
- Location: КАЗАКСТАН
|
Здравствуйте. Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim?
|
puhpol
- Longevity: 10 years
- Posts: 892
- REPUTATION:75[+] [-]
|
zxen, Привет! Спасибо большое! Завтра буду тестить.894Здравствуйте. Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim? Приветствую. Если не запускать установку под сборкой какой (ВИН РЕ) то достаточно одного insatal.wim
|
korsak7
- Longevity: 9 years
- Posts: 1063
- REPUTATION:62[+] [-]
|
891Изменяем файл BOOT.WIM (черновик) Кстати, WIM-ы умеет изменять 7z - без лишнего шаманства и многостраничных инструкций :)
|
puhpol
- 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
|
Отправлено: 15-Dec-2014 14:14
(after 2 hours 43 minutes)
Guest
- REPUTATION:0[+] [-]
|
puhpol, подправил свой скрипт на 3-й страничке. Теперь должен работать правильно.
|
puhpol
- Longevity: 10 years
- Posts: 892
- REPUTATION:75[+] [-]
|
conty9, Доброго времени. Спасибо! Сам уже пол дня вожусь, да толку мало. Есть вопрос: А как в CMD заставить использовать или ecd или wim. То-есть, есть ли какое значение, которое заменяло бы значение слова ИЛИ ?
|
korsak7
- Longevity: 9 years
- Posts: 1063
- REPUTATION:62[+] [-]
|
953korsak7, Ваш скрипт мне более понятен. Только я маленько подправил закомментированную вами часть... По идее надо вообще скрипт переделывать , чтобы переменные с путями DD и MM были вне boot.wim
|
Guest
- REPUTATION:0[+] [-]
|
puhpol, заставить-то, думаю, можно... Те же dir или if exist воспримут install.* и обработают правильно... Но ведь переменной нужно передать точное имя с расширением.
|
Page 2 of 19
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
|
|