Hello everyone,
Lately I was continuing working on my “setup_improvements” branch: https://github.com/HBelusca/reactos/commits/setup_improvements
(whose main purpose, I recall, is to share a maximum of installation code between our working 1st-stage text-mode usetup and our 1st-stage GUI-mode “reactos.exe” setup that needs to be implemented).
The last results of this is that I am now able to install ReactOS files to a user-provided directory using the GUI-mode setup!
As I’m developing under Windows I tested the file-copying part of the installer (which is, at the time of writing, the latest part of installation code I has been able to share between the two installers) on Windows.
You can see the demo here: https://i.imgur.com/xF97hv1.gifv
The animated gif also demonstrates the capability of the installer to halt file copying if the user pops the “installation-cancel” confirmation dialog out; file-copying is resumed when the user does not want to cancel the installation, but it is stopped when the user really cancels the installation.
And of course, the file-copying status is displayed with an animated progress-bar.
I have worked out a bit the wizard transitions, but some work remains to be done, especially for the partitioning step (currently I’m hardcoding in the GUI installer the disk & partition where I want the copy to take place).
One can note in the animation that the preparation of the list of files to be copied seems to take a while: indeed, the shared installation code works exclusively with NT paths. However, when this shared code is used in the win32 GUI-mode installer, this code calls inside setupapi.dll functions to manage the installation file queue (in usetup on the contrary, it uses instead a file queue implementation that works directly with NT paths). As a consequence, I need to convert the NT paths back to Win32 ones before feeding them into the setupapi functions, and this is not trivial. I want to improve this conversion by caching some of the computed results.
Enjoy!
Best regards,
Hermès
P.S.: Please don’t put that on Twitter since this is under heavy work-in-progress and this demo hasn’t been done under ReactOS at all.