[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
"Возвращается мужик из командировки, а у него дома винда переставлена."-*** WInst ***-
Назначение проекта:
    Установка Windows 7-10 через:
  • Автоматизацию запуска стандартной программы установки Windows setup.exe с ключами командной строки. Для установки новых редакций Windows 10 применяется метод подмены стандартной библиотеки winsetup.dll.
  • Развёртывание Windows на жёсткий диск (как с возможностью его разметки, так и на уже подготовленный) или в контейнер VHD с помощью программы wimlib-imagex.exe и последующим добавлением в список загрузки.

Представляет собой:
    Командный бат-файл.

Область применения:
  • Операционная система:
    • установка через setup.exe: WinPE 7-10
    • развёртывание через wimlib-imagex.exe: Win7-10, WinPE 7-10
  • Разрядность: x86/x64

Загрузочная среда BootMedia

Содержимое папки:
  • Загрузочные образы (x86 и x64) на базе Windows 1909, 2009, 2022
  • Загрузочный образ на базе Windows 8 x86
  • Загрузочный образ на базе Windows 7 x86 с комплектом драйверов USB3/SATA-RAID/NVMe
  • Обновлённый скрипт создания загрузочного образа
При старте происходит поиск (и запуск, в случае успеха) по всем дискам скрипта "$:\programs\WInst\*.cmd" или "$:\WInst\*.cmd".Загрузить BootMedia

readme.txt

0. Назначение
----------
Установка Windows 7-10 через:
- автоматизацию запуска стандартной программы установки Windows setup.exe с ключами
командной строки. Для установки новых редакций Windows 10 применяется метод
подмены стандартной библиотеки winsetup.dll
- развёртывание Windows на жёсткий диск (как с возможностью его разметки, так и на
уже подготовленный) или в контейнер VHD с помощью программы wimlib-imagex.exe и
последующим добавлением в список загрузки.
1. Терминология
------------
Папка дистрибутива (ПД)
~~~~~~~~~~~~~~~~~~~~~~~
Папка, в которой содержатся:
- установочный файл с расширением WIM, ESD, SWM. Обычно это "install.esd"
- файл описания (необязательно) {формат файла описания см. в "Примечания"}
- папка $OEM$ (необязательно)
- файл ответов unattend.xml (необязательно)
- установочный комплект setup.exe (необязательно)
Допускается наличие в ПД множественных установочных файлов с файлами описаниями.
Общая папка (ОП)
~~~~~~~~~~~~~~~~
Папка, в которой содержатся:
- папки дистрибутивов
- папка $OEM$ (необязательно)
- файл(-ы) ответов unattend.xml (<любое_имя>.xml)
2. Концепция
---------
Возможны три варианта расположения ПД:
Классический
~~~~~~~~~~~~
ОП находится в произвольном месте флешки. Например:
F:\
ОП\
ПД\
ПД\
ПД\
...
Портативный
~~~~~~~~~~~
ОП называется "WInstall" и находится в папке с установочным скриптом WInst
"WInst.cmd". Например:
F:\
Folder\
WInst\
WInstall\
ПД\
ПД\
ПД\
...
WInst.cmd
Произвольный
~~~~~~~~~~~~
Папка ОП отсутствует, ПД располагаются в любом месте флешки. Например:
F:\
Folder\
ПД
Folder1\
Folder2\
ПД
ПД
Folder3\
ПД
3. Выполнение
----------
Поиск и отображение
~~~~~~~~~~~~~~~~~~~
Сначала выполняется поиск ПД, расположенных в варианте "классический".
Для указания расположения ОП служит файл dirlist.txt
Например, у нас есть флешка с такой структурой папок:
F:\
Install\
Windows\
Win7x86\
Win81x64\
Win10x64\
В данном примере ОП - это F:\Install\Windows\
Отбрасываем букву диска с двоеточием и завершающий слэш, получаем "\Install\Windows"
Именно это и записываем в файл dirlist.txt:
\Install\Windows
Если ОП больше одной, то добавляем в dirlist.txt соответствующие строки.
Допускается указание в dirlist.txt непосредственно ПД (это целесообразно, если ПД
содержит множественные установочные файлы). Если брать структуру папок из примера выше,
то записываем в dirlist.txt:
\Install\Windows\Win7x86\@
\Install\Windows\Win81x64\@
\Install\Windows\Win10x64\@
Далее выполняется поиск ПД, расположенных в варианте "портативный" (папка WInstall).
Если поиск в вариантах "классический" и "портативный" не дал результатов, и в папке
программы существует файл fudlist.txt (см. ниже), то информация о дистрибутивах берётся
из него.
Варианты отображения найденных дистрибутивов:
- если для установочного файла существует файл описания, то отображается его содержимое
- если файла описания нет, то берётся информация из первого индекса дистрибутива
Дополнительные возможности
~~~~~~~~~~~~~~~~~~~~~~~~~~
Переключить режим отображения: "версия/путь" - переключить вид с информации из
первого индекса на полный путь к
дистрибутиву.
Выбрать дистрибутив вручную - самостоятельно выбрать файл дистрибутива (файл с
расширением ESD, WIM, SWM).
Искать дистрибутивы на выбранных дисках - поиск на выбранных дисках файлов с
расширением WIM, ESD, SWM и размером
более 1 000 000 000 байт.
Предварительная разметка диска - разметить новый (или без сохранения данных)
накопитель с использованием сценариев diskpart.
Создать/Открыть VHD(X) - создать новый/открыть существующий VHD(X)-файл и
присоединить его к системе для последующей установки
в него Windows.
Техническое обслуживание - добавить раздел/VHD-контейнер в загрузчик Windows;
интегрировать драйверы/установочные пакеты;
удалить/откатить установленные драйверы;
восстановить загрузочные записи раздела/диска.
Поиск используется, в основном, при "произвольном" расположении ПД. Результаты
поиска записываются в файл fudlist.txt и могут быть использованны при последующих
запусках WInst (в отличие от dirlist.txt, содержит полные пути (без диска) к
найденным дистрибутивам). Файл fudlist.txt можно конвертировать в dirlist.txt. Для
этого переименуйте:
fudlist.txt -> fud2dir.txt (или просто fud2dir) для перезаписи dirlist.txt
fudlist.txt -> fud4dir.txt (или просто fud4dir) для добавления к dirlist.txt
и запустите WInst.
Предупреждение установщика о невозможности использовать раздел VHD для установки
Windows нужно игнорировать.
Опция "Fix boot":
* MBR/PBR (PBR) - обновить только загрузочные записи.
* MBR/PBR + update BCD - обновить загрузочные записи и BCD.
* Advanced Boot Options - включить при загрузке меню "Advanced Boot Options".
- для раздела "WINDOWS" обновляется загрузочная запись раздела;
- для раздела "BOOTLOADER" обновляется загрузочная запись раздела и MBR диска,
содержащего раздел "BOOTLOADER";
- после применения "Advanced Boot Options" в корне раздела "WINDOWS" создаётся
файл "AdvBootOpt_off.cmd" для отключения опции.
При интеграции драйверов средствами WInst в папке "\Windows\Temp" целевой системы
создаётся файл "WInst_Add_Drivers.bak", содержащий список драйверов, установленных
до интеграции. Таким образом, откат установленных драйверов - это удаление всех
драйверов, которых нет в данном списке.
Опции установки
~~~~~~~~~~~~~~~
Дистрибутив - переключение вида "версия/путь"
Папка $OEM$ - может располагаться в трех местах: ПД, ОП, WInstall. Соответственно,
будет отображаться как: $OEM$, ..\$OEM$, _WInst_\$OEM$
Если существуют все три варианта, нужный можно выбрать вручную.
Файл ответов - аналогично папке $OEM$. Будет отображаться как:
unattend.xml, ..\unattend.xml, _WInst_\unattend.xml
В папках ОП и WInstall может быть несколько файлов с расширением xml,
нужный можно выбрать вручную.
Установщик - Если в ПД существует setup.exe, то он будет предложен для запуска.
Выбрать встроенный setup.exe можно вручную.
Если в файле настроек определены переменные "setup_x86.exe" и/или
"setup_x64.exe", содержащие путь к setup.exe распакованного комплекта
установки, то именно этот комплект будет использован в качестве
встроенного установщика.
Проверка целостности - перед установкой будет запущена проверка установочного файла.
Перезагрузка - можно отменить перезагрузку после установки или развёртывания
дистрибутива.
Лицензия EI.cfg - переключение между Volume/Retail
Выбор языка - язык установки берётся из первого индекса дистрибутива или
может быть выбран вручную.
Выбор Winsetup.dll - по умолчанию "прямой". Если в процессе установки появляется
ошибка "Не найдено лицензионное соглашение", то можно сменить
на "обратный".
4. Развёртывание
-------------
Суть развёртывания состоит в:
- распаковке файла дистрибутива на раздел жёсткого диска (или в контейнер VHD)
- добавлении нового пункта в меню загрузки Windows (или создании этого меню)
Порядок действий:
1. Выбрать раздел, куда будет распакован дистрибутив;
2. Выбрать раздел, где находится (или будет создан) загрузчик;
3. Выбрать тип загрузки.
Разделы должны иметь файловую систему (нельзя использовать RAW)
Окно выбора раздела для распаковки дистрибутива содержит в "шапке" [ WINDOWS = ... ]
- если на разделе уже есть Windows, то будет предложено отформатировать раздел
Окно выбора раздела для установки загрузчика содержит в "шапке" [ BOOTLOADER = ... ]
- можно не устанавливать/не изменять загрузчик
Тип загрузки может быть:
* ALL - загружать систему и в режиме BIOS, и в режиме UEFI
* BIOS - загружать систему только в режиме BIOS
* UEFI - загружать систему только в режиме UEFI
Опции развёртывания
~~~~~~~~~~~~~~~~~~~
New BCD - создать новый файл конфигурации BCD (вместо добавления новой записи в
существующую конфигурацию) и обновить файлы загрузчика.
Drivers - операции с драйверами после выполнения развёртывания.
Reboot - перезагрузка после завершения развёртывания.
Операции с драйверами:
* Добавление - выбрать папку с распакованными драйверами, которые будут
интегрированы в развёрнутую Windows. Дополнительно папка может
содержать установочные пакеты Windows (файлы с расширением ".msu"
или ".cab"), которые также будут интегрированы.
* Удаление - удалить все сторонние драйверы из развёрнутой Windows.
* Удаление+добавление - комбинация предыдущих пунктов.
5. Состав:
------
docs - папка с файлами справки.
packs - папка с комплектами установки и вспомогательными утилитами.
schemes - папка со сценариями diskpart для "Предварительной разметки диска".
WInst.cmd - файл запуска.
Опционально:
~~~~~~~~~~~
dirlist.txt - список ОП и ПД для поиска по "классическому" варианту.
settings.txt - файл настроек для изменения значений параметров, используемых
по умолчанию.
WInstall - папка для размещения общих $OEM$, unattend.xml и ПД для "портативного"
варианта расположения ПД.
6. Примечания
----------
- предназначено для запуска:
* для установки через setup.exe: из-под WinPE 7-10 x86/x64
* для установки через развёртывание: из-под Win7-10 x86/x64 и WinPE 7-10 x86/x64
- поиск папок из dirlist.txt и файлов из fudlist.txt производится по всем дискам
- в случае "произвольного" расположения ПД, также можно пользоваться общими $OEM$ и
unattend.xml из папки WInstall
- при "Развёртывании" и "Техническом обслуживании" создаются резервные копии файла
конфигурации BCD в папках "\Boot\{WInst}.bak" и "\EFI\Microsoft\Boot\{WInst}.bak"
для BIOS и UEFI соответственно.
Формат файла описания:
- кодировка WIN-1251
- имя файла описания = имя установочного файла + расширение "txt"
Например: "install.esd.txt"
- содержание:
* первая строка - описание самой установки
* следующие строки - описания редакций (необязательно) в формате "N=Title"
Например, содержимое "install.esd.txt":
Windows 7 SP1 (x86-x64) Russian
1=Windows 7 (x86) Максимальная
2=Windows 7 (x86_64) Максимальная
7=Windows 7 (x86) Домашняя базовая
8=Windows 7 (x86_64) Домашняя базовая
При развёртывании редакции, для которой есть описание в файле описания, новый пункт
в меню загрузки Windows будет называться как описание редакции, а не стандартно
"Windows 7" или "Windows 10". Если такая редакция будет развёрнута на одном ПК
несколько раз, то к названию будет добавляться индекс [N], где N=2,3 и.т.д.

Дополнительная информация

    Установщик Windows (ver. 10.0.10586) взят из комплекта WinSetup2k10 от korsak7 с добавлением всех языковых пакетов.

Благодарности

    dimo70 за тестирование и выявление всякого.
    goga8686 за тестирование и видеролик про "Развёртывание".
    BalAngel за английские переводы файлов справки и настроек.
    Всем камрадам, кто принимал участие в тестировании и подкидывал идеи.

Видеоролики

Развёртывание
DriverPack для 7/8.1/10
NVMe/SATA-RAID/USB3
Загрузить WInst


Последний раз редактировалось: Ander_73 (2021-07-31 22:25), всего редактировалось 33 раз(а)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
dialmak, я про тонкости работы bcdboot вообще ничего не знаю. Собственно, в само развёртывание погрузился, считай, неделю-две назад, считай, с твоей же подачи. Ты распиши как надо, а я уж покумекаю.
Сейчас тупо: в комплекте bcdboot от десятки 10586 он и запускается после распаковки дистра. Битность bcdboot та же, что и хоста, из которого скрипт запускаем.

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 1 месяц
  • Сообщений: 842
  • Репутация:40

    [+] [-]
Ander_73,
Сейчас тупо: в комплекте bcdboot от десятки 10586 он и запускается после распаковки дистра. Битность bcdboot та же, что и хоста, из которого скрипт запускаем.
По идее это сработает в 99,9% случаев.
Возможно не сработает в варианте - хостовая ОС x86 7 - целевая ОС x64 8.1\10 с поддержкой в файле ответов фильтра UWF. Мне это писали, но я не проверял. Типа для фильтра UWF нужно что-то добавлять в BCD (я не разбирался ибо не юзаю)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
Обновление:
- ускорен разбор парсинга wimlib
- при вызове DiskPrep шрифтом консоли устанавливается Terminal 12x16, читается в разы лучше, имхо
- архив приложений теперь разделён на две части: tools и setup. Кому не нужен виндовый setup.exe (кто пользуется только развёртыванием) файлы setup86 и setup64 могут удалить. Распаковка setup теперь происходит не в начале работы, а только перед вызовом виндового установщика (ускорение начала работы)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
Обновление
По мелочи:
- добавлен детект WinPE, ибо в некоторых не работает DISM или работает криво
- добавлен бекап BCD перед добавлением новой записи (папка {WInst}.bak рядом с BCD), а то мало ли...
Существенно:
- расширен функционал файла описания. Теперь он может содержать также описания редакций (русский допускается, кодировка 1251 как и прежде).
Пример:

install.esd.txt

Windows 7 x86-x64 g0dl1ke collection
1=Windows 7 (x86) Максимальная
2=Windows 7 (x86_64) Максимальная
7=Windows 7 (x86) Домашняя базовая
8=Windows 7 (x86_64) Домашняя базовая
Смысла два:
1. Обход ограничения wimlib на обработку русских названий редакций
2. Это описание будет добавлено в пункт загрузочного меню вместо стандартного "Windows 7" или "Windows 10". Когда на ПК одна-две ОС - это не критично. Когда же их несколько, приходится их как-то различать и руками править загрузочное меню. Теперь это можно автоматизировать на этапе развёртывания.
Как видно из примера, не обязательно добавлять описания всех редакций, можно добавить только для любимых. Остальные будут отображаться стандартным для скрипта способом.
Порядок цифр неважен. Важна только структура N=Title без пробелов вокруг =

[Цитировать]

    Orochi
  • 14100
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 218
  • Репутация:0

    [+] [-]
Ander_73,
Спасибо за обновление. aa
В новой версии, кнопка путь/версия не показывает пути, только версии.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
Orochi, проверю.
Кнопка "не работает", если есть файл-описание. Тогда всегда показывает только описание.
UPD. Баг не подтверждаю! Всё работает, как положено.
(найден глючок, завтра поправлю - при отображении сборок "проглотился" билд, не критично абсолютно)

[Цитировать]

    Orochi
  • 14100
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 218
  • Репутация:0

    [+] [-]
59805Кнопка "не работает", если есть файл-описание. Тогда всегда показывает только описание.
Понятно. Не знал, что так задумано. Имхо, было бы не плохо показывать пути в любой ситуации.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
59809Имхо, было бы не плохо показывать пути в любой ситуации
Вы путаетесь в собственных описаниях что-ли? Так сделайте их более вменяемыми и однозначными.
Показать путь нужно только в одном случае: у нас есть несколько "диких" сборок, схожих по параметрам, и нужно однозначно идентифицировать какую-то конкретную.
... потому что, по моей логике, описанием снабжают только старые проверенные инструменты. И этого описания полностью достаточно для однозначной идентификации.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
Фиксы:
- пофиксил отображение билда в сборках
- не работало развёртывание из SWM
Добавлено:
- при установке одной и той же редакции на ПК несколько раз (при условии, что у редакции есть описание в файле-описании), к каждой очередной добавляется индекс [N]. Примерно, так:

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет 3 месяца
  • Сообщений: 2495
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
59814при установке одной и той же редакции на ПК несколько раз (при условии, что у редакции есть описание в файле-описании), к каждой очередной добавляется индекс [N]
Ander_73,
Приветствую! aa
Может лучше тогда уж добавлять номер раздела диска на который непосредственно ставится ОС, ...ну типа того:
Windows 7 (x86_64) Максимальная (hd0,1)
Windows 7 (x86_64) Максимальная (hd0,2)
Windows 7 (x86_64) Максимальная (hd0,3)
ab

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
sergeysvirid, вообще-то, предполагается, что юзер потом сам обзовёт свои копии как ему надо. Я просто предлагаю механизм изначального различения копий ab
UPD. Кстати, винда сама добавляет номер тома.

Вот только проку с этой информации? А у меня хоть понятно, кого ставили первым, а кого вторым ab

[Цитировать]

    nik63
  • 1479
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 497
  • Репутация:19

    [+] [-]
  • Откуда: Башкирия г.Салават
Ander_73,
А если конкретно ставить нам раздел HDD, вим либом можно?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
59847конкретно ставить нам раздел HDD
Для начала, Вам нужно просто разобраться, что такое "развёртывание".

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
Косметика:
- окно развёртывания сделал чуть красивше
- том для развёртывания (и загрузочный) теперь можно выбирать и по букве тоже (если она есть, конечно)
---
UPD. Добавил в BootMedia загрузочные образы из ADK без русского языка (на ~50Мб меньше).

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
FullInstPrep
Сделал комбайн InstPrep+BootMedia
Выполняет две задачи:
  • Подготовка загрузочной флешки
  • Загрузка дистров Windows и извлечение/подготовка install.esd
- флешка формируется через diskpart, один раздел, FAT32 (ограничения в 32 Гб нет)
- BootMedia (4 варианта на выбор) динамически скачивается с ЯД; WInst динамически скачивается с гитхаб-а
- поддержка BIOS/UEFI (разрядность UEFI в зависимости от выбранного варианта BootMedia)
- скачанные/подготовленные install.esd сразу перемещаются на флешку (папка distros; можно добавлять свои дистры, общие папки ОЕМ и проч)
Подготовленная таким образом флешка сразу может использоваться для установки/развёртывания Windows.
Скачать
Пока на "живую нитку", потом перенесу в шапку.
---
UPD. Перезалит 15.05 Мск, недоглядел с локализацией.

Страница 13 из 44


Показать сообщения:    

Текущее время: 28-Мар 18:22

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы