Paravis USB installer 2.0 (C++ port)

This commit is contained in:
paravis committed 2026-11-07 20:40:47 +03:00
commit ce8b49d0ec
18 files changed
+4119

No files matched your search

+74
View File
@@ -0,0 +1,74 @@
# Paravis installer — C++ port
Native Win32 port of `USBInstaller\usb-install.au3` with the same layout,
behaviour and data flow.
## Build
Requirements:
- Visual Studio 2022 with the Desktop C++ workload
- CMake 3.20 or newer
From this directory run:
```bat
build.cmd
```
The executable is produced at:
```
build\Release\ParavisInstaller.exe
```
The target is 32-bit (`Win32`) like the original AutoIt build, and the
application manifest requests administrator rights.
## What is implemented
- 376 × 183 custom-drawn window, header, custom disk dropdown, status line,
progress bar, install/cancel button and hover/pressed states.
- USB disk enumeration by storage bus type, nominal size formatting and
Windows-system-disk protection.
- Diskpart layout: FAT32 PARAVIS 16 GB, FAT VTOYEFI 32 MB, exFAT DATA
(remaining space minus 3 MB).
- Offline disk is brought online before partitioning.
- Layout verification from the partition table and volume labels.
- DISM apply of images 1 → PARAVIS, 2 → VTOYEFI, 3 → DATA with progress
parsing and cancellation of the DISM process tree.
- Pressing the cancel button during installation asks for confirmation first.
- VTOYEFI drive letter removal after a successful install.
- Success warning, launch of `Change_BootLoader.exe` from the PARAVIS
partition, then immediate exit.
- If a `Change_BootLoader.exe` is present next to the installer, it is copied
to the PARAVIS partition after unpacking and used instead of the copy from
`Data.pf`.
- Service modes: `/selftest`, `/verify=N`, `/testdisk=N`, `/wim=path`.
## Notes
- `Data.pf` is searched next to the executable, exactly like the AutoIt
version. `/wim=` remains a service/testing override.
- DISM command lines are built without the outer `cmd /c "..."` quote pair,
so paths containing spaces work correctly.
- The debug log is disabled by default. Set the environment variable
`PARAVIS_DEBUG_LOG=1` to write `%TEMP%\paravis_cpp_debug.log`.
- Message boxes use the native `MessageBoxW` dialog; text, buttons and
behavior are the same as the AutoIt version.
## Repository layout
```
src/ C++ sources and resources
legacy-au3/ original AutoIt script
build.cmd release build
```
## License
MIT. See [`LICENSE`](LICENSE).
This repository contains source code only. Installation archives
(`Data.pf`), Windows images (`*.wim`, `*.esd`) and third-party binaries are
not distributed here.