87 lines
3.9 KiB
Markdown
87 lines
3.9 KiB
Markdown
# Установщик Windows PARAVIS
|
||
|
||
Нативная Win32-версия `Windows_installer_NEW\setup.au3` на C++.
|
||
|
||
## Сборка
|
||
|
||
Требования: Visual Studio 2022 (Desktop C++) и CMake 3.20+.
|
||
|
||
```bat
|
||
build.cmd
|
||
```
|
||
|
||
Результат:
|
||
|
||
```
|
||
build_x64\Release\setup_x64.exe
|
||
build_x86\Release\setup_x86.exe
|
||
```
|
||
|
||
Исполняемые файлы используют статическую CRT, GUI-подсистему и тот же
|
||
манифест `asInvoker` / Common Controls 6, что и сборки на AutoIt.
|
||
|
||
## Предпросмотр
|
||
|
||
- `setup_x64.exe /preview` или файл с именем `setup_preview*.exe` запускает
|
||
режим предпросмотра: фиксированная позиция 307×259, все кнопки активны,
|
||
без помощника `src_*.exe`, обои предпросмотра.
|
||
- `build_x64\Release\setup_x64.exe`, переименованный в `setup_preview.exe`,
|
||
используется именно так.
|
||
|
||
## Размещение на флешке
|
||
|
||
Два образа Windows Setup на флешке PARAVIS:
|
||
|
||
- `\efi\Paravis\Boot\ws64.wim`, образ 1, `\Windows\Setup.exe` — сборка x64;
|
||
- `\efi\Paravis\Boot\ws86.wim`, образ 1, `\Windows\Setup.exe` — сборка x86.
|
||
|
||
`Winpeshl.ini` в обоих WIM уже запускает `%SYSTEMROOT%\setup.exe`.
|
||
Запускается настоящий Setup из `X:\sources\setup.exe`.
|
||
|
||
Окно использует цветовой ключ `0xABCDEF`. Шрифты Montserrat встроены как
|
||
ресурсы `RCDATA`; обои 1024×768 встроены как PNG без потерь и
|
||
декодируются через GDI+ при запуске. Поэтому каждый exe весит около 1 МБ.
|
||
Разметка UI та же, что в AutoIt-версии (376/410/360 по ширине), кнопки
|
||
нативные. GDI+ и ole32 входят в стандартный Windows Setup boot.wim
|
||
(проверено в целевом образе).
|
||
|
||
## Поведение
|
||
|
||
- Ищет `\WindowsESD\NOT.DEL` или `\efi\Paravis\Windows\NOT.DEL` на всех
|
||
дисках.
|
||
- Предупреждает и выходит, если найдены обе папки с образами.
|
||
- Находит `\efi\Paravis\Boot\NOT.DEL` для `src_x64.exe` / `src_x86.exe` и
|
||
Total Commander.
|
||
- Использует `%WINDIR%\SYSWOW64` для выбора x64-интерфейса; `firmware_type`
|
||
выбирает Legacy или UEFI для x86-интерфейса.
|
||
- Собирает те же командные строки
|
||
`X:\sources\setup.exe /installfrom:... /m:... [/unattend:...]`, что и
|
||
AutoIt.
|
||
- Отключает кнопки Windows, если соответствующий образ ESD отсутствует.
|
||
- Кнопка перезагрузки завершает программу (перезагрузку выполняет
|
||
стартовый скрипт WinPE).
|
||
- Отладочный лог: `PARAVIS_DEBUG_LOG=1` включает запись в
|
||
`%TEMP%\winsetup_cpp_debug.log`.
|
||
|
||
## Структура репозитория
|
||
|
||
```
|
||
src/ исходники C++
|
||
assets/ шрифты, обои и элементы интерфейса (включая Montserrat OFL)
|
||
legacy-au3/ исходные скрипты AutoIt
|
||
app.rc скрипт ресурсов
|
||
app.manifest манифест приложения
|
||
build.cmd сборка релиза (x64 + x86)
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
Код — MIT, см. [`LICENSE`](LICENSE).
|
||
|
||
Montserrat распространяется по SIL Open Font License 1.1, см.
|
||
[`assets/OFL.txt`](assets/OFL.txt) и [`THIRD-PARTY.md`](THIRD-PARTY.md).
|
||
|
||
В репозитории только исходный код. Образы установки Windows (`*.wim`,
|
||
`*.esd`, `Data.pf`), производные шрифтов Microsoft и сторонние бинарники не
|
||
распространяются.
|