Windows installer 2.0 (C++ port)

This commit is contained in:
paravis committed 2026-11-07 20:40:49 +03:00
commit 45967534aa
32 files changed
+1768

No files matched your search

+85
View File
@@ -0,0 +1,85 @@
# Windows Setup by Paravis — C++ port
Native Win32 port of `Windows_installer_NEW\setup.au3`.
## Build
Requirements: Visual Studio 2022 (Desktop C++) and CMake 3.20+.
```bat
build.cmd
```
Outputs:
```
build_x64\Release\setup_x64.exe
build_x86\Release\setup_x86.exe
```
The executables use a static CRT, are GUI subsystem, and use the same
`asInvoker` manifest / Common Controls 6 as the AutoIt builds.
## Preview
- `setup_x64.exe /preview` or an executable named `setup_preview*.exe`
starts preview mode: fixed 307×259 position, all buttons enabled, no
`src_*.exe` helper, preview wallpaper.
- The ported `setup_preview.exe` in `..\Windows_installer_NEW` is the x64
build used this way.
## Deployment
On a PARAVIS flash the two Windows Setup WIMs are:
- `\efi\Paravis\Boot\ws64.wim`, image 1, `\Windows\Setup.exe` — x64 build
- `\efi\Paravis\Boot\ws86.wim`, image 1, `\Windows\Setup.exe` — x86 build
`Winpeshl.ini` in both WIMs already launches `%SYSTEMROOT%\setup.exe`.
The launcher starts the real setup from `X:\sources\setup.exe`.
The window is layered with color key `0xABCDEF`. The Montserrat fonts are
embedded as RCDATA; the 1024×768 wallpaper is embedded as a lossless PNG and
decoded with GDI+ at startup. This keeps each executable around 1 MB.
The UI is the same 376/410/360-wide layout as the AutoIt version, with native
buttons. GDI+ and ole32 are standard components of the Windows Setup boot.wim
(verified in the target image).
## Behaviour
- Searches all drives for `\WindowsESD\NOT.DEL` or
`\efi\Paravis\Windows\NOT.DEL`.
- Warns and exits if both image folders are present.
- Finds `\efi\Paravis\Boot\NOT.DEL` for `src_x64.exe` / `src_x86.exe`
and Total Commander.
- Uses `%WINDIR%\SYSWOW64` to select the x64 UI; `firmware_type` selects
Legacy vs UEFI for the x86 UI.
- Builds the same `X:\sources\setup.exe /installfrom:... /m:... [/unattend:...]`
command lines as AutoIt.
- Disables Windows buttons when the corresponding ESD image is missing.
- Reboot button exits the launcher (the WinPE startup script performs the
reboot).
- Debug log: set `PARAVIS_DEBUG_LOG=1` to write
`%TEMP%\winsetup_cpp_debug.log`.
## Repository layout
```
src/ C++ sources and resources
assets/ fonts, wallpapers and UI images (incl. Montserrat OFL)
legacy-au3/ original AutoIt scripts
app.rc resource script
app.manifest application manifest
build.cmd release build (x64 + x86)
```
## License
MIT for the program code. See [`LICENSE`](LICENSE).
Montserrat is licensed under the SIL Open Font License 1.1; see
[`assets/OFL.txt`](assets/OFL.txt) and [`THIRD-PARTY.md`](THIRD-PARTY.md).
This repository contains source code only. Windows installation images
(`*.wim`, `*.esd`, `Data.pf`), Microsoft font derivatives and third-party
binaries are not distributed here.