Expand description
Pacenotes Installer: common controls, the developer self-test, then the wizard.
The Win32-free logic lives in the sibling library (lib.rs).
ModulesΒ§
- api π
- The serverβs endpoints: URLs in, parsed bodies out. The transport is
httpand the thread isworker. - crash π
- A GUI binary with
panic = "abort"has nowhere to print, so a panic would be a vanished window and an offset into a stripped exe. The hook runs before the abort: it writes where and why into the run log, and tells the user in their language where that is, offering to show the file. - elevation π
- Restarting as administrator, for a game folder this account cannot write (P11): what the new instance carries over so nothing is asked twice, and the UAC launch itself.
- game_
process π - http π
- The installerβs only HTTP client: WinHTTP, whose TLS is the OSβs own Schannel. Blocking, so it runs on the worker thread, never the UI thread.
- i18n π
- Localization: the strings live in per-language STRINGTABLEs in
res/installer.rc, and choosing a language isSetThreadUILanguage. TheIDS_*ids below match the#defines there. - package_
download π - Fetching a package into the cache. A payload enters the cache only after its sha256 matched the manifest, so nothing downstream verifies it again.
- run_
header π - selftest π
- Developer checks that run one real network path without the wizard and report to a file or a MessageBox, since a GUI-subsystem binary has no stdout.
- single_
instance π - ui π
- The Win32 vocabulary the wizard pages are written in.
- wizard π
- The wizard: a comctl32 PropertySheet in wizard mode, one page per scene of
installer/DESIGN.mdrev. 2. Scene 1 shares the sheetβs frame rather than being the small window DESIGN.md describes, since a sheet has one size. - worker π
- The one background thread. A worker never touches a control: it posts messages and the UI thread acts on them.
ConstantsΒ§
- DEFAULT_
SERVER π - From
installer/.env, read by build.rs;--server <url>overrides it, which is how the tests reach a local server.
FunctionsΒ§
- argument_
after π - cache_
override π --cache <dir>, an override for development: the cache belongs in the game folder, which is not known until scene 3 settles one.- init_
common_ πcontrols - main π
- server_
url π