Commit graph

100 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto 29ace9c0dc
[USETUP] Add an upgrade/repair installation page.
Translators, please update the associated translations!

svn path=/branches/setup_improvements/; revision=74548
2018-10-26 02:15:19 +02:00
Hermès Bélusca-Maïto cefc9238fb
[USETUP] Use UNICODE_NULL.
svn path=/branches/setup_improvements/; revision=75248
2018-10-25 01:02:20 +02:00
Hermès Bélusca-Maïto 7fedeb7db3
[USETUP] More code for updating/repairing the registry. Fix the name of the txtsetup.sif section to look for when performing a registry upgrade.
[BOOTDATA] Add needed entries in txtsetup.sif for registry upgrade.

svn path=/branches/setup_improvements/; revision=75162
svn path=/branches/setup_improvements/; revision=75226
2018-10-25 01:00:43 +02:00
Hermès Bélusca-Maïto b20908acc8
[USETUP] Mark some variables as 'static'.
svn path=/branches/setup_improvements/; revision=75161
2018-10-25 00:58:24 +02:00
Hermès Bélusca-Maïto 455e69a011
[USETUP] Implement work-in-progress code that allows verifying whether registry hives validity.
Implement work-in-progress code that, when upgrading an existing
ReactOS installation, verifies whether the (existing) system registry
hives are valid (by loading & unloading them, this allows using the
built-in repair functionality if needed), or not.

If a given hive cannot be repaired successfully, it is backed up
(with a '.brk' extension, "brk" as "broken"), then is marked up for
recreation.

When all hives have been checked, if there are any hive that needs
to be recreated, we recreate its hive file, mount it, but we do *NOT*
mount the other valid existing hives for update. We create instead
dummy registry hives so that we can actually use, as the update code,
the same one as the one used when fully creating the registry hives
for a clean installation (of course, this choice can be improved later on).

The update code (i.e. the same as the registry clean-install one) then
adds the registry keys & values, either putting them in the dummy
registry hives (the ones that we don't want to recreate) or in the
registry hive that is recreated.

At the end, the (re)created registry hives are flushed back to disk,
and a copy of them (under a '.sav' extension) are created, so that they
can be used for restoration purposes if 2nd-stage (and up) goes berserk.

Extra fixes:

- Use the correct structure member field when initializing the
  'InstallDir' variable, when performing an upgrade.

- CreateNestedKey() should be better analysed to see whether it correctly
  creates the full registry path compatible with volatile/non-volatile keys
  (under inspection).

svn path=/branches/setup_improvements/; revision=75010
2018-10-25 00:58:23 +02:00
Hermès Bélusca-Maïto 55d8a8490c
[USETUP] Introduce SetupDeleteFile() and SetupMoveFile() (in addition to the already-existing SetupCopyFile()) in order to implement moving / renaming existing files.
Will be used soon to make backups of system files, like the registry hive files just freshly created.
- Make the SetupCopyFile() function closer to its win32 counterpart.
- Adjust the code that calls SetupCopyFile().

svn path=/branches/setup_improvements/; revision=75008
svn path=/branches/setup_improvements/; revision=75009
2018-10-25 00:58:22 +02:00
Hermès Bélusca-Maïto 5a1af6ccd8
[USETUP] Explicitly use the REG_OPTION_(NON_)VOLATILE flags in NtCreateKey calls.
svn path=/branches/setup_improvements/; revision=75007
2018-10-25 00:58:21 +02:00
Hermès Bélusca-Maïto bbb04c470a
[USETUP] Implement offline ReactOS registry initialization in USetup (equivalent of mkhive, but using OS functionality).
The rationale is as follows.

We now have the 1st-stage ReactOS setup running with its own registry SYSTEM hive,
similarly to regular ROS running instances (livecd, regular installation...).

The ReactOS-specific SetInstallPathValue() hack, introduced in a76689e9 (r3794)
and 5f973ce0 (r3795), is removed. This hack told the kernel that, during the setup,
it had to "switch" the used registry hives and instead use the ones of the ROS
installation being prepared.

This was really hackish because this means, mixing between registry settings used only
for the setup running instance, that could use different registry settings
than the ones that should be set for the ROS installation being actually performed.

Also, note that in the case of a 1st-stage GUI setup, consisting in running the
LiveCD + the GUI setup program, this situation would be untenable. Note also that
for people willing to use the Setup*** functions exported by setupapi.dll to parse
the registry INF files to initialize the registry of the ROS installation being
prepared, this would be impossible either.

Hence the need to have offline registry modification functionality.

svn path=/branches/setup_improvements/; revision=74766
2018-10-25 00:57:02 +02:00
Hermès Bélusca-Maïto cd89e5b797
[USETUP] Code formatting, making also the code closer to mkhive's one. Also, definitely remove the SetInstallPathValue() hack.
svn path=/branches/setup_improvements/; revision=74763
2018-10-25 00:51:43 +02:00
Hermès Bélusca-Maïto 3dffe964a3
[USETUP] Reshuffle a bit the main-function of USetup.
svn path=/branches/setup_improvements/; revision=74975
2018-10-24 00:55:16 +02:00
Hermès Bélusca-Maïto 3fd27d34a5
[USETUP] The 'DestinationDriveLetter' variable (that is just used for SetDefaultPagefile()...) just needs to be initialized at one place only.
svn path=/branches/setup_improvements/; revision=74951
2018-10-24 00:55:13 +02:00
Hermès Bélusca-Maïto 0b714cbe6a
[USETUP] Whitespace fixes only.
svn path=/branches/setup_improvements/; revision=74636
svn path=/branches/setup_improvements/; revision=74639
2018-10-24 00:35:54 +02:00
Hermès Bélusca-Maïto 3c616b625d
[USETUP] Rename some of the uninformative "STRING_HDDINFOUNKx" string labels into more informative ones.
- Also, reserve a new field to display whether the disk is MBR or GPT-initialized.
- Adjust the code that used the "STRING_HDDINFOUNKx" string labels.
  The extra slot added to some of the strings is to indicate whether the disk is MBR or GPT.

As attentive readers will notice, the code that "determines" whether the disk is either MBR or GPT
is of course just temporary: it's just a placeholder code that should currently just show "MBR".

Having the NoMbr flag mostly signifies that the disk is uninitialized. A GPT disk also has a MBR
but it's for "backcompatibility" / "protective" reasons (so that MBR-only tools would see the disk
as just a big 1-partitioned only disk with which they could barely do anything). A real involved test
for the nature of the disk should involve calling the correct IOCTLs in the disk detection code in partlist.c .
This is for the future (and when ReactOS will better support GPT disks).

svn path=/branches/setup_improvements/; revision=74614
svn path=/branches/setup_improvements/; revision=74615
2018-10-24 00:35:53 +02:00
Hermès Bélusca-Maïto 38e20b638f
[USETUP] Massage the USETUP interface code.
- The "intro" page is renamed into the "Welcome" page, because its corresponding resource indeed is the welcome screen;
- Because the "setup start" page can only be displayed once, move it out of the while-loop, and use its result as the initial value of the 'Page' variable.
- Remove unneeded _PAGE_NUMBER_DEFINED guards;
- Add a DPRINT in the RepairUpdateFlag case of RegistryPage() (because we don't implement yet a correct upgrading or repairing of the registry).
- In InstallIntroPage(), display the page itself only if needed (i.e. after all the validation checks & repair/update or unattended checks are done). Similar modifications are done also in DeviceSettingsPage(), SelectPartitionPage()
- Turn both CheckUnattendedSetup() and UpdateKBLayout() into static functions.
- Fix the code of ScsiControllerPage() so that it can be compiled if needed, and add a dummy OemDriverPage().

svn path=/branches/setup_improvements/; revision=74575
2018-10-24 00:35:52 +02:00
Bișoc George 0e41230dac [USETUP] Fix a broken character in Italian resource (#968)
Also add two spaces at the beginning of the "deleting cache" string.
2018-10-23 17:41:38 +02:00
Arnav Bhatt 05c2e3e89e [USETUP][EXPLORER] ReactOS explorer translation and hindi font substitution. (#954) 2018-10-19 17:03:17 +02:00
Hermès Bélusca-Maïto bd9fa3d701
[USETUP] Add a couple of missing TrimTrailingPathSeparators_UStr() calls.
Fixes in particular a regression brought by 57402ee (thanks George Bisoc
for having noticed this), where the BTRFS bootsector code could not be
installed anymore.

CORE-15192
2018-10-18 23:11:58 +02:00
Hermès Bélusca-Maïto a28461124b
[SETUPLIB][USETUP] Minor code refactoring, consisting in renaming the "ntos boot loader" stuff into "boot store", since this happens to be functionality that is a bit more general than previously thought.
- Fix the usage of the BootEntry's "Version" member.
- Don't surround with too many quotation marks the "friendly" boot entry name in AddBootStoreEntry().

svn path=/branches/setup_improvements/; revision=74964
2018-10-14 23:46:52 +02:00
Hermès Bélusca-Maïto e589513b46
[USETUP] As evoked in 27603a10 (r74943), adapt the code in bootsup.c to abstract the manipulation of freeldr.ini and boot.ini, and make it use the new features of bldrsup.c committed in 27603a10 (r74952).
In particular the helper functions CreateCommonFreeLdrSections() and (Un)protectBootIni() are now removed from there (they are used in bldrsup.c only).
This should pave the way for future integration with other sorts of NT boot loaders (BootMgr and (u)EFI boot loader).

svn path=/branches/setup_improvements/; revision=74954
2018-10-14 23:45:45 +02:00
Hermès Bélusca-Maïto 57402ee91e
[USETUP] Diverse fixes for path handling.
- Convert almost all swprintf() into StringCchPrintfW() and wcscpy() into StringCchCopyW();
- Explicitly add a trailing path separator to the "\Device\HarddiskX\PartitionY(\)" paths
  when they refer to FS directories (and not to partition objects);
- Remove useless (and half-buggy) "Remove trailing backslash" code.

With that, it is possible to install ReactOS in e.g. C:\ReactOS (as usual), C:\ReactOS\dir1\dir2 (as many dirs as you wish), and also in C:\ (yes yes!).
But in that latter case, a strange bug related to the registry arises...

Additionally:
- Adjust some comments;
- Add some debugging DPRINTs;
- The SetInstallPathValue() is part of the big hack I've mentioned in f51faa4a (r74709).

svn path=/branches/setup_improvements/; revision=74717
2018-10-14 23:22:55 +02:00
Hermès Bélusca-Maïto 3cb1392eff
[USETUP] When installing new FreeLDR entries for recognized DOS/OS-2 boot loaders, use distinct OS section names. Also, add detection for the Dell Real-Mode Kernel OS (DRMK).
svn path=/branches/setup_improvements/; revision=74932
2018-10-14 21:15:55 +02:00
Hermès Bélusca-Maïto 387e79c92e
[USETUP] Condense the different InstallFatXYBootSectorToDisk & ToFile functions into a InstallFatXYBootSector() function that is called by both the ToDisk and ToFile flavours.
Also, trim any potential trailing path separator from the NT disk partition path before opening the partition object itself for read/write access.

svn path=/branches/setup_improvements/; revision=74715
2018-10-14 21:15:34 +02:00
Hermès Bélusca-Maïto f13a379153
[USETUP] Move some functions around, but no functional code changes otherwise.
svn path=/branches/setup_improvements/; revision=74714
2018-10-14 21:14:31 +02:00
Pierre Schweitzer 6a2e979f55
[USETUP] Add missing line jump 2018-10-02 13:34:59 +02:00
Hermès Bélusca-Maïto e29457aadd
[USETUP] Remove a hardcoded value. 2018-09-29 21:54:48 +02:00
Stanislav Motylkov 13310b3acf [USETUP] Make countdown progress bar smoother 2018-09-14 11:33:50 +02:00
Stanislav Motylkov b0ecee7b6e [USETUP] Update Russian translation 2018-09-14 11:33:50 +02:00
Katayama Hirofumi MZ 31019e8c0c [TRANSLATION] Update Romanian translation (#851)
Translation from Stefan Fulea.
CORE-15023
2018-09-14 11:04:36 +02:00
Paweł Cholewa 8b37182613 [TRANSLATION] Updated Polish translation in USETUP (#848) 2018-09-09 22:28:02 +02:00
Bișoc George 402ea59af6 [USETUP] Italian translation update 2018-09-09 22:26:39 +02:00
Bișoc George c1bf18bada [USETUP] Romanian translation update 2018-09-09 22:26:39 +02:00
Hermès Bélusca-Maïto 320e0d01ae
[USETUP] Update French translation. 2018-09-09 17:24:38 +02:00
Bișoc George e5c0bfacf1
[USETUP] Implement the shutdown timeout progress bar. (#833)
- Add the MUI ID resource.
- Implement the shutdown timeout progress bar function and the TimeOut string handler.
- Add the resource string to other resource languages.
2018-09-09 17:17:16 +02:00
Katayama Hirofumi MZ 56583f3069 [FONT][SETUP] Add 'Tms Rmn' and 'Times' font substitutes (#830)
Add "Tms Rmn" and "Times" font substitutes (same as "Times New Roman"). Windows has these substitutes, hence we also need those to remain compatible.
2018-08-30 13:07:22 +02:00
Katayama Hirofumi MZ b0a1cb52be [TCPSVCS] Remove hardcoded C drive letter (#800)
CORE-13228, CORE-13235

For USETUP, add a comment about why the code uses it when adding a boot-sector boot entry to NTLDR. CORE-13226
2018-08-28 12:45:03 +02:00
Hermès Bélusca-Maïto cdb9f03236
[USETUP] Progress-bar: minor improvements.
- Simplify the usage of the PUPDATE_PROGRESS callback.

- Add the possibility of specifying an initial non-zero StepCount when
  creating the progress-bar (using the -Ex version), so that it can be
  initially drawn with the expected initial count.
  Of course ProgressSetStepCount() can continue to be used.
2018-08-27 23:55:58 +02:00
Hermès Bélusca-Maïto 6241a16f41
[USETUP] Implement a basic console 'input queue' and implement PeekConsoleInput() and CONSOLE_ConInKeyPeek() around it. 2018-08-27 00:28:08 +02:00
Hermès Bélusca-Maïto e9ba3a8ebc
[USETUP] Progress-bar: Add support for displaying a custom progress text. 2018-08-26 20:41:57 +02:00
Hermès Bélusca-Maïto 3a33de0fb1
[USETUP] Progress-bar: Code formatting, add annotations, don't use floats. 2018-08-26 20:41:56 +02:00
Hermès Bélusca-Maïto 914769a14a
[USETUP] DrawProgressBar(): Draw the progress bar borders first, then draw its contents. 2018-08-26 20:41:49 +02:00
Baruch Rutman 8a407b5c60 [FONTS] Update Hebrew font subtitutions (#795)
Updated the font substitutions to use the new Hebrew glyphs in the updated Tahoma font.
Also added substitution for the Ubuntu font to make the Lautus and Modern themes legible with Hebrew UI elements.

Follow up to PR #789 and #790 ; CORE-14880, CORE-14943
2018-08-21 17:21:21 +02:00
Bișoc George ee6bc66318 [USETUP] Implement CreateProgressBarEx() (#791)
Improve the progress bar functions:
- Add a member in the struct, which will be used as a bar colour parameter for the new CreateProgressBarEx().
- CreateProgressBar() which will now invoke the Ex variant without the additional parameter.
2018-08-21 15:49:54 +02:00
Victor Perevertkin 07bc92f740 [USETUP][SETUPLIB] Added support for formatting partition in BTRFS and installing ReactOS on it.
Removed code related to EXT2 boot sector for now.
CORE-13769
2018-08-20 08:26:56 +02:00
Andrea Crescentini d303b70b7a [TRANSLATION] Improving italian translation (#623)
- Improved Italian translation for USETUP, WELCOME, REACTOS, EXPLORER.
- Completed translation in SYSSETUP.
- Correct some characters encoding and text alignment in USETUP.
2018-06-21 14:03:35 +02:00
Bișoc George b8036ea176 [USETUP] Some changes to address the recent review 2018-06-16 22:28:53 +02:00
Bișoc George 682ac75ecd [USETUP] Italian translation update 2018-06-16 22:28:53 +02:00
Adam Słaboń 565ce5e827 [TRANSLATION] Polish translation update (#611)
Polish translation update for MODE, USETUP and SHELL32.
2018-06-12 15:51:37 +02:00
Bișoc George 03b7e13df5 [USETUP] Display the ReactOS release status (#608)
Update the introduction page with a more up-to-date exposition of the current status of ReactOS.
2018-06-11 22:53:57 +02:00
Hermès Bélusca-Maïto 6f185c5fe2
[USETUP] Use correct flags for the NtCreateFile call that creates new file directories.
DIRECTORY_ALL_ACCESS is not the correct flag, because it is used with the NtCreateDirectoryObject API
that creates virtual "directories" in the NT object namespace; that's not our purpose here.

svn path=/branches/setup_improvements/; revision=74716
2018-06-03 22:12:46 +02:00
Hermès Bélusca-Maïto cacae6d9a0
[SETUPLIB][USETUP] Diverse additions.
- Use NT string safe functions.
- Add support for other bootloaders;
- Update a couple of comments;
- Remove deprecated __REACTOS__ #ifdefs.

svn path=/branches/setup_improvements/; revision=74713
2018-06-03 22:12:45 +02:00