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 Im 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 Im 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 dont put that on Twitter since this is under heavy
work-in-progress and this demo hasnt been done under ReactOS at all.