* Add ARM64 build configurations to projects
* StartMenu: add ARM64 support
* Add support for IAT hooking on ARM64
* Add ARM64 support to Classic IE
* Add ARM64 support to installer
NB: WiX 3.14.0.3910 or higher is required to create the MSI
* Revert whitespace change
* Separate x86/x64 and ARM64 installers
* Change suffix of ARM64 binaries
* Put also ARM64 MSI to final installer
* Fix sln
* Build some DLLs as ARM64X
These are meant to be loaded to both x64 and ARM64 processes.
We will compile them as ARM64X (when building for ARM64).
That way they will contain both x64 and ARM64 code paths.
https://learn.microsoft.com/en-us/windows/arm/arm64x-pe
* Make sure x64 installer cannot be installed on ARM64
In case if somebody manually tries to install x64 MSI on ARM64.
This is not supported/working scenario.
---------
Co-authored-by: ge0rdi <ge0rdi@users.noreply.github.com>
It seems that secondary taskbars handle try button positioning
correctly. So there is no need for this workaround.
Original change was introduced in 674a486 due to #1232 issue.
Windows 11 22H2 introduced new touch-optimized taskbar for devices with
touch screen.
It seems that in this mode taskbar window size is bigger than actual
taskbar on screen. There is region defined for the window that covers
actually displayed portion of the window.
We should account for that region (if present) when obtaining taskbar
window dimensions.
More info about how to enable/disable touch taskbar:
https://www.elevenforum.com/t/turn-on-or-off-tablet-optimized-taskbar-in-windows-11.5133/
It may happen that during `InitStartMenuDLL` execution some component
posts a message that is then intercepted by (still active) `HookInject`
that will call `InitStartMenuDLL` again (and everything will repeat).
To prevent such endless recursion during initialization, we will make
sure that `InitStartMenuDLL` will be executed just once.
The setting was improperly named and evoked that custom button should be
"moved" to the corner of screen even for center aligned taskbar on Windows 11.
What the setting does (and always did) is to align button to the edge of
taskbar (e.g. bottom edge in case of bottom taskbar) instead of centering it.
Hopefully it will be now more clear.
Commit be8568c that introduced option to disable "See more results" also
changed behavior of "Searching..." item that indicates search in progress.
We will now make sure that the search progress indicator is displayed
always. No matter of options.
Menu offsets were previously applied to s_MainMenuLimits.
Though when deciding where to put start menu (CalculateCorner) we are
now taking into account also position of start button (as since Win11 it
may not be in corner of the screen).
This broke negative menu offsets.
We will fix it by applying menu offsets in CalculateCorner as a last
step once we have determined start menu position.
This should make even more sense than previous approach.
Shift Aero button slightly when it is positioned in corner of any
monitor (not just primary one).
Moreover this shift should be done only for top/bottom taskbar.
Original fix introduced in 528d15 was not correct.
The problem is that `SystemParametersInfo` uses DPI that current session
started with.
We should use `SystemParametersInfoForDpi` (available since Win10 1607)
that returns properly scaled font size.
Fixes#1110
If skin doesn't specify font to be used (such as `Classic Skin`) we will
use default system font (used for menus).
But we didn't scale the font size according to DPI.
This commit will fix that.
Fixes#1110
Windows 11 Insider builds started to register global shell hotkey for
Win key (and Ctrl+Esc) that are used to trigger start menu.
The problem is that it is not (easily) possible to intercept messages
about these hotkeys.
Thus we will unregister them during init and install hook that will
prevent their further registration.
Fixes#1165
Windows updates are applied on shutdown/reboot no matter of flags used
in ExitWindowsEx (or InitiateShutdown).
Windows start menu shutdown code handles updates in special way.
If there are updates prepared and shutdown/reboot is selected it will
use `UpdateSessionOrchestrator` object to dismiss updates and carry out
the command.
We will now do similar thing.
Fixes#1250
Shutdown privilege can be removed from users (in Local Security Policy settings).
This will remove it also from limited admin.
Thus admin will be unable to shutdown machine (because Explorer runs as
limited admin by default).
In such case we will attempt to do silent elevation and proceed with
shutdown using `SystemSettingsAdminFlows.exe` helper.
Fixes#1015
Windows start menu uses it that way too.
ExitWindowsEx is also annotated as legacy API in SDK.
We will also put shutdown handling into separate function, so that we
have it handled at one place (will make further changes easier).