Due to resource compiler (windres)'s
bug, WS_TABSTOP style wasn't added
to IDC_CONFIRM_INSTALL checkbox
(I've confirmed WS_TABSTOP lackness
on reactos.exe with Resource Hacker
and RisohEditor). This PR will improve
keyboard usability.
JIRA issue: N/A
- Add WS_TABSTOP style to
IDC_CONFIRM_INSTALL checkbox
in IDD_SUMMARYPAGE resource
dialog.
Add also an Abort page that is displayed when the user cancels the
1st-stage setup, or when an error occurs and installation is aborted.
- Rewrite the text, change the layout;
- When the installer is started without any Win32 shell, or the
installation is running in unattended mode, the Finish/Abort
pages only offer to restart the computer with a 15-second timeout
countdown.
If the user has opened programs with interactive windows in the
meantime, the timeout countdown just pauses whenever the installer
window is de-activated/unfocused; it restarts when the window is
re-activated. (This currently doesn't work in ReactOS due to a bug
in the `WM_ACTIVATE` message delivery.)
If, on the contrary, the installer is started by the user when a
Win32 shell is running, the Finish/Abort page offers to either restart
the computer "now", or postpone the restart to later (when the user
manually restarts the computer); no reboot countdown is present there.
- Disable/hide the "Back" button for the Install processing page.
- In `SetWindowResTextW()` and `SetWindowResPrintfVW()`, don't assume a
fixed size of 256 characters max for the retrieved resource strings,
but allocate a suitably-sized buffer IF the resource string is longer
than the fixed buffer. (Use the fixed buffer only if the string is shorter.)
- Introduce two helpers `LoadAllocStringW()` and `FormatAllocStringWV()`,
based on existing code from `DisplayMessageV()`, and use these for
`DisplayMessageV()`, `SetWindowResTextW()`, and `SetWindowResPrintfVW()`.
- Add missing translations in the Hindi file for:
`IDD_UPDATEREPAIRPAGE` and `IDD_SUMMARYPAGE` dialogs,
and `IDS_INSTALLATION_*` and `IDS_PARTITION_*` strings.
Addendum to commit f5960cea70 (PR #951).
- Update some sentences in the `IDD_UPDATEREPAIRPAGE` dialog.
- Harmonize the length of the `IDD_DEVICEPAGE` dialog comboboxes
amongst all the translations.
CORE-9069, CORE-13525, RELEASE-11
This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.
Some details:
- The "hybridcd" build target is completely removed, since now the new
BootCD *is* basically what we used to call "hybridcd".
- The "livecd" build target is kept so far (to minimize the code changes),
but internally I start to refer to it as "LiveImage", and is reduced
to a minimum.
A minimal non-bootable "liveimg.iso" is built (but currently not
included within the BootCD). Its purpose will be to implement the
"ReactOS Live" functionality as a RAMDISK.
(We currently don't support other file formats apart from ISO and
flat disk for a RAMDISK).
The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
BootCD file tree the files from the LiveImage.
These files add two root directories, "Profiles" and "reactos"
(which is the SystemRoot for the non-ramdisk LiveImage).
- The minimal text-mode ReactOS installation used for the 1st-stage
installer, including USETUP itself, and the executable for the
1st-stage GUI installer and the reactos.cab (installation source),
are moved to the root directory called "i386" (ideally, one directory
per architecture).
- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
are left untouched, i.e. they are only constituted of the 1st-stage
text-mode installation only, but placed in a per-architecture root
directory ("i386", etc. as for the bootcd).
- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
available via the Advanced Boot Options F8 menu in Debug builds, for
testing purposes only, in a subsequent commit.
This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
...but wait until the partitions are actually updated on disk.
CORE-13525
DeletePartition() deletes partitions only in the virtual partitions list
in memory; the partitions still exist on the disk and are written only
later when committing all partition changes.
Thus, we do the same for file system volumes that lay on top of these
partitions being deleted: we move the linked VOLENTRY structures to a
list of "pending volumes to unmount", while they still actually stay
mounted on the system. Only when partition changes are about to be
committed to disk, the "pending volumes to unmount" list is processed
and the volumes actually unmounted, prior to modifying the partitions.
- [MSCONFIG] Update Traditional Chinese (zh-TW) translation
- [MSCONFIG_NEW] Update Traditional Chinese (zh-TW) translation
- [MSPAINT] Update Traditional Chinese (zh-TW) translation
- [NOTEPAD] Update Traditional Chinese (zh-TW) translation
- [RAPPS] Update Traditional Chinese (zh-TW) translation
- [SETUP:REACTOS] Update Traditional Chinese (zh-TW) translation
- [CPL:ACCESS] Update Traditional Chinese (zh-TW) translation
- [CPL:APPWIZ] Update Traditional Chinese (zh-TW) translation
Take into account documentation updates in b380d23d6f.
Change both of these from "Tahoma" to "Microsoft Sans Serif" for Latin Fonts only.
It is possible that other language types would benefit, but I am unable to test these.
CORE-15675 and CORE-15678 (Both Fixed.)
CORE-16435 (Improvements only. Not totally fixed.)
The setuplib DLL, used also by the text-mode USETUP, isn't placed in the
standard DLL search paths list. It isn't in the "current" directory nor
in the one where reactos.exe is, nor in the running OS' SystemRoot or
System32 directories.
The DLL is instead placed in the System32 sub-directory of the ReactOS
installation source. Note that this isn't a problem for USETUP, because
it is already started from that directory.
To control its loading, delay-load the DLL and use a delay-load hook,
following the technique explained in:
https://stackoverflow.com/a/75325443https://devblogs.microsoft.com/oldnewthing/20170126-00/?p=95265
The hook is also invoked in case of loading failure, showing a more
user-friendly hard-error popup and killing the installer, instead of
throwing a debugger exception.
Some partition entries (such as those added by the CreateInsertBlankRegion function) may not have their Volume member allocated. This fixes the USETUP crash when such partitions are handled.
Noticed by Katayama's comment from chat.reactos.org:
> Indonesian translation warning: base\setup\reactos\lang/id-ID(15): warning RC4206: title string too long; trunctated at 256
Fix problem by making the string length shorter, it's 245 chars now.
Addendum to 0.4.16-dev-862-g 7b5e004dd6.
Since the setuplib.dll isn't available after installing ReactOS, build
instead a static library that is then used for the dll, and linked into
the setuplib_unittest, so that it can be run in our test-suite.
Addendum to commit d7c1d220.
URLs are getting old. We have to
update URLs for documentation
purpose.
JIRA issue: CORE-19963
- Refresh old URLs.
- Add " (DEAD_LINK)" labels
to dead links.
- Use MS Learn links rather
than MSDN ones.
- Some dead links revived by
Web Archive.
- Don't change Wine Tests
and Wine Sync.
- Don't change 3rd party libraries.
- Don't append "redirected" labels.
- Update the page title and subtitle.
- Embolden the types of installation.
- Introduce title and subtitle for the upgrade/repair page
(not translated yet).
- Rewrite the introductory text.
- Add a temporary (ReactOS-Alpha) informational message.
- Hide the "Back" button when the Welcome page is active, and
show it back again when switching to the following ones.
Pressing Shift-F10 to open cmd.exe when the setup program runs from
a different current directory than System32, now works correctly.
Use the 2nd CreateProcessW() `lpCommandLine` parameter, instead of the
1st parameter `lpApplicationName`, so as to use default path search.
The command-line buffer given to the 2nd-parameter can be temporarily
modified by CreateProcessW(), thus use an on-stack buffer.
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw#parameters
CORE-13525
Notes:
- Most of the exported functions have been turned from default cdecl to explicit stdcall / "NTAPI".
- The two InitializeSetup() phases have been collapsed to make the initialization simpler.
Average reductions (percentages; see PR #7523 for actual numbers):
x86 Debug builds:
reactos.exe: 35.1%
smss.exe : 39.8%
Total (including setuplib.dll): 17.9%
x86 Release builds:
reactos.exe: 22.3%
smss.exe : 25.0%
Total (including setuplib.dll): 10.6%
x64 Debug builds:
reactos.exe: 40.6%
smss.exe : 41.6%
Total (including setuplib.dll): 20.0%
x64 Release builds:
reactos.exe: 22.8%
smss.exe : 22.3%
Total (including setuplib.dll): 10.1%
Fixes previous attempt at commit 0ca4e6dcf, which was reverted by commit
bbdcc14b1 because the partitioning checks mistook unpartitioned disks as
GPT.
Addendum to commit 99f0937fd.
The partition-creation checks are unified for these partitions into one
single function. To prepare for GPT support, the specifics are put into
a separate MBRPartitionCreateChecks() helper, called for MBR disks by the
upper-level function. GPT disks will have a similar helper in the future.
Addendum to commmit 99f0937fd.
The partition-creation checks are unified for these partitions into one
single function. To prepare for GPT support, the specifics are put into
a separate MBRPartitionCreateChecks() helper, called for MBR disks by the
upper-level function. GPT disks will have a similar helper in the future.
Refine the algorithm introduced in commit c560342f08 (r75667, r75676),
whereby the installation source path is based on the full image file path
of the installer program, and of the \SystemRoot symlink.
Also reverts commit 6f389a35db "Add a workaround for installing from USB drives"
CORE-17818
+ SAL2-annotate and add Doxygen comments.
----
In case the \SystemRoot full path prefixes the image file path,
use the resolved \SystemRoot as the installation source path.
Otherwise, use the image file path.
The \SystemRoot symlink target resolution needs full path reparsing,
because it can reference other symlinks. This is what happens, for
example when booting the installation from a removable hard-disk.
We can have:
\SystemRoot ---> \Device\Harddisk1\Partition1\ReactOS
and: \Device\Harddisk1\Partition1 ---> \Device\HarddiskVolume2
etc.
and we wish to resolve \SystemRoot to: \Device\HarddiskVolume2\ReactOS
instead of keeping the former version (using Harddisk1\Partition1).
We then verify whether it prefixes the image file path, which is
a fully reparsed path.
CORE-13525
This is done so that the caller doesn't need to know details
about particular architecture specifics, like VBR, MBR etc.
Extra checks and specific handling is also performed for supporting
bootloader installation on removable media:
- verify whether the media is a floppy or some other removable media,
- depending on which, a suitable file system is chosen,
- and if the media is not a floppy, do the supplemental partition
verifications to determine whether the media is a "super-floppy"
(in the partitioning sense).
This function could be generalized later to copy other files necessary
for the bootloader; removing also the currently hardcoded placement in
the installation source directory, and instead, using a configurable
path (specified in txtsetup.sif); etc.
Adapted from a commit by Timo Kreuzer (see PR #7420)
Co-Authored-By: Timo Kreuzer <timo.kreuzer@reactos.org>