You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/blogs/gui-setup-part1-setupapi.md
+9-2Lines changed: 9 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: "1st-stage GUI setup- September 2023: partly Wine-syncing setupapi"
2
+
title: "1st-stage GUI setup, Part 1 - September 2023: Partly Wine-syncing setupapi"
3
3
author: "hbelusca"
4
4
date: 2023-12-04
5
5
tags: [ newsletter, gui-setup ]
@@ -8,10 +8,17 @@ tags: [ newsletter, gui-setup ]
8
8
Greetings to all ReactOS followers!
9
9
As many of you certainly are aware by now, [I have been officially hired](/project-news/hermes-belusca-hired-full-time) by ReactOS Deutschland e.V. to develop the graphical version of the 1st-stage ReactOS installer ("1st-stage GUI setup").
10
10
11
-
During this first month (September 2023), my goal was to partly sync the code of the `setupapi.dll` module with Wine's.
11
+
This is the first blog of the series "1st-stage GUI setup":
12
+
13
+
1. September 2023: Partly Wine-syncing setupapi
14
+
2.[October-November 2023: Making partitioning UI work](/blogs/gui-setup-part2-partitioning)
15
+
3.[December 2023: First tests](/blogs/gui-setup-part3-first-testing-problems)
16
+
17
+
During this [first month of September 2023](https://docs.google.com/spreadsheets/d/1Kx80SmSkj1IdomVC9gcbA_MJ7XFiz_YlYYVxoxv-Jgs/view#gid=538572214), my goal was to partly sync the code of the `setupapi.dll` module with Wine's.
12
18
Indeed, this module was [forked](https://git.reactos.org/?p=reactos.git;a=blob;f=media/doc/WINESYNC.txt;h=f6614ac83a968cd5d7ddde6483dc85b94d264fc4;hb=HEAD#l182) way back in 2005, with later partial synchronizations of its code for some of its functions.
13
19
14
20
For those of you who do not know what [setupapi](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/setupapi) is, it is a module that:
21
+
15
22
- exposes [generic setup functions](https://learn.microsoft.com/en-us/windows/win32/setupapi/setup-api-portal) for reading and processing INF files, moving/copying files from an installation source media to a target, supporting also extraction from compressed .CAB cabinet files;
16
23
- and exposes device installation functions as well.
2. October-November 2023: Making partitioning UI work
13
14
3.[December 2023: First tests](/blogs/gui-setup-part3-first-testing-problems)
@@ -23,6 +24,7 @@ During the first week of October, I finished addressing some issues that arose w
23
24
24
25
I then started the main part of this project: working on the GUI setup proper.
25
26
The crucial work for it resides in three functions:
27
+
26
28
- Disk partitioning and bootloader installation;
27
29
- File copying;
28
30
- Saving settings in the registry.
@@ -79,10 +81,12 @@ The partition page allows the user to choose the partition where to install Reac
79
81
This new installation workflow necessitated adapting the existing partitioning code, shared with the text-mode USETUP, to determine where and how to store additional per-partition arbitrary data state (for example, filesystem choice and formatting parameters).
80
82
81
83
Most importantly, three main changes were required in the code, summarized below.
84
+
82
85
- Rewriting the formatter/chkdsk machine-state code, that is originally used in USETUP, to make it more generic and act as a queue whose stashed actions can then be committed all at once, so as to employ it in the GUI setup as well.
83
86
- Splitting the bootloader installation choice, from its actual installation code: see GitHub [PR #5786](https://github.com/reactos/reactos/pull/5786).
84
87
This was needed, because the old behaviour was to present the user with the bootloader installation choice only at the very end of ReactOS installation, and not before starting it, and the old code was not reusable elsewhere.
85
88
- Better unify the helper functions used to create partitions: see GitHub [PR #5837](https://github.com/reactos/reactos/pull/5837).
89
+
86
90
The existing code distinguished between "primary", "logical" and "extended" partitions.
87
91
This makes sense for MBR-based disks but does not anywhere else (such as GPT disks).
88
92
These partition creation helpers now automatically deduce their actual type -- the only exception being for "extended" partitions for MBR disks only.
@@ -97,6 +101,7 @@ These partition creation helpers now automatically deduce their actual type -- t
97
101
98
102
Partition handling code is now present in the GUI setup.
99
103
However, it requires a few improvements:
104
+
100
105
- Being able to select empty disk space between existing partitions and install ReactOS onto it.
101
106
- Reformat an _existing_ partition from the UI.
102
107
This is not yet possible because the formatting options currently exist only in the Create-And-Format-Partition dialog;
0 commit comments