Commit Graph

577 Commits

Author SHA1 Message Date
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
Joann Mõndresku
331bcae7b7 [TASKMGR][TRANSLATION] Estonian localization 2018-10-24 21:35:20 +02:00
Katayama Hirofumi MZ
efbebf983c [REGEDIT] Improve the layout of controls (#967)
The horizontal scroll bar of the listview was wrongly hidden.
CORE-15187
2018-10-24 18:19:48 +09:00
Katayama Hirofumi MZ
e4c2cff6c8 [REGEDIT] Don't paint background in WM_PAINT (#970)
Use the background brush or WM_ERASEBKGND message instead. There was graphical glidge. CORE-15187
2018-10-24 18:17:28 +09: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
043a024d61 [USETUP] Small formatting changes + two functions turned into FORCEINLINE.
Based on:
svn path=/branches/setup_improvements/; revision=74616
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
Katayama Hirofumi MZ
7d7f1d4ca3 [NET] Fix an escape sequence in Polish translation (#966) 2018-10-23 13:10:38 +02:00
Katayama Hirofumi MZ
125db5ead9 [REGEDIT] Trivial resizing code fix 2018-10-21 13:08:26 +02:00
Katayama Hirofumi MZ
b3231e0bf5 [REGEDIT] Code formatting 2018-10-21 13:07:43 +02:00
Pierre Schweitzer
3849426432 [CHKDSK] Fix MSVC build (thanks for spotting the mistake!)
Addendum to ec9fc7f
2018-10-21 11:22:45 +02:00
Pierre Schweitzer
ec9fc7fade [CHKDSK] Add French translation 2018-10-21 11:06:06 +02:00
Joann Mõndresku
b5bae2e98d [RAPPS][TRANSLATION] Estonian localization (#959) 2018-10-21 01:58:02 +02:00
Stanislav Motylkov
dd8766e67a [CHKDSK] Add russian translation 2018-10-20 23:29:15 +02:00
Adam Słaboń
7abc8be102 [TRANSLATION] Polish translation update
Polish translation of net, telnet, diskpart, devcpux, fontext, iernonce, lsasrv, themes, arping, frag, screensavers, ctm, fontsub, WinetestsGUI and localmon.
Update for dxdiag, msgina, msports, netcfgx, shell32 and syssetup.
2018-10-20 21:26:07 +02:00
Bișoc George
8e48f8f2dd [CHKDSK] Implement localization support (#891)
- Make the strings translatable.
- Include the English translation within the main resource file.
- Use ConResPrintf() and ConResPuts() for resource strings.
2018-10-20 21:21:51 +02:00
Arnav Bhatt
b9deba9a56 [NOTEPAD] ReactOS Notepad Hindi Translation (#938) 2018-10-20 19:41:32 +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
c2f7758e96 [SETUPLIB] Adapt the code in osdetect.c to make it use the new features of bldrsup.c committed in 27603a10 (r74952).
svn path=/branches/setup_improvements/; revision=74953
2018-10-14 23:37:44 +02:00
Hermès Bélusca-Maïto
27603a101c [SETUPLIB] Introduce a lot of (Work in progress) functions to manipulate boot entries from different boot "stores".
This concerns so far, only freeldr.ini and to an extent, boot.ini, but planning in the future to add support for registry-oriented BCD
as well as possibly direct (u)EFI entries, using the corresponding NT functions.
This code is so far only used in osdetect.c, but will be soon used by usetup's bootsup.c (note that some helper functions: CreateCommonFreeLdrSections()
and (Un)protectBootIni() are already taken from it and used in bldrsup.c).
- In EnumerateNTOSBootEntries(), continue enumerating the boot entries until the user callback returns an status code that is not successful.
- Remove some old code from osdetect.c; use directly BootEntry->FriendlyName when building the display names of the available installations, since now
  BootEntry->FriendlyName is a PCWSTR (and not a UNICODE_STRING anymore).

svn path=/branches/setup_improvements/; revision=74943

[SETUPLIB] Make the NTOS_BOOT_ENTRY structure more generic, so that it can wrap around either actual NTOS boot entry options, or FreeLdr-like boot-sector options.

In a sense, the NTOS_BOOT_ENTRY structure now looks much more like the NT structure "BOOT_ENTRY".
- Adapt the code in bldrsup.c to these modifications, and re-enable FreeLdr-like boot-sector-file support code that was commented out.
More code cleanup will follow later.

svn path=/branches/setup_improvements/; revision=74952
2018-10-14 23:27:17 +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
Hermès Bélusca-Maïto
8d78897384 [USERINIT] Enhancements for starting ReactOS GUI installer or Explorer shell.
- Transform TryToStartShell() into a StartProcess() function whose aim
  is just to start processes, since there is no extra initialization needed
  for starting a shell process.

- Modify StartInstaller() to call StartProcess() for starting the ReactOS GUI
  installer found on the installation media, from a path automatically expanded
  depending on the ambient CPU architecture.

svn path=/branches/setup_improvements/; revision=75331
2018-10-08 21:16:46 +02:00
Hermès Bélusca-Maïto
5b14b6f581 [WELCOME] Minor usage improvements.
- Don't hardcode the installer file name in ExpandInstallerPath() but
  provide it from a parameter. Return TRUE/FALSE if the installer file
  is/is not found.

- Expand any environment string present in the items command line.

- Enable/disable the menu buttons depending on whether or not an
  associated command is present.

- Enable mirroring from resources.
2018-10-08 21:00:14 +02:00
Hermès Bélusca-Maïto
a0dae6094e [WELCOME] Reduce Welcome's SUBSYSTEM requirements to WinNT 4 for x86 builds only, so that we can still show something in old NT OSes. 2018-10-08 21:00:14 +02:00
Hermès Bélusca-Maïto
55f9fee412 [WELCOME] Automatically expands the path to the ReactOS installer executable found on the installation media, depending on the ambient CPU architecture.
svn path=/branches/setup_improvements/; revision=75330
2018-10-08 21:00:10 +02:00
Eric Kohl
9159190039 [SERVICES] Ignore the case when we compare account names 2018-10-05 12:04:21 +02:00
Eric Kohl
1820aa8fe6 [SERVICES] Revert f6d81f22 because it breaks the advapi32 LockServiceDatabase test. 2018-10-05 09:41:50 +02:00
Eric Kohl
f6d81f2257 [SERVICES] Fix timeout when a service is stopped
RSetServiceStatus: Send the stop command for the dispatcher thread from a separate thread.

Fixes CORE-15064
2018-10-05 08:41:23 +02:00
Pierre Schweitzer
6a2e979f55 [USETUP] Add missing line jump 2018-10-02 13:34:59 +02:00
Amine Khaldi
19eb7a62f9 [XCOPY] Sync with Wine Staging 3.17. CORE-15127 2018-10-01 00:16:20 +01:00
Amine Khaldi
5a217e3a6f [WMIC] Sync with Wine Staging 3.17. CORE-15127 2018-10-01 00:15:34 +01:00
Amine Khaldi
cb0f46bddf [TASKKILL] Sync with Wine Staging 3.17. CORE-15127 2018-10-01 00:14:52 +01:00
Amine Khaldi
5260a37425 [REG] Sync with Wine Staging 3.17. CORE-15127 2018-10-01 00:13:56 +01:00
Amine Khaldi
fd8ec79fd1 [CSCRIPT][WSCRIPT] Sync with Wine Staging 3.17. CORE-15127 2018-10-01 00:11:58 +01:00
Hermès Bélusca-Maïto
e29457aadd [USETUP] Remove a hardcoded value. 2018-09-29 21:54:48 +02:00
Eric Kohl
8f939e057c [SERVICES] Control set code clean-up
- Flush the new control set after the control set has been created.
- Make sure that we create a new control set only on the first boot after setup.
- Move the control set copy code to a separate function.
- Get rid of the global control set values.
2018-09-29 01:31:58 +02:00