For some reason on Vista x64 0xdeadbeef isn't detected as an invalid handle and the whole thing crashes. INVALID_HANDLE_VALUE on the other hand is detected as an invalid handle, so use that.
Both Efektler and Etkiler are correct Turkish words for "effects",
but they are used in different contexts.
- Efektler: Refers to special effects in media, movies, or sound
(visual effects, sound effects).
- Etkiler: Refers to consequences, results, impacts, or influences
(side effects, positive/negative impacts).
The former is more correct here, as desk.cpl changes visual effects.
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
- Harmonize, fix cut off text, make more space for it
- Shrink trackbar width where it's necessary (et-EE, hu-HU, tr-TR)
- Align "Less" to the right using RTEXT
- Align current resolution using CTEXT - same as SS_CENTER, but shorter
- Fix broken Y-position in Portuguese (pt-PT) translation
- Shorten words in Greek (el-GR) translation
This fixes a bug noticed during ARM64 bringup where DHCP never completed. In dhcpoffer, `stop_selecting` is declared int (32-bit) but assigned two time_t operands of 64-bit.
The truncated value breaks the timeout, leaving DHCP stuck in S_SELECTING. This is masked on AMD64 because the RTC is implemented there and `time()` returns values that fit in 32 bits. On ARM64 the RTC isn't implemented yet, exposing the truncation.
CORE-18200
Inspired by PoC test code by Aliaksandr in CORE-20535.
These tests are passing on Windows.
Co-authored-by: Aliaksandr Lebiadzevich <bsalex2025@gmail.com>
CORE-19691
Removing the `livecd_start.cmd` entry also caused the "Profiles/Default User/My Documents"
directory to not be created in the LiveImage. When booting it, this
caused explorer.exe to hang while loading the desktop, for **some**
(but not all) non-english environments.
(Technically it should instead ignore the non-existing directory if it
cannot create or open it, or drop an error then continue execution...
But that's another bug for another time!)
Adding back the creation of this directory fixes the hang.
CORE-15156, CORE-19691, CORE-19692
Finally get rid of the livecd_start.cmd hack introduced waaaay back
in commit ff6d7b0236 (r54514)!
See also commits ea682b6909 (r54512) and 71867403fd (r54513).
For target paths, use the shell "special shell folder" syntax:
`shell:windows\...` or `shell:system\...`, introduced in commit
7b081be46d (PR #7158) by Whindmar Saksit.
Specify an explicit icon path and index for the "Read Me.lnk" shortcut.
Includes ideas from PR #7154 by Katayama Hirofumi MZ.
The generated shell links are confirmed to work on ReactOS, but also on
Windows 2003 and Windows 7.
- Change the MKSHELLLINK icon parameter syntax to be: `-i [icon_path[,nr]]`
where, either both `icon_path` and icon index are given, separated by
a comma ',' , or, either the `icon_path` is given but the index is
optional (default: 0), or, only the icon index is given, in which case
the icon path is set to the target instead.
- Use a `VERBATIM` command-line for `add_custom_command()`, so that *nix
builds can cope with parameters containing backslashes.
- The shortcut target path, working directory, command-line arguments,
and icon path all may specify explicit Win32 environment variables
(like `%SystemRoot%`, `%HOMEDRIVE%`, etc.). Because these environment
variables are specified as data given to the build tool via CMake,
**AND** we have to workaround keeping these variables unexpanded when
they are transmitted to the tool via CMD.EXE (on builds made on Windows),
specify these variables in an "escaped" format, using `^%` instead:
`^%SystemRoot^%`, etc.
Additionally these paths may be explicitly quoted and passed that way
to the MKSHELLLINK tool.
In order to deal with both unquoting the strings and unescaping the
environment variables, introduce a helper function and invoke them on
the aforementioned strings.
CORE-15156, CORE-19691, CORE-19692
- When specifying a "special shell folder" in the shortcut target,
e.g.: `shell:windows\system32\cmd.exe` , or: `shell:system\cmd.exe`,
resolve it using a ReactOS-specific path, but also use a version
using unexpanded environment variables: for both examples,
`%SystemRoot%\system32\cmd.exe`
- Whenever the shortcut target or the icon path contains unexpanded
environment variables, add associated `EXP_SZ_LINK` data blocks.
- Use the previously-introduced ANSI-to-UTF16 `my_mbstowcs()` routine
to convert the ANSI strings to Unicode for the `EXP_SZ_LINK` data blocks.
Support the creation of shortcuts that can use Unicode versions of
their name (description), relative path, working directory, command-
line arguments, and icon location.
This option can be selected at runtime with a switch.
Additionally:
- Ensure that `wchar_t` is 16-bit wide.
- Introduce and use a "poor-man" ANSI-to-UTF16LE `my_mbstowcs()` routine
to convert the ANSI strings, for the Unicode scenario mentioned above.
We cannot use the host mbstowcs() routine, since on *nix systems the
iconv library being used may have been compiled with a 32-bit `wchar_t`
(even if the tool is compiled with: `-fshort-wchar -fwide-exec-charset=UTF-16LE`),
as this is the case with the GitHub actions build bots.
Addendum to commit 7b081be46d (PR #7158).
CORE-15156, CORE-19691, CORE-19692
Since commit 7b081be46d (PR #7158), one can create shell links that
point to a file in a subdirectory of SystemRoot (e.g. X:\reactos) or
SystemRoot\system32 using a shell "special shell folder" syntax, for
example:
`shell:windows\Readme.txt` (--> X:\reactos\Readme.txt) ,
`shell:windows\system32\cmd.exe` , or:
`shell:system\cmd.exe` (--> X:\reactos\system32\cmd.exe) .
An `EXP_SPECIAL_FOLDER` data block allows parts of a shortcuts pidl
to be overridden by such a special folder.
- In these cases, try to build the shortcut pidl such that it faithfully
mirrors the intended path. For example, when using `shell:system\cmd.exe`,
resolve the `shell:system` part to `X:\reactos\system32` instead of
just `X:\reactos` ; this helps understanding what happens when
spelunking into such a shell link. This also helps when converting
such a path to one containing unexpanded environment variables, for
the purposes of making the Windows explorer shell show the correct
shortcut target path, or resolve it independently of the SystemRoot
being used; and, to be able to use the path for the shortcut icon.
- Get rid of the `index`/`specialindex` variables.
These were used for making the `EXP_SPECIAL_FOLDER` data block point
to the correct path suffix part that follows the special path prefix
in the ID list.
Hardcoding its value caused problems when the special path prefix is
made to contain more path elements than just "X:\reactos". For example,
"X:\reactos\system32" in the case of the `shell:system` prefix.
Instead, retrieve the length of the special path prefix, then, compare
it with the length of the path elements being parsed in the loop.
----
This problem was made explicit when the the following code path is run:
```
shell32!CShellLink.cpp:CShellLink::Load(IStream *stm)
--> ILCombine(folder, m_pPidl + pSpecial->cbOffset)
```
- Use the `bool` type from `stdbool.h`
- Update "Specification" URL, using instead the
"[MS-SHLLINK]: Shell Link (.LNK) Binary File Format"
- Document which structures in `undocshell.h` correspond to those
in MKSHELLLINK.
- Add `SLDF_*` constants from PSDK `shlobj.h` for consumption, and
alias the tool-specific `LINK_*` ones to these.
- The first member of the `LNK_HEADER`/`SHELL_LINK_HEADER` structure
is not a signature, but its size.
Fix the `FILETIME` fields ordering. The `IconIndex` member is signed.
The `HotKey` member is a 16-bits value.
- The third member of the `ID_LIST_GUID`/`tagGUIDStruct` structure is
not "dummy", but is a sort-order. Add also some known corresponding
values, and unhardcode the value used in the code.
- Make the `is_path_separator()` return a `bool`, and use the helper
more thoroughly in the code.
- Improve the help/usage text shown by the tool.
- In case an invalid/unknown argument is encountered, set the `bHelp`
flag just after showing the error, so as to display the tool usage
and bail out early.
- Improve/clarify some code comments.
- Update the file header notice.
- Use variables to define and hold the on-disk shortcuts destination
directories (the "Profiles/All Users/..."), and use these variables
in the `add_livecd_shortcut()` calls; this allows shortening the
corresponding lines.
- There are currently two shortcuts: "Command Prompt" and "ReactOS
Explorer", that are added to more than one destination.
Previously, we had to invoke `add_livecd_shortcut()` for each
destination. However, each invocation recreated the _**same**_
shortcut file (with the same .lnk file name) in the build directory.
To solve this, the `dest` parameter of the `add_livecd_shortcut()`
function, is replaced by a `DESTINATION` keyword, whose value is
a list of one or more destination directories, where the shortcut
should be added.
CMakeLists.txt: `add_livecd_shortcut()`:
Turn the macro into a function. Instead of keeping a `LIVECD_SHORTCUTS`
global-scope list variable, just define a `livecd_links` custom target
as initially empty, then, using `set_property()`, directly append to it
its "SOURCES" i.e. generated .lnk files.
(This is equivalent to using `target_sources(livecd_links PRIVATE ...)`
only in CMake 3.20+ for the custom target.)
CMakeMacros.cmake: `add_link()`:
- Since both `name` and `path` parameters are mandatory, make them
explicit in the function declaration instead of defining them as
"optional" parameters.
- Remove the `set_source_files_properties(... PROPERTIES GENERATED TRUE)`
invocation that followed the `add_custom_command(...)` call, since,
per the documentation[^1],
"Each output file will be marked with the `GENERATED` source file
property automatically." (Since CMake 3.2 at least.)
[^1]: https://cmake.org/cmake/help/v3.17/command/add_custom_command.html
Default Node.js version will be changed from 20 to 22 and Node.js 20 will be removed from runner images: https://github.com/actions/runner-images/issues/14029
> This change will be rolled out beginning May 19, 2026 and will complete by May 26, 2026.
- actions/cache: v4 to v5.
- actions/upload-artifact: v5 to v7
- Remove hardcoded FONT resource attributes (fallback to defaults).
- Unify per-language CAPTIONs of wizard pages.
- Unify the Welcome page title control sizes with those of
the Finish page and what's used in the 1st-stage GUI setup.
Unify these also across translations.
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.
This is needed to prevent compile errors, when _INC_WINDOWS is defined.
So far WIN32_LEAN_AND_MEAN is wrongly defined by some idl generated headers.
In VS with native headers similar issues exist.
Give a bit more time to succeed.
- Remove a remnant assignment.
- Check the interesting variable itself and as late as possible.
Follow-up to 0.4.16-dev-1610-g 4f61d2ea04 (#8282).
lld can leave the PE checksum field zero for reproducible output. This is acceptable for user-mode images, but Windows rejects kernel-mode images without a valid checksum.
Keep preserving linker-produced zero checksums for other images, but force checksum recalculation when pefixup is operating on a kernel-mode image.
This was found while validating Clang-built amd64 kmtest drivers against Windows 7: the same driver source built with GCC loaded, while the Clang/lld-built .sys failed with ERROR_BAD_EXE_FORMAT / 0xC1. Recalculating the PE checksum made the Clang-built driver load and the tests run correctly.
- Retrieve the INetCfgComponentNotifyBinding, INetCfgComponentNotifyGlobal and
INetCfgComponentUpperEdge interfaces from notify objects.
- If implemented by a notify object, call
INetCfgComponentNotifyGlobal::GetSupportedNotifications right after the initialization
of a notify object.
Housekeeping only. Remove reference to 'winfile' from WINESYNC.txt.
This was removed from the ReactOS tree in 2023 by Victor Perevertkin.
Reference commit: https://github.com/reactos/reactos/commit/b82353c.
Somewhat help to read and interpret output, as the program is.
- Always output locale with 4 digits
- Always output PART items as s%02d:i%u
- Improve handling module/part errors
- Output string length too
as a hint that ''s are not actually empty.
CORE-18893