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

    Adler
  • 1708
  • Стаж: 9 лет 1 месяц
  • Сообщений: 1212
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
UWI_Shell - менеджер установки различных версий Windows для интеграции в Boot.wim

Принцип работы:
При запуске (из winpeshl.ini или другого скрипта) происходит поиск файлов install.wim(.esd/.swm) по всем логическим дискам, имеющим назначенную букву диска, согласно файла конфигурации UWIS.cfg (описан ниже), где задается корневая папка и папки для каждой конкретной редакции. При нахождении такого файла (install.wim/esd/swm) ищется рядом папка OEM либо $OEM$ и файл unattend.xml либо _unattend.xml. В зависимости от найденных версий в программе становятся активными только те пункты, для которых был найден install.wim/.esd/.swm.
Фактически возможна установка из 9 источников - 3 редакции Windows (7/8.1/10) и 3 варианта (AIO/x32/x64) каждой редакции, которые можно держать на флешке/диске одновременно.
При наличии setup.exe в папке с install.wim/.esd/.swm запускается он, в противном - X:\setup.exe
Особенности: т.к. менеджер написан с использованием .Net Framework на C#, то для работы менеджера необходим интегрированный в BOOT.WIM - WinPE-NetFx.cab
По умолчанию, в стандартном boot.wim он отсутствует. В случае использования своего BOOT.WIM, WinPE-NetFx туда необходимо интегрировать с помощью Assessment and Deployment Kit.
Готовый BOOT.WIM можно взять из ссылки ниже. Отдельно выложены оригинальные "чистые" BOOT.WIM (от Windows 10 - 10.0.10586) 2х разрядностей с интегрированным WinPE-NetFx и BOOT.WIM с интегрированным в них NetFx и UWI_Shell.
Установка и настройка:
Скопировать SHELL.exe в BOOT.wim (по идее не важно, в корень или какую то папку) прописав в winpeshl.ini путь к файлу.
Файл конфигурации разместить в \windows\system32, в случае если SHELL.exe запускается через winpeshl.ini. Если SHELL.exe запускается с какого то промежуточного скрипка, то файл конфигурации должен лежать в той папке, откуда вызывается запуск SHELL.exe. (я сперва себе долго голову ломал вопросом, почему в рабочей ОС все нормально работает, а после интеграции в boot.wim нет, пока не выяснил что та функция, которая должна возвращать путь к запущенному файлу (ну я так думал, что она его должна возвращать) на самом деле возвращает путь, откуда был вызван запуск)
Отредактировать под свои папки...
Файл конфигурации UWIS.cfg имеет следующий вид:
<тут должна быть пустая строка>
[MAIN]
rootdir=_win
cfg=
[W7]
W7AIO=w7_aio
W7x32=w7_x32
W7x64=w7_x64
[W8]
W8AIO=w8_aio
W8x32=w8_x32
W8x64=w8_x64
[W10]
W10AIO=w10_aio
W10x32=w10_x32
W10x64=w10_x64
Особенность - в файле первая строка (перед [MAIN]) должна быть пустая (точнее содержать перенос строки(enter)). Это особенность корявого .ini парсера...
Параметр root - папка в корне диска, по которой происходит поиск папок версий.
По идее параметр может содержать более "глубокое" сложение, к примеру _mywindows\win, но работоспособность такого варианта не проверялась. Это же касается и пути к папкам версий.
P.S. Параметр cfg пока не используется, можно удалить...
В разделах [W7][W8][W10] указываются названия папок, вложенных в папку заданную параметром root, в которых происходит поиск файлов install.wim/.esd.swm. Т.е. при данном файле конфигурации поиск происходит в папках (буква диска):\_win\w7_aio (буква диска):\_win\w7_x32 и т.д.
Программа после загрузки запускается с некоторой задержкой. Это какая то особенность (читать - "тормознутость") .Net. При работе программы так же возможны мелкие подтормаживании т.к. при каждом переключении радио-кнопки происходит перепроверка наличия файлов install.wim/.esd./.swm, такова особенность алгоритма...
Программа тестовая, работоспособность проверялась только поверхностно. Буду благодарен за тестирование, отзывы и предложения...
Пока что в программе отсутствует проверка на наличие файла концигурации. Если файл не находится программа запускается со всеми неактивными пунктами. Допишу позже, т.к. есть еще одна задумка относительно файла конфигураци, но пока руки и голова до этого не дошли...
Программу, а так же готовые boot.wim можно скачать тут - https://yadi.sk/d/VhvlT-gCsH7k4
Небольшое демо-видео - https://www.youtube.com/watch?v=2X8JWVI8Qac (На 0:40 отработала тестовая заглушка setup.exe из папки где лежит install.wim)
07.06.2016 - Перезалил boot_64.wim с интегрированной оболочкой и залил отдельно 64 битную версию Shell.exe (в соответствующем архиве).
11.06.2016 - Исправил косяк с не помещающейся надписью "Перезагруз" (перезалил архивы). Заменил образы с оболочкой с оригинальных на собранные в ADK, работоспособность которых была проверена на реальном железе.
P.S. Вопрос к "знатокам". При запуске установки (нажатия кнопки "Установить") запускается setup.exe, но сама программа остается запущенной и в случае отмены установки (закрытии окна установки) возвращается окно менеджера. Надо ли так делать или лучше закрыть окно менеджера сразу после запуска установки?
И еще вопрос, можно ли с загруженного boot.wim как то определить, с какого именно носителя он загружен? Как, например, запущенный X:\Setup.exe без параметров находит папку \Source на диске? Или путем перебора всех дисков?


Последний раз редактировалось: Adler (2016-09-26 23:13), всего редактировалось 9 раз(а)

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

    Adler
  • 1708
  • Стаж: 9 лет 1 месяц
  • Сообщений: 1212
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
Sergey.del, да пожалуйста, он тут давно гуляет в разных интерпретациях... Не мое, не жалко ab

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

    vovan1982
  • 214
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 1130
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
Adler, ну зря вы так. Скрипт очень похожий есть в сборке Jinn's. Написан на Delphi, взгляните на досуге. Завтра покопаюсь, может что-нибудь сделаем на Delphi.
Sergey.del может подключишься? Есть исходник (естественно только с разрешения Adler).


Последний раз редактировалось: vovan1982 (2016-06-07 11:35), всего редактировалось 1 раз

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

    Adler
  • 1708
  • Стаж: 9 лет 1 месяц
  • Сообщений: 1212
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
25145Adler, ну зря вы так. Скрипт очень похожий есть в сборке Jin's. Написан на Delphi, взгляните на досуге. Завтра покопаюсь, может что-нибудь сделаем на Delphi.
Я видел. И даже спрашивал в той теме как это реализовано. Похож, но заточен под конкретную сборку и конкретные папки.
Я тут подобное выкладывал.
Sergey.del может подключишься? Есть исходник (естественно только с разрешения Adler).
Я только "ЗА!"...

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

    ANDREISM
  • 1886
  • Стаж: 9 лет
  • Сообщений: 125
  • Репутация:12

    [+] [-]
Adler,
Здравствуйте, меню редактировать можно под себя?

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

    vovan1982
  • 214
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 1130
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
ANDREISM, а как вы представляете редактировать откомпилированный С#, акромя декомпилировать?

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

    korsak7
  • 107
  • Стаж: 9 лет
  • Сообщений: 1063
  • Репутация:62

    [+] [-]
25121Sergey.del, только вот мне не понятно, почему нет таких/аналогичных 100500 штук. Такое никому не надо или ... Даже не знаю, что после или...
Алгоритм же примитивный - перебрать в цикле диски параллельно производя поиск нужных файлов по заведомо заданному пути из файла конфига, как то это систематизировать
78setup так уже изобретена aa

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

    ANDREISM
  • 1886
  • Стаж: 9 лет
  • Сообщений: 125
  • Репутация:12

    [+] [-]
vovan19822, ac

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

    Adler
  • 1708
  • Стаж: 9 лет 1 месяц
  • Сообщений: 1212
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
ANDREISM, ну попробуйте, dotPeek вам в помощь ab
А что вы хотели изменить?
vovan19822, ну с C# это на много проще при наличии некоторых базовых навыков. Т.к. C# компилируется только в промежуточный код и получить исходный код можно практически безошибочный (тулза по ссылке выше), который после редактирования можно собрать обратно с большой вероятностью без особых танцев с бубном. Это если бинарник не обфусцирован. По сути исходник у меня можно было и не просить af
korsak7, с вами согласен только частично, 78setup более профессиональный и более функциональный инструмент. Скажем так - не для ламеров. А у меня цель была сделать максимально простой, но при этом и достаточно функциональный вариант "для блондинок ламеров".
К примеру, для человека который винду ставил только с диска (аля оригинального) или какой нибудь сборки, где просто надо тыцнуть мышкой в одну кнопку, что бы выбрать, что тебе надо, то от вида 78setup у человека просто истерика случится ab

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

    ANDREISM
  • 1886
  • Стаж: 9 лет
  • Сообщений: 125
  • Репутация:12

    [+] [-]
Adler, Надписей пару убрать, под себя делаю меню.Спасибо что поделились информацией.


Последний раз редактировалось: ANDREISM (2016-06-07 13:18), всего редактировалось 1 раз

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

    vovan1982
  • 214
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 1130
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
ANDREISM, а вот POWERED BY Adler некрасиво как-то убирать.

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

    korsak7
  • 107
  • Стаж: 9 лет
  • Сообщений: 1063
  • Репутация:62

    [+] [-]
korsak7, с вами согласен только частично, 78setup более профессиональный и более функциональный инструмент. Скажем так - не для ламеров. А у меня цель была сделать максимально простой, но при этом и достаточно функциональный вариант "для блондинок ламеров".
К примеру, для человека который винду ставил только с диска (аля оригинального) или какой нибудь сборки, где просто надо тыцнуть мышкой в одну кнопку, что бы выбрать, что тебе надо, то от вида 78setup у человека просто истерика случится ab
для "просто тыцнуть мышкой в одну кнопку" придумана Winsetup2k10 ad
Наверно стоит предусмотреть в проге возможность установки из образов

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

    ANDREISM
  • 1886
  • Стаж: 9 лет
  • Сообщений: 125
  • Репутация:12

    [+] [-]
vovan19822, Считайте что этого не было ag

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

    Adler
  • 1708
  • Стаж: 9 лет 1 месяц
  • Сообщений: 1212
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
Нашел один косяк. Как оказалось при компиляции в варианте "AnyCPU" не запускается на WinPE 64-bit.
Как то сразу не подумал, что с этим могут быть траблы, при том, что писал и тестировал сперва на рабочей Windows 10 64-bit...
Перекомпилировал отдельно 64-bit версию и перезалил соответствующий Boot_64.wim и отдельно в архиве сам Shell 64 битный...
25175Наверно стоит предусмотреть в проге возможность установки из образов
Я не хочу писать клон Winsetup2k10. К тому же мне лично установка из ISO не интересна. В крайнем случае для этих целей у меня есть Zalman ZM-VE300 ab

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

    Sergey.del
  • 7
  • Стаж: 10 лет
  • Сообщений: 77
  • Репутация:4

    [+] [-]
  • Откуда: Новороссийск, Россия
vovan19822, aa
Подключусь с удовольствием.
Пишу на Delphi 7. Компоненты в наличии любые (с ru-board'a, разумеется).

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

    vovan1982
  • 214
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 1130
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
Sergey.del, ну тогда скину вам исходники. И сам покумекаю.

Страница 2 из 5


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

Текущее время: 23-Ноя 15:27

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


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