Compare commits

...

41 Commits

Author SHA1 Message Date
Carl J. Bialorucki
22fb3bb2c1 [0.4.15][USBCCGP][USBPORT] USB stack improvements
[USBCCGP]
Ignore invalid devices
Group audio function interfaces together

[USBPORT]
Prevent infinite loop in USBPORT_OpenPipe when endpoint is not becoming ready

This is a backport of commit:
dba4efbcae [USBCCGP] [USBPORT] USB Stack improvements  (#7740)
2025-03-19 08:35:54 -06:00
Carl J. Bialorucki
4b28d889c4 [0.4.15][REGEDIT][COMCTL32][EXPLORER][SHELL32] Small bugfixes
CORE-20030, CORE-19970, CORE-13601, CORE-10386

This is a backport of the following commits:
e6302ccd70 [REGEDIT] Reduce flickering and fix rendering (#7747)
75c0dc0cd8 [EXPLORER][COMCTL32][SHELL32] Enable SPI_SETICONTITLELOGFONT (#7783)
b45debb93a [COMCTL32] Fix shift-selecting files not working as expected in small/large icons views (#7729)
c6b134123b [SHELL32] Initialize COM for PickIconDlg (#7788)
2025-03-19 00:44:51 -06:00
Carl J. Bialorucki
08c150be74 [0.4.15][SYSSETUP][BOOT][INBV][MSGINA][SDK] Update year to 2025 and set theme using unattend.inf
CORE-19496

All wallpapers that are not in bitmap format will not work on LiveCD. LiveCD has a read-only file system and to apply non bitmap files as wallpapers, we convert them to bitmap when selected as a temporary file. Therefore, only copy non-bitmap wallpapers to BootCD, not LiveCD. Also minor fix to README in the wallpapers folder.

This commit includes:
- Partial revert of dc1a4ae9ce [0.4.15][SYSSETUP][BOOT][WALLPAPERS] Set default theme to Mizu and add wallpapers
- 2e47094764 [SYSSETUP] Apply theming from unattend files very early on when booting the LiveCD or a new install (#7797)
ebdb7b3e4d A problem has been detected and ReactOS has been shut down to prevent damage to your time machine warp core.
- 4bc97ad145 [BOOTDATA] Arabic, Hong Kong, Singapore, come back! (#7795)
2025-03-18 23:32:47 -06:00
Carl J. Bialorucki
dc1a4ae9ce [0.4.15][SYSSETUP][BOOT][WALLPAPERS] Set default theme to Mizu and add wallpapers
As decided by an official meeting vote on Mattermost, set the default theme and desktop wallpaper to Mizu.

In this commit, I also added the 16:9 variants of every wallpaper in our standard wallpaper pack that had a resolution of 1920x1080 or better. For most wallpapers, we don't need a 4:3 variant because we have a "Fill" placement option that will scale the wallpaper up to the desired height and cut off the edges. Unfortunately, the Mizu wallpaper is one that doesn't work well with this method. Wallpapers without text branding were preferred over text branded wallpapers. Also, add a fix for the Mizu start button so that it looks acceptable with large taskbar.

Limitations:
- Since we can only display bitmap (.bmp) images on the desktop, convert the 4:3 and 16:9 variants of the Mizu wallpaper to bitmap files.
- Since ReactOS will default to a 4:3 aspect ratio without changing the resolution, set the default wallpaper to the 4:3 variant.
- The theme is set on the welcome page of the setup wizard during second stage setup.
2025-03-18 00:35:04 -06:00
Carl J. Bialorucki
079003d972 [0.4.15][SETUP] Disable BTRFS
BTRFS installs are no longer stable. Disable BTRFS install option for a less confusing user experience.

This patch was developed specifically for 0.4.15 and should not be ported to the master branch at this time.
2025-03-14 20:24:37 -06:00
Carl J. Bialorucki
bd270f07f3 [0.4.15][NTUSER] Handle window update region larger than the current window in clip region (#7731)
CORE-18206 CORE-18799 CORE-19371

Fixes infinite loop of:
  err: Message WM_PAINT count 1 Internal Paint Set? FALSE

The symptom appears in the following scenario (as reported in CORE-18799):

A program (game) runs at a small resolution (e.g. 640 x 480), but the
game window gets invalidated at a larger size (e.g. 1152 x 864 screen
resolution) before switching to the smaller (640 x 480) size.
Because of this, the window's update region is larger than the current
window so only the 640 x 480 region gets validated leaving the remaining
region invalid. This causes the recurring WM_PAINT messages because there
is no way to invalidate the remaining area.

This is a backport of commit:
5c505d9a9b [NTUSER] Handle window update region larger than the current window in clip region (#7731)
2025-03-13 22:36:47 -06:00
Carl J. Bialorucki
5ce3fadb81 [0.4.15][NTOS:KE] Implement KeI386VirtualIntExtensions code paths for INT and IRET
CORE-19049

This is a cherry pick of commit:

656a5dcc1f [NTOS:KE] Implement KeI386VirtualIntExtensions code paths for INT and IRET. CORE-19049 (#7742)
2025-03-13 22:21:55 -06:00
Carl J. Bialorucki
8553bc117b [0.4.15][THEMES][MIZU] New bitmaps to replace old Lautus ones (#7775)
This is a backport of commit:

14f8f7e3bd [THEMES][MIZU] New bitmaps to replace old Lautus ones (#7775)
2025-03-13 22:10:39 -06:00
Carl J. Bialorucki
4d7a107ecd [0.4.15][BROWSEUI][SHELL32] Fix FindFolder icons
CORE-18692

- Shortcut icons require the correct IShellFolder because it needs the full path.
- Items in a drive root needs the final backslash to be part of the path.

This is a backport of the following commit:
f844296b0a [BROWSEUI][SHELL32] Fix FindFolder icons (#7756)
2025-03-10 20:04:11 -06:00
Carl J. Bialorucki
a067bd5b5b [0.4.15][BROWSEUI] Set AddressBand Go button checkbox state correctly in menu
CORE-20018

This is a backport of the following commit:
5af47c9baf [BROWSEUI] Set AddressBand Go button checkbox state correctly in menu (#7771)
2025-03-10 19:25:19 -06:00
Carl J. Bialorucki
aa9824a2dd [0.4.15][BOOT] Disable EFI
EFI support is incomplete in 0.4.15, there is no EFI bootvid. Disable the EFI loader to reduce confusion.
2025-03-07 18:04:27 -07:00
Carl J. Bialorucki
72e3e2c01e [0.4.15][NETSHELL] Handle DefView accelerators
CORE-18750

This is a backport of commit:
0743faf2e3 [NETSHELL] Handle DefView accelerators (#7572)
2025-03-06 21:54:34 -07:00
Carl J. Bialorucki
5dceb67f13 [0.4.15][SHELL32] CM::InvokeCommand case-insensitive compare verb string (#7582)
CORE-18733

This is a backport of the following commit:
1faa571f3f [SHELL32] CM::InvokeCommand case-insensitive compare verb string (#7582)
2025-03-06 00:10:56 -07:00
Carl J. Bialorucki
8b6ee5e0e3 [0.4.15][UNIATA] Fix memory corruption if SCSIOP_SERVICE_ACTION16 processed. (#7717)
CORE-19696

The size of `READ_CAPACITY16_DATA` struct in UniATA driver and ReactOS/Windows SDK were not equal.
- In UniATA driver: `sizeof(READ_CAPACITY16_DATA) == 33` (wrong);
- In ReactOS/Windows SDK: `sizeof(READ_CAPACITY16_DATA) == 32` (correct).

This is a backport of commit:
606e996e1f [UNIATA] Fix memory corruption if SCSIOP_SERVICE_ACTION16 processed. (#7717)
2025-03-05 21:25:37 -07:00
Carl J. Bialorucki
0a67494071 [0.4.15][SHIMGVW] Choose a better icon image
CORE-19945

- Choose an icon image based on size and color and place it first so GDI+ will pick it
- Change .cur files to .ico so GDI+ can open it

This is a backport of the following commits:
a07a35d0f6 [SHIMGVW] Update Portuguese (pt-PT) translation (#7688)
329a414584 [SHIMGVW] Choose a better icon image and also support .cur files (#7706)
2025-03-05 20:51:44 -07:00
Carl J. Bialorucki
9ec189ac5f [0.4.15][SHELL32] ShellExecuteW must call ShellExecuteExW (#7587)
CORE-19952

Adds the DDEWAIT/NOASYNC flag unless compatibility info says otherwise.

This is a cherry pick of commit:
fd41270d6d [SHELL32] ShellExecuteW must call ShellExecuteExW (#7587)
2025-03-05 19:13:47 -07:00
Carl J. Bialorucki
3bc6b46581 [0.4.15][EXPLORER] Add Show Desktop button to taskbar customization preview (#7727)
CORE-19738

Use a 4D lookup table for the notification area settings preview, instead of many if cases.

This is a cherry pick of commit:
6988b4e2c4 [EXPLORER] Add Show Desktop button to taskbar customization preview (#7727)
2025-03-05 18:40:56 -07:00
Carl J. Bialorucki
f483c90c3d [0.4.15][SHELL32] Don't close Run dialog on execution failure (#7686)
CORE-19983

This is a cherry pick of commit:
6265add147 [SHELL32] Don't close Run dialog on execution failure (#7686)
2025-03-05 18:23:27 -07:00
Carl J. Bialorucki
7ecf8772fa [0.4.15] Vista+ Apiset Exposure OPT-IN in releases instead of OPT-OUT in master
By using the capabilities created in CORE-16631.
This will fix many crash-regressions in apps that have "Vista+ready"-manifests.
A good default setting for releases to protect "average Joe".
We think that's a tolerable balance.

E.g: This will fix CORE-16700 and CORE-16707 for releases.

The reason for those crashes is that we have far too many gaps in our apisets still.

Adventurous users have two options in releases if they want to expose more apisets
(and additional crashes when apisets are not implemented yet):
1.) change registry setting "HKLM\SOFTWARE\Policies\Microsoft\Windows\AppCompat" "DisableCompatGuidDetection" back to 0
to switch the global behavior to act like master-state (== opt-out)
or
2.) Select the "Windows 7" shim for example individually per app for more apiset exposure.
(more safe)

Contrary master will remain affected by such crashes and users will
have to manually apply shim "IgnoreManifestCompatVersion" on each affected app for opt-out,
as we intend to abuse master as a testing platform to spot gaps in apisets and problematic apps more quickly.

Thanks to Mark Jansen for having implemented that flexibility.

This is a cherry pick of commit:
138d9acd79 [0.4.13] Vista+ Apiset Exposure OPT-IN in releases instead of OPT-OUT in master
2025-03-02 20:17:32 -07:00
Carl J. Bialorucki
25283a530b [0.4.15][WIN32SS] Mask WndProc exceptions to hide all tickets linked to CORE-11915
My testcase: this allows opening an exe/dll with MsDepends (CORE-12052)
Unfortunately still necessary, luckily still effective
and also reliably hides a lot of other crashes due to uncaught exceptions

Like done in all earlier releases since 0.4.3
cherry picked from commit bca25b10b4
2025-03-02 19:57:23 -07:00
Carl J. Bialorucki
70715ff248 [0.4.15][CALC][SECLOGON][REGEDIT] Various small bugfixes
Fixes CORE-19745, CORE-19793, and CORE-19743.

This is a squashed backport of the following commits:
30b40247a3 [CALC] Fix copy command when output is NaN (#7496)
0e462a3905 [SECLOGON] Add missing service status updates
17eff53f35 [REGEDIT] Add ES_AUTOHSCROLL to address bar window (#7638)
2025-03-02 19:54:33 -07:00
Carl J. Bialorucki
a868a66a72 [0.4.15][DDRAW] Fix taskbar visibilty when switching to fullscreen (#7443)
CORE-16140, CORE-16148, CORE-16321, CORE-18644, and CORE-17799

Fixes taskbar being displayed when switching to fullscreen when using DirectDraw.

This is a cherry pick of commit:
16437937f7 [DDRAW] Fix taskbar visibilty when switching to fullscreen (#7443)
2025-03-02 19:52:21 -07:00
Carl J. Bialorucki
f5055a3201 [0.4.15][DESK] Don't include .ico files in list of wallpapers (#7726)
CORE-20003

While 0.4.15 will fail to apply a .ico file as a wallpaper, it will still show .ico files as possible wallpapers to select from the file picker. This commit hides these files from the file picker in desk.cpl.

This is a backport of commit:
924592dc47 [DESK] Don't include .ico files in list of wallpapers (#7726)
2025-03-02 19:51:05 -07:00
Carl J. Bialorucki
6a38254631 [0.4.15][SHELL32] Allow DnD to create shortcuts across different drives (#7607)
Fixes CORE-17871 and CORE-18271.

This is a cherry pick of commit:
aebaa14eba [SHELL32] Allow DnD to create shortcuts across different drives (#7607)

Co-Authored-By: Whindmar Saksit <whindsaks@proton.me>
2025-03-02 19:50:04 -07:00
Carl J. Bialorucki
a070a1d4f5 [0.4.15][APISETS] Revert "Rework apisets to use a table"
Fixes CORE-19874 and CORE-19649.

This reverts commit:
24a56f89ab Rework apisets to use a table.
2025-03-02 19:50:04 -07:00
Carl J. Bialorucki
3aa931d10b [0.4.15][GITHUB] Fixes for MSVC ARM and Linux builds
CORE-17604

The latest GitHub Actions runner image 20241113.3.0 uses WDK 10.0.26100.0, which dropped support for 32-bit ARM platform. Fix the failing build by sticking to WDK 10.0.22621.0.

Fixes clang build, since ubuntu-latest (24.04.1 LTS / Noble Numbat) has no LLVM 13 package available.

This includes the following commits:
096a5518e5 [GITHUB] Fix MSVC ARM build
392473c7b5 [GITHUB] Stick to ubuntu-22.04 for build-linux
2025-03-02 19:46:16 -07:00
Carl J. Bialorucki
265550fea9 [0.4.15][SERVICES] Fix services delay on stopping (#7375)
Fixes CORE-16949, CORE-16950, and CORE-15064.

This is a cherry pick of commit:
2f824a4a18 [SERVICES] Fix services delay on stopping (#7375)
2025-03-02 19:44:34 -07:00
Carl J. Bialorucki
07e18f4b7a [0.4.15][SETUPLIB] GetSourcePaths(): Fix determination of the installation source path.
Fixes CORE-17818.
Refine the algorithm introduced in commit c560342 (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 6f389a3 "Add a workaround for installing from USB drives"

This is a cherry pick of commit:
3ddb05d443 [SETUPLIB] GetSourcePaths(): Fix determination of the installation source path.

Co-Authored-By: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
2025-03-02 19:44:34 -07:00
Carl J. Bialorucki
5558a5a883 [0.4.15][SHELL32] Fix Control_RunDLL single comma syntax out of range dialog box numbers (#7595)
Fixes CORE-19580 and CORE-8981.

If an out of range dialog box number was given in a single comma syntax
for Control_RunDLL(), it should be set to 0 to launch the default dialog
box instead of failing. Addendum to dcf9eb0.

This is a cherry pick of commit:
b114e3a051 [SHELL32] Fix Control_RunDLL single comma syntax out of range dialog box numbers (#7595)
2025-03-02 19:44:02 -07:00
Carl J. Bialorucki
2a2d8f9f77 [0.4.15][SHDOCVW][BROWSEUI][SHELL32] Various shell fixes
Fixes CORE-19744, CORE-19879, and CORE-19780.

This backport includes the following commits:
1fec01561d [SHDOCVW][BROWSEUI][SHELL32] Correctly refcount CNSCBand and Explorer File menu (#7569)
11d5cb8095 [BROWSEUI] FindFolder must release the view and the browser (#7529)

Co-Authored-By: Whindmar Saksit <whindsaks@proton.me>
2025-02-24 22:27:17 -07:00
Carl J. Bialorucki
881e9b9329 [0.4.15][NTGDI:FREETYPE] Account for non-breaking spaces in x-dim of IntExtTextOutW (#7479)
CORE-19768
Follow up of PR #7274. This stop WARN's from FF 28 as well.

This is a cherry pick of commit 3bb1e64408

Co-Authored-By: Doug Lyons <douglyons@douglyons.com>
2025-02-24 21:38:54 -07:00
Carl J. Bialorucki
9de86f8796 [0.4.15][VERSION] Fix VerQueryValue when return Value is NULL. (#7449)
Fixes CORE-19783. Tested by cbialorucki as a valid fix.
This is a cherry pick of commit 551c74123c.

Co-Authored-By: Timo Kreuzer <timo.kreuzer@reactos.org>
Co-Authored-By: Doug Lyons <douglyons@douglyons.com>
2025-02-24 21:16:33 -07:00
Carl J. Bialorucki
85d6175995 [0.4.15][KS] Restore old hack for MS portcls
Hackfix for CORE-17237. Restores an old hack required by MS portcls driver. Replaces the current hack from 22d1e7a4e4 with an old one that was removed in 563682ad9a5751a7d5c3f9ffb4ac4f67bf0adc71

This allows ReactOS to boot and play sound properly with the portcls.sys driver from Windows XP/2003.

Co-Authored-By: Oleg Dubinskiy <oleg.dubinskiy@reactos.org>
2025-02-23 19:44:41 -07:00
Whindmar Saksit
1acaa988bc [0.4.15][COMCTL32] ListView LVIS_CUT image does not depend on focus (#7724)
Fixes CORE-19533. Also undoes flicker caused by PR #4218.
2025-02-23 19:39:42 -07:00
Carl J. Bialorucki
b5c1fdc1cc [0.4.15][RAPPS] Backport current RAPPS into 0.4.15
This is a squashed backport of RAPPS from current master into the 0.4.15 release tree. All of these changes were deemed stable and complete.

This backport includes the following commits:
5bc6d59142 [RAPPS] Refresh item info after installer completes (#7697)
d5ce3d28ab [RAPPS] Don't display Freeware license string if the type is also Freeware (#7689)
b35becef2e [RAPPS] Set working directory for zip generated shortcuts (#7674)
a23db39c8a [RAPPS] Allow database to override download filename (#7668)
c8b2c4c94d [RAPPS] Check Let's Encrypt issuer prefix (#7650)
72951421e6 [RAPPS] Reuse active pending downloads window (#7648)
91b8923601 [RAPPS] Allow .zip generated installers to skip writing the DisplayIcon value (#7609)
2834e5b3c8 [RAPPS] Initialize SHBrowseForFolder to current download folder (#7505)
9164e9f85f [RAPPS] Update Slovak (sk-SK) translation (#7450)
8734889272 [RAPPS] Update Turkish (tr-TR) translation (#7372)
16f1abe1c8 [RAPPS] Improve Romanian (ro-RO) translation (#7360)
2f83e6a65d [RAPPS] Use different mutex and title for AppWiz mode (#7350)
301675c112 [RAPPS] Respect partial settings configuration (#7247)
053939e27c [RAPPS] Hide the main window during active download/install if the user closes it (#7014)
3ff8adc553 [RAPPS] Protect database update with a mutex (#7006)
4e59858941 [RAPPS] Change the "Welcome" text with a suitable explanatory one in APPWIZ-mode (#6655)
2af6fd4def [PSDK] Add GetMenuPosFromID() declaration in shlwapi.h
2025-02-17 20:07:25 -07:00
Joachim Henze
7791a36fc2 [0.4.15][FASTFAT] allocsup.c assert-muting, a DIRRTY workaround CORE-19741
Yes, simply muting those assertions is a super-*dirrty*-workaround
https://www.youtube.com/watch?v=4Rg3sAb8Id8
It sweeps under the carpet a mild form of FS-corruption without actually preventing it from happening.
And I will happily revert that workaround and replace it with something better,
once Timo or anyone else will find something better to do on master head.

For now it helps me to increase the chance of succeeding the testbot runs without hitting those assertions,
and it also increases the chances to succeed a git clone from within ros.
And it will decrease the chance of actual ros users running into those endless cascades of assertions
which - when run without a debugger - will make ros halt and enforce the user to reboot,
and even when run with the debugger can never be escaped, because you have to 'i'gnore endless amounts of them.

I tested this hackfix for a week, and have not seen any *severe* side-effects of muting them.

Not nice to hack around like that, for sure not. But it is the best I can come up with for now.
Something like that is not needed for any older release, because the older releases did still use old MM/CC and old non-MS-fastfat.
The real bug is most likely to find within our MM/CC, at least when assuming that MS PL-licensed fastfat wasn't hacked too much by
us when it was introduced during 0.4.15-dev'ing.
2024-09-25 21:12:43 +02:00
Joachim Henze
3780e42ff9 [0.4.15][NTOS:SE][NDK][KMTESTS:SE] Fix 'kmtest_.exe SeQueryInfoToken' (#5308)
This backport fixes 'kmtest_.exe SeQueryInfoToken'
on all testers: VBox x86, KVM x86, WHS x86, Win2003_x64.
And according to Thomas description may also prevent a buffer overrun when executing that formerly broken test.
Afterwards all 76 tests of this suite do complete on all those builders.
Before the patch only 74 of those tests succeeded, 2 failed.

The fix is a squashed backport of the following 6 commits from Thomas Faber:
0.4.16-dev-11-g 44bdafa17e [KMTESTS:SE] Fix failing tests (#5308)
0.4.16-dev-10-g bf6af0f52e [NTOS:SE] Mark output parameters as such (#5308)
0.4.16-dev-9-g 156053cafd [NDK] Match AUX_ACCESS_DATA definition with publicly available version. - if you allocated only sizeof(AUX_ACCESS_DATA), the test would crash with a 4 byte buffer overflow. (#5308)
0.4.16-dev-8-g ff410211e9 [KMTESTS:SE] Don't modify internal data structure, this might cause buffer overrun (#5308)
0.4.16-dev-7-g 206df96bc4 [KMTESTS:SE] Correctly allocate PrivilegeSet buffers (#5308)
0.4.16-dev-6-g 64a6bd4c3e [KMTESTS:SE] Avoid use of uninitialized pool and hardcoded offsets (#5308)

WHS x86 before-and-after-state, the after-test had a few fixes from Timos unrelated PR7343 inside unfortunately:
https://reactos.org/testman/compare.php?ids=97640,97871
(This is added to prove the test being wrong)

I tested it also successfully on my local 2k3sp2 x86 with the releases/0.4.15 afterstate, built with RosBEWin2.2.2 GCC8.4.0dbg x86.

Win2003_x64 0.4.16-dev-11-g44bdafa at 2024-09-12 15:19 (after-state):
https://reactos.org/testman/compare.php?ids=97791

0.4.16-dev-5-g2913ef5 vs. 0.4.16-dev-11-g44bdafa vs. 0.4.16-dev-23-g53b304e:
VBox x86 https://reactos.org/testman/compare.php?ids=97795,97806,97877

0.4.16-dev-5-g2913ef5 vs. 0.4.16-dev-20-g144a8b5 vs. 0.4.16-dev-21-g2af6fd4:
KVM x86 https://reactos.org/testman/compare.php?ids=97793,97855,97856

Since we do touch the NTOS and NDK here the fix is not guaranteed to be side-effect-free,
but since we are so early in the RC-phase, I dared to pick it, especially since the alternative would have
been to disable the test altogether in the releases/0.4.15 which would have been a pity, if we can also have it all green everywhere.
2024-09-15 14:09:29 +02:00
Joachim Henze
5f1fcb59e5 [0.4.15][WINETESTS] Exclude 2 tests: mshmtl:htmldoc, urlmon:protocol ROSTESTS-358
I am really no fan of disabling tests, even when they are broken,
but in these cases they are really not worth of suffering the pain, and rerunning the bots all the time.

Those tests do have random failures and timeouts, and are accessing external web-resources
of the Wine test-infratructure, which are not always accessible.
I do disable them, because they very often make the testruns run extremely long.
"Inspired by" 0.4.15-dev-367-g d424a0e088 urlmon_winetest:url skipped due to frequent hang on Test KVM

This following links do reflect the BEFORE-STATE:

The "urlmon:protocol" test does even crash on the WHS x86 testbot, see:
https://reactos.org/testman/compare.php?ids=97640

0.4.14-release-123-gcc9c2ba:
VBox https://reactos.org/testman/compare.php?ids=97825  KVM https://reactos.org/testman/compare.php?ids=97826 (both timed out at urlmon:url)

0.4.15-2-g94cae27:
VBox https://reactos.org/testman/compare.php?ids=97837  KVM https://reactos.org/testman/compare.php?ids=97838

Yes, even older branches might also be affected, but I will only exclude them for now on releases/0.4.14 and releases/0.4.15
because only on those I do regularly run the testbots still.
2024-09-14 23:34:38 +02:00
Hermès Bélusca-Maïto
94cae279fa [0.4.15][DESK][STOBJECT] Minor UI fixes.
This is a cherry-pick the master-commit 0.4.15-dev-8638-g 0604640c14
which was the 2nd of two commits that were pushed concurrently to me creating the releases/0.4.15 branch,
which I branched at 0.4.15-dev-8636-g 945e856031
but before the "0.4.16-dev" git tag was created.
So they won't end up in no-mans-land.

[DESK][STOBJECT] Minor UI fixes.
- Fix "icone" typo in French (must be "icône");
- Add missing trailing semicolons for options introducing a choice;
- Tweak the IDC_EFFAPPEARANCE_KEYBOARDCUES translation to make it
  a little bit shorter and allowing to reduce the dialog a bit more
  (not yet "perfect" but towards the goal).

(cherry picked from commit 0604640c14)
2024-09-10 21:08:03 +02:00
Hermès Bélusca-Maïto
9b8bab9999 [0.4.15][SHELL32] CDefView.cpp: fix MSVC build warning C5208
This is a cherry-pick the master-commit 0.4.15-dev-8637-g 0293d0c597
which was one of two commits that were pushed concurrently to me creating the releases/0.4.15 branch,
which I branched at 0.4.15-dev-8636-g 945e856031
but before the "0.4.16-dev" git tag was created.
To make sure they won't end up in no-mans-land.

[SHELL32] CDefView.cpp: fix MSVC build warning C5208
"unnamed class used in typedef name cannot declare members other than
non-static data members, member enumerations, or member classes."

Suggestion by Whindmar Saksit.

Use `struct LISTVIEW_SORT_INFO` instead of the typedef, since this
is a structure defined and used only in this file, and we don't use
pointers to it (LPLISTVIEW_SORT_INFO).

(cherry picked from commit 0293d0c597)
2024-09-10 21:06:57 +02:00
Joachim Henze
bceb3112fd [0.4.15] Branch releases/0.4.15 & change KERNEL_VERSION_BUILD_TYPE "" 2024-09-10 19:57:41 +02:00
482 changed files with 12525 additions and 4101 deletions

View File

@@ -15,7 +15,7 @@ jobs:
- dllver: 0x600
config: Release
fail-fast: false
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Get RosBE build specifics
id: get_rosbe_spec
@@ -165,6 +165,7 @@ jobs:
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_arm
sdk: 10.0.22621.0 # Windows SDK 10.0.26100.0 dropped support for 32-bit ARM
toolset: ${{matrix.toolset}}
- name: Activate VS cmd (arm64)
if: ${{ matrix.arch == 'arm64' }}

View File

@@ -96,7 +96,7 @@
# Apisets
# M: learn-more, learn_more, Mark Jansen
# S: Maintained
/sdk/lib/apisets/ @learn-more
/dll/apisets/ @learn-more
# Application Compatibility subystem
# M: learn-more, learn_more, Mark Jansen

View File

@@ -1015,10 +1015,16 @@ static void handle_copy_command(HWND hWnd)
TCHAR display[MAX_CALC_SIZE];
UINT n;
// Read current text from output display
n = GetDlgItemText(hWnd, IDC_TEXT_OUTPUT, display, SIZEOF(display));
if (calc.base == IDC_RADIO_DEC && _tcschr(calc.buffer, _T('.')) == NULL)
display[n - calc.sDecimal_len] = _T('\0');
// Check if result is a true number
if (!calc.is_nan)
{
// Remove trailing decimal point if no decimal digits exist
if (calc.base == IDC_RADIO_DEC && _tcschr(calc.buffer, _T('.')) == NULL)
display[n - calc.sDecimal_len] = _T('\0');
}
CopyMemToClipboard(display);
}

View File

@@ -18,7 +18,7 @@ Also, each [Section] is language-independent and individual, you can override th
program or any other field by adding a language-specific [Section.], followed by the language code.
NOTE: You can find a complete listing of LCIDs and language names here, includes neutral codes:
<https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693%28v=vs.85%29.aspx>
<https://learn.microsoft.com/en-us/windows/win32/intl/language-identifier-constants-and-strings>
Now RAPPS also accepts neutral language codes, meaning that you can do things like this:

View File

@@ -158,7 +158,7 @@ CAppDB::EnumInstalledRootKey(UINT Index, REGSAM &RegSam)
{
// Loop for through all combinations.
// Note that HKEY_CURRENT_USER\Software does not have a redirect
// https://docs.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys#redirected-shared-and-reflected-keys-under-wow64
// https://learn.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys#redirected-shared-and-reflected-keys-under-wow64
if (Index < (IsSystem64Bit() ? 3 : 2))
return GetRootKeyInfo(Index, RegSam);
else

View File

@@ -10,6 +10,14 @@
#include "rapps.h"
#include "appview.h"
static inline AppsCategories
ClampAvailableCategory(AppsCategories Category)
{
if (Category <= ENUM_LASTCATEGORY)
return Category;
return ENUM_CAT_OTHER; // Treat future categories we don't know as Other
}
CAppInfo::CAppInfo(const CStringW &Identifier, AppsCategories Category)
: szIdentifier(Identifier), iCategory(Category)
{
@@ -24,7 +32,7 @@ CAvailableApplicationInfo::CAvailableApplicationInfo(
const CStringW &PkgName,
AppsCategories Category,
const CPathW &BasePath)
: CAppInfo(PkgName, Category), m_Parser(Parser), m_ScrnshotRetrieved(false), m_LanguagesLoaded(false)
: CAppInfo(PkgName, ClampAvailableCategory(Category)), m_Parser(Parser), m_ScrnshotRetrieved(false), m_LanguagesLoaded(false)
{
m_Parser->GetString(L"Name", szDisplayName);
m_Parser->GetString(L"Version", szDisplayVersion);
@@ -163,16 +171,16 @@ CAvailableApplicationInfo::LicenseString()
LicenseType licenseType;
if (IsKnownLicenseType(IntBuffer))
{
licenseType = static_cast<LicenseType>(IntBuffer);
}
else
{
licenseType = LICENSE_NONE;
if (licenseType == LICENSE_NONE || licenseType == LICENSE_FREEWARE)
{
if (szLicenseString.CompareNoCase(L"Freeware") == 0)
{
licenseType = LICENSE_FREEWARE;
szLicenseString = L"";
szLicenseString = L""; // Don't display as "Freeware (Freeware)"
}
}
@@ -588,7 +596,7 @@ CInstalledApplicationInfo::GetInstallerType() const
BOOL
CInstalledApplicationInfo::UninstallApplication(UninstallCommandFlags Flags)
{
if (GetInstallerType() == INSTALLER_GENERATE)
if (GetInstallerType() == INSTALLER_GENERATE && (Flags & UCF_SAMEPROCESS))
{
return UninstallGenerated(*this, Flags);
}

View File

@@ -16,6 +16,50 @@ using namespace Gdiplus;
HICON g_hDefaultPackageIcon = NULL;
static int g_DefaultPackageIconILIdx = I_IMAGENONE;
// **** Menu helpers ****
BOOL
DeleteMenuEx(
_In_ HMENU hMenu,
_In_ UINT uPosition,
_In_ UINT uFlags)
{
INT pos;
MENUITEMINFOW mii = { sizeof(mii), MIIM_FTYPE, 0 };
bool bIsValidItem1, bIsValidItem2;
bool bIsSep1, bIsSep2;
if (uFlags & MF_BYPOSITION)
pos = (INT)uPosition;
else
pos = ::GetMenuPosFromID(hMenu, uPosition);
if (pos < 0)
return FALSE;
bIsValidItem1 = ((pos > 0) && ::GetMenuItemInfoW(hMenu, pos - 1, TRUE, &mii));
bIsSep1 = bIsValidItem1 && !!(mii.fType & MFT_SEPARATOR);
bIsValidItem2 = ::GetMenuItemInfoW(hMenu, pos + 1, TRUE, &mii);
bIsSep2 = bIsValidItem2 && !!(mii.fType & MFT_SEPARATOR);
if (bIsSep1 && !bIsSep2 && !bIsValidItem2)
pos = pos - 1; // Delete separator only if pos+1 has no item
else if (!bIsSep1 && bIsSep2 && !bIsValidItem1)
pos = pos + 1; // Delete separator only if pos-1 has no item
else if (bIsSep1 && bIsSep2)
pos = pos + 1;
else
pos = -1;
// Delete one of the separators if necessary
if (pos != -1)
::DeleteMenu(hMenu, pos, MF_BYPOSITION);
// Finally, delete the menu item itself.
return ::DeleteMenu(hMenu, uPosition, uFlags);
}
// **** Menu helpers ****
// **** CMainToolbar ****
VOID
@@ -149,26 +193,28 @@ CMainToolbar::Create(HWND hwndParent)
AddButtons(_countof(Buttons), Buttons);
/* Remember ideal width to use as a max width of buttons */
SIZE size;
GetIdealSize(FALSE, &size);
m_dButtonsWidthMax = size.cx;
/* Remember the ideal width to use as a max width of buttons */
UpdateMaxButtonsWidth();
return m_hWnd;
}
VOID
CMainToolbar::HideButtonCaption()
void
CMainToolbar::ShowButtonCaption(bool bShow)
{
DWORD dCurrentExStyle = (DWORD)SendMessageW(TB_GETEXTENDEDSTYLE, 0, 0);
SendMessageW(TB_SETEXTENDEDSTYLE, 0, dCurrentExStyle | TBSTYLE_EX_MIXEDBUTTONS);
if (bShow)
SendMessageW(TB_SETEXTENDEDSTYLE, 0, dCurrentExStyle & ~TBSTYLE_EX_MIXEDBUTTONS);
else
SendMessageW(TB_SETEXTENDEDSTYLE, 0, dCurrentExStyle | TBSTYLE_EX_MIXEDBUTTONS);
}
VOID
CMainToolbar::ShowButtonCaption()
void
CMainToolbar::UpdateMaxButtonsWidth()
{
DWORD dCurrentExStyle = (DWORD)SendMessageW(TB_GETEXTENDEDSTYLE, 0, 0);
SendMessageW(TB_SETEXTENDEDSTYLE, 0, dCurrentExStyle & ~TBSTYLE_EX_MIXEDBUTTONS);
SIZE size;
GetIdealSize(FALSE, &size);
m_dButtonsWidthMax = size.cx;
}
DWORD
@@ -267,21 +313,6 @@ CAppRichEdit::InsertTextWithString(UINT StringID, const CStringW &Text, DWORD Te
LoadAndInsertText(StringID, Text, TextFlags);
}
}
VOID
CAppRichEdit::SetWelcomeText()
{
CStringW szText;
szText.LoadStringW(IDS_WELCOME_TITLE);
SetText(szText, CFE_BOLD);
szText.LoadStringW(IDS_WELCOME_TEXT);
InsertText(szText, 0);
szText.LoadStringW(IDS_WELCOME_URL);
InsertText(szText, CFM_LINK);
}
// **** CAppRichEdit ****
int
@@ -924,27 +955,59 @@ CAppInfoDisplay::Create(HWND hwndParent)
}
VOID
CAppInfoDisplay::ShowAppInfo(CAppInfo *Info)
CAppInfoDisplay::ShowAppInfo(CAppInfo &Info, bool OnlyUpdateText)
{
CStringW ScrnshotLocation;
if (Info->RetrieveScreenshot(ScrnshotLocation))
if (!OnlyUpdateText)
{
ScrnshotPrev->DisplayImage(ScrnshotLocation);
CStringW ScrnshotLocation;
if (Info.RetrieveScreenshot(ScrnshotLocation))
{
ScrnshotPrev->DisplayImage(ScrnshotLocation);
}
else
{
ScrnshotPrev->DisplayEmpty();
}
}
ResizeChildren();
Info.ShowAppInfo(RichEdit);
}
void
CAppInfoDisplay::SetWelcomeText(bool bAppwiz)
{
CStringW szText;
ScrnshotPrev->DisplayEmpty();
ResizeChildren();
// Display the standard banner in normal mode, or
// the specific "Add/Remove Programs" in APPWIZ-mode.
if (!bAppwiz)
{
szText.LoadStringW(IDS_WELCOME_TITLE);
RichEdit->SetText(szText, CFE_BOLD);
RichEdit->InsertText(L"\n\n", 0);
szText.LoadStringW(IDS_WELCOME_TEXT);
RichEdit->InsertText(szText, 0);
szText.LoadStringW(IDS_WELCOME_URL);
RichEdit->InsertText(szText, CFM_LINK);
}
else
{
ScrnshotPrev->DisplayEmpty();
}
ResizeChildren();
Info->ShowAppInfo(RichEdit);
}
szText.LoadStringW(IDS_APPWIZ_TITLE);
RichEdit->SetText(szText, CFE_BOLD);
RichEdit->InsertText(L"\n\n", 0);
VOID
CAppInfoDisplay::SetWelcomeText()
{
ScrnshotPrev->DisplayEmpty();
ResizeChildren();
RichEdit->SetWelcomeText();
szText.LoadStringW(IDS_APPWIZ_TEXT1);
RichEdit->InsertText(szText, 0);
RichEdit->InsertText(L"\n", 0);
szText.LoadStringW(IDS_APPWIZ_TEXT2);
RichEdit->InsertText(szText, 0);
}
}
VOID
@@ -1113,19 +1176,11 @@ CAppsListView::SetWatermark(const CStringW &Text)
m_Watermark = Text;
}
VOID
CAppsListView::SetCheckboxesVisible(BOOL bIsVisible)
void
CAppsListView::ShowCheckboxes(bool bShow)
{
if (bIsVisible)
{
SetExtendedListViewStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
}
else
{
SetExtendedListViewStyle(LVS_EX_FULLROWSELECT);
}
bHasCheckboxes = bIsVisible;
SetExtendedListViewStyle((bShow ? LVS_EX_CHECKBOXES : 0) | LVS_EX_FULLROWSELECT);
bHasCheckboxes = bShow;
}
VOID
@@ -1258,7 +1313,7 @@ CAppsListView::Create(HWND hwndParent)
if (hwnd)
{
SetCheckboxesVisible(FALSE);
ShowCheckboxes(false);
}
#pragma push_macro("SubclassWindow")
@@ -1359,16 +1414,18 @@ CAppsListView::SetDisplayAppType(APPLICATION_VIEW_TYPE AppType)
/* Add columns to ListView */
szText.LoadStringW(IDS_APP_NAME);
AddColumn(ColumnCount++, szText, 250, LVCFMT_LEFT);
AddColumn(ColumnCount++, szText, 368, LVCFMT_LEFT);
szText.LoadStringW(IDS_APP_INST_VERSION);
AddColumn(ColumnCount++, szText, 90, LVCFMT_RIGHT);
#if 0 // This column is not currently useful for installed apps.
szText.LoadStringW(IDS_APP_DESCRIPTION);
AddColumn(ColumnCount++, szText, 300, LVCFMT_LEFT);
#endif
// disable checkboxes
SetCheckboxesVisible(FALSE);
// Disable checkboxes
ShowCheckboxes(false);
break;
case AppViewTypeAvailableApps:
@@ -1383,8 +1440,8 @@ CAppsListView::SetDisplayAppType(APPLICATION_VIEW_TYPE AppType)
szText.LoadStringW(IDS_APP_DESCRIPTION);
AddColumn(ColumnCount++, szText, 300, LVCFMT_LEFT);
// enable checkboxes
SetCheckboxesVisible(TRUE);
// Enable checkboxes
ShowCheckboxes(true);
break;
default:
@@ -1490,6 +1547,41 @@ CApplicationView::ProcessWindowMessage(
bSuccess &= CreateListView();
bSuccess &= CreateAppInfoDisplay();
/* APPWIZ-mode: Remove the unneeded menu items and toolbar buttons */
if (m_MainWindow->m_bAppwizMode)
{
HMENU hMenu;
/* Delete the "Settings" item in the "File" sub-menu */
hMenu = ::GetSubMenu(m_MainWindow->GetMenu(), 0);
DeleteMenuEx(hMenu, ID_SETTINGS, MF_BYCOMMAND);
/* Remove the menu items: ID_INSTALL, ID_RESETDB */
hMenu = GetMenu();
DeleteMenuEx(hMenu, ID_INSTALL, MF_BYCOMMAND);
DeleteMenuEx(hMenu, ID_RESETDB, MF_BYCOMMAND);
/* Remove the toolbar buttons:
* ID_INSTALL, ID_CHECK_ALL, ID_RESETDB
* We only keep:
* ID_UNINSTALL, ID_MODIFY, ID_REFRESH */
TBBUTTONINFO info = { sizeof(info), 0 };
int index;
index = m_Toolbar->GetButtonInfo(ID_INSTALL, &info);
if (index >= 0) m_Toolbar->DeleteButton(index);
index = m_Toolbar->GetButtonInfo(ID_CHECK_ALL, &info);
if (index >= 0) m_Toolbar->DeleteButton(index);
index = m_Toolbar->GetButtonInfo(ID_RESETDB, &info);
if (index >= 0) m_Toolbar->DeleteButton(index);
/* Update the ideal width to use as a max width of buttons */
m_Toolbar->UpdateMaxButtonsWidth();
}
/* Resize the toolbar */
m_Toolbar->AutoSize();
RECT rTop;
@@ -1716,6 +1808,22 @@ CApplicationView::SetRedraw(BOOL bRedraw)
m_ListView->SetRedraw(bRedraw);
}
void
CApplicationView::RefreshAvailableItem(PCWSTR PackageName)
{
if (ApplicationViewType != AppViewTypeAvailableApps || !PackageName)
return;
CAppInfo *pApp;
for (UINT i = 0; (pApp = (CAppInfo*)m_ListView->GetItemData(i)) != NULL; ++i)
{
if (pApp->szIdentifier.CompareNoCase(PackageName) == 0)
{
RefreshDetailsPane(*pApp, true);
break;
}
}
}
void
CApplicationView::SetFocusOnSearchBar()
{
@@ -1728,7 +1836,7 @@ CApplicationView::OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (wParam == SIZE_MINIMIZED)
return;
/* Size tool bar */
/* Resize the toolbar */
m_Toolbar->AutoSize();
/* Automatically hide captions */
@@ -1737,11 +1845,11 @@ CApplicationView::OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (dSearchbarMargin > dToolbarTreshold)
{
m_Toolbar->ShowButtonCaption();
m_Toolbar->ShowButtonCaption(true);
}
else if (dSearchbarMargin < dToolbarTreshold)
{
m_Toolbar->HideButtonCaption();
m_Toolbar->ShowButtonCaption(false);
}
RECT r = {0, 0, LOWORD(lParam), HIWORD(lParam)};
@@ -1917,9 +2025,10 @@ CApplicationView::Create(HWND hwndParent)
{
RECT r = {0, 0, 0, 0};
HMENU menu = GetSubMenu(LoadMenuW(hInst, MAKEINTRESOURCEW(IDR_APPLICATIONMENU)), 0);
// Pick the "Programs" sub-menu for building the context menu.
HMENU hMenu = ::GetSubMenu(m_MainWindow->GetMenu(), 1);
return CWindowImpl::Create(hwndParent, r, L"", WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, menu);
return CWindowImpl::Create(hwndParent, r, L"", WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, hMenu);
}
BOOL
@@ -1930,32 +2039,41 @@ CApplicationView::SetDisplayAppType(APPLICATION_VIEW_TYPE AppType)
return FALSE;
}
ApplicationViewType = AppType;
m_AppsInfo->SetWelcomeText();
m_AppsInfo->SetWelcomeText(m_MainWindow->m_bAppwizMode);
HMENU hMenu = ::GetMenu(m_hWnd);
switch (AppType)
{
case AppViewTypeInstalledApps:
EnableMenuItem(hMenu, ID_REGREMOVE, MF_ENABLED);
{
EnableMenuItem(hMenu, ID_INSTALL, MF_GRAYED);
EnableMenuItem(hMenu, ID_UNINSTALL, MF_ENABLED);
EnableMenuItem(hMenu, ID_MODIFY, MF_ENABLED);
EnableMenuItem(hMenu, ID_REGREMOVE, MF_ENABLED);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, FALSE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_UNINSTALL, TRUE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, TRUE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_CHECK_ALL, FALSE);
break;
}
case AppViewTypeAvailableApps:
EnableMenuItem(hMenu, ID_REGREMOVE, MF_GRAYED);
{
// We shouldn't get there in APPWIZ-mode.
ATLASSERT(!m_MainWindow->m_bAppwizMode);
EnableMenuItem(hMenu, ID_INSTALL, MF_ENABLED);
EnableMenuItem(hMenu, ID_UNINSTALL, MF_GRAYED);
EnableMenuItem(hMenu, ID_MODIFY, MF_GRAYED);
EnableMenuItem(hMenu, ID_REGREMOVE, MF_GRAYED);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, TRUE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_UNINSTALL, FALSE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, FALSE);
m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_CHECK_ALL, TRUE);
break;
}
}
return TRUE;
}
@@ -2035,6 +2153,12 @@ CApplicationView::RestoreListSelection(const RESTORELISTSELECTION &Restore)
}
}
VOID
CApplicationView::RefreshDetailsPane(CAppInfo &Info, bool OnlyUpdateText)
{
m_AppsInfo->ShowAppInfo(Info, OnlyUpdateText);
}
// this function is called when a item of listview get focus.
// CallbackParam is the param passed to listview when adding the item (the one getting focus now).
VOID
@@ -2043,7 +2167,7 @@ CApplicationView::ItemGetFocus(LPVOID CallbackParam)
if (CallbackParam)
{
CAppInfo *Info = static_cast<CAppInfo *>(CallbackParam);
m_AppsInfo->ShowAppInfo(Info);
RefreshDetailsPane(*Info);
if (ApplicationViewType == AppViewTypeInstalledApps)
{

View File

@@ -28,6 +28,7 @@ extern "C" {
#define REGPATH_UNINSTALL L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
#define DB_NONE L"!" // Skip/Ignore
#define DB_GENINST_FILES L"Files"
#define DB_GENINST_DIR L"Dir"
#define DB_GENINST_ICON L"Icon"
@@ -230,6 +231,8 @@ GetCustomIconPath(InstallInfo &Info, CStringW &Path)
{
if (*GetGenerateString(DB_GENINST_ICON, Path))
{
if (Path.Compare(DB_NONE) == 0)
return HRESULT_FROM_WIN32(ERROR_CAN_NOT_COMPLETE);
Path = BuildPath(Info.InstallDir, Path);
int idx = PathParseIconLocation(Path.GetBuffer());
Path.ReleaseBuffer();
@@ -306,6 +309,9 @@ CreateShortcut(const CStringW &Target)
{
if (SUCCEEDED(hr = link->SetPath(Target)))
{
SplitFileAndDirectory(Target, &tmp);
link->SetWorkingDirectory(tmp);
if (SUCCEEDED(GetCustomIconPath(Info, tmp)))
{
LPWSTR p = tmp.GetBuffer();
@@ -432,7 +438,7 @@ ExtractAndInstallThread(LPVOID Parameter)
{
const BOOL PerUserModeDefault = TRUE;
InstallInfo &Info = *static_cast<InstallInfo *>(g_pInfo);
LPCWSTR AppName = Info.AppName, Archive = Info.ArchivePath, None = L"!";
LPCWSTR AppName = Info.AppName, Archive = Info.ArchivePath, None = DB_NONE;
CStringW installdir, tempdir, files, shortcut, tmp;
HRESULT hr;
CRegKey arpkey;
@@ -534,9 +540,9 @@ ExtractAndInstallThread(LPVOID Parameter)
(tmp = tmp.Mid(0, cch)).AppendFormat(unparamsfmt, L" /S", modechar, bitness, arpkeyname);
WriteArpEntry(L"QuietUninstallString", tmp);
if (GetCustomIconPath(Info, tmp) != S_OK)
tmp = Info.MainApp;
WriteArpEntry(L"DisplayIcon", tmp);
hr = GetCustomIconPath(Info, tmp);
if (hr != HRESULT_FROM_WIN32(ERROR_CAN_NOT_COMPLETE))
WriteArpEntry(L"DisplayIcon", hr == S_OK ? tmp : Info.MainApp);
if (*GetCommonString(DB_VERSION, tmp))
WriteArpEntry(L"DisplayVersion", tmp);

View File

@@ -81,8 +81,10 @@ CSideTreeView::~CSideTreeView()
// **** CSideTreeView ****
// **** CMainWindow ****
HWND CMainWindow::m_hLastFocus = NULL;
bool CMainWindow::m_PendingInstalledViewRefresh = false;
CMainWindow::CMainWindow(CAppDB *db, BOOL bAppwiz) : m_ClientPanel(NULL), m_Db(db), bAppwizMode(bAppwiz), SelectedEnumType(ENUM_ALL_INSTALLED)
CMainWindow::CMainWindow(CAppDB *db, BOOL bAppwiz) : m_ClientPanel(NULL), m_Db(db), m_bAppwizMode(bAppwiz), SelectedEnumType(ENUM_ALL_INSTALLED)
{
}
@@ -100,6 +102,10 @@ CMainWindow::InitCategoriesList()
m_TreeView->AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
m_TreeView->AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
// Do not show any other categories in APPWIZ-mode.
if (m_bAppwizMode)
goto Finish;
m_TreeView->AddCategory(TVI_ROOT, IDS_SELECTEDFORINST, IDI_SELECTEDFORINST);
hRootItemAvailable = m_TreeView->AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
@@ -120,10 +126,12 @@ CMainWindow::InitCategoriesList()
m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_THEMES, IDI_CAT_THEMES);
m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER);
Finish:
m_TreeView->SetImageList();
m_TreeView->Expand(hRootItemInstalled, TVE_EXPAND);
m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND);
m_TreeView->SelectItem(bAppwizMode ? hRootItemInstalled : hRootItemAvailable);
if (!m_bAppwizMode)
m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND);
m_TreeView->SelectItem(m_bAppwizMode ? hRootItemInstalled : hRootItemAvailable);
}
BOOL
@@ -298,6 +306,7 @@ CMainWindow::CheckAvailable()
{
if (m_Db->GetAvailableCount() == 0)
{
CUpdateDatabaseMutex lock;
m_Db->RemoveCached();
m_Db->UpdateAvailable();
}
@@ -312,13 +321,13 @@ CMainWindow::ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPa
case WM_CREATE:
if (!InitControls())
::PostMessageW(hwnd, WM_CLOSE, 0, 0);
::PostMessageW(hwnd, DM_REPOSITION, 0, 0);
break;
case WM_DESTROY:
{
ShowWindow(SW_HIDE);
hMainWnd = NULL;
SaveSettings(hwnd, &SettingsInfo);
FreeLogs();
delete m_ClientPanel;
@@ -327,6 +336,41 @@ CMainWindow::ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPa
return 0;
}
case WM_CLOSE:
ShowWindow(SW_HIDE);
return g_Busy;
case WM_NOTIFY_OPERATIONCOMPLETED:
if (!g_Busy && !IsWindowVisible())
SendMessage(WM_CLOSE, 0, 0);
break;
case WM_NOTIFY_INSTALLERFINISHED:
m_PendingInstalledViewRefresh = true; // Something just installed, our uninstall list is probably outdated
m_ApplicationView->RefreshAvailableItem((PCWSTR)lParam);
break;
case DM_REPOSITION:
EmulateDialogReposition(hwnd); // We are not a real dialog, we need help from a real one
break;
case WM_ACTIVATE:
if (LOWORD(wParam) == WA_INACTIVE)
m_hLastFocus = ::GetFocus();
break;
case WM_SETFOCUS:
if (m_hLastFocus)
::SetFocus(m_hLastFocus);
break;
case WM_NEXTDLGCTL:
if (!LOWORD(lParam))
HandleTabOrder(wParam ? -1 : 1);
else if (wParam)
::SetFocus((HWND)wParam);
break;
case WM_COMMAND:
OnCommand(wParam, lParam);
break;
@@ -337,6 +381,22 @@ CMainWindow::ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPa
switch (data->code)
{
case TVN_ITEMEXPANDING:
{
if (data->hwndFrom == m_TreeView->m_hWnd)
{
// APPWIZ-mode: forbid item collapse.
// FIXME: Prevent collapse (COMCTL32 is buggy)
// https://bugs.winehq.org/show_bug.cgi?id=53727
if (m_bAppwizMode && (((LPNMTREEVIEW)lParam)->action & TVE_TOGGLE) == TVE_COLLAPSE)
{
theResult = TRUE;
return TRUE; // Handled
}
}
break;
}
case TVN_SELCHANGED:
{
if (data->hwndFrom == m_TreeView->m_hWnd)
@@ -556,9 +616,12 @@ CMainWindow::OnCommand(WPARAM wParam, LPARAM lParam)
break;
case ID_RESETDB:
{
CUpdateDatabaseMutex lock;
m_Db->RemoveCached();
UpdateApplicationsList(SelectedEnumType, bReload);
break;
}
case ID_HELP:
MessageBoxW(L"Help not implemented yet", NULL, MB_OK);
@@ -586,8 +649,16 @@ CMainWindow::UpdateStatusBarText()
if (m_StatusBar)
{
CStringW szBuffer;
szBuffer.Format(IDS_APPS_COUNT, m_ApplicationView->GetItemCount());
// Append the number of selected apps if not in APPWIZ-mode.
if (!m_bAppwizMode)
{
CStringW szBuffer2;
szBuffer2.Format(IDS_APPS_SELECT_COUNT, m_Selected.GetCount());
szBuffer += szBuffer2;
}
szBuffer.Format(IDS_APPS_COUNT, m_ApplicationView->GetItemCount(), m_Selected.GetCount());
m_StatusBar->SetText(szBuffer);
}
}
@@ -612,6 +683,13 @@ CMainWindow::AddApplicationsToView(CAtlList<CAppInfo *> &List)
VOID
CMainWindow::UpdateApplicationsList(AppsCategories EnumType, BOOL bReload, BOOL bCheckAvailable)
{
// Only installed applications should be enumerated in APPWIZ-mode.
if (m_bAppwizMode && !IsInstalledEnum(EnumType))
{
ATLASSERT(FALSE && "Should not be called in APPWIZ-mode");
return;
}
bUpdating = TRUE;
if (HCURSOR hCursor = LoadCursor(NULL, IDC_APPSTARTING))
@@ -624,6 +702,12 @@ CMainWindow::UpdateApplicationsList(AppsCategories EnumType, BOOL bReload, BOOL
if (bCheckAvailable)
CheckAvailable();
if (m_PendingInstalledViewRefresh && IsInstalledEnum(EnumType) && !IsInstalledEnum(SelectedEnumType))
{
m_PendingInstalledViewRefresh = FALSE;
bReload = TRUE; // Reload because we are switching from Available to Installed after something installed
}
BOOL TryRestoreSelection = SelectedEnumType == EnumType;
if (SelectedEnumType != EnumType)
SelectedEnumType = EnumType;
@@ -650,6 +734,9 @@ CMainWindow::UpdateApplicationsList(AppsCategories EnumType, BOOL bReload, BOOL
}
else if (IsAvailableEnum(EnumType))
{
// We shouldn't get there in APPWIZ-mode.
ATLASSERT(!m_bAppwizMode);
if (bReload)
m_Db->UpdateAvailable();
@@ -709,8 +796,7 @@ CMainWindow::GetWndClassInfo()
HWND
CMainWindow::Create()
{
CStringW szWindowName;
szWindowName.LoadStringW(IDS_APPTITLE);
const CStringW szWindowName(MAKEINTRESOURCEW(m_bAppwizMode ? IDS_APPWIZ_TITLE : IDS_APPTITLE));
RECT r = {
(SettingsInfo.bSaveWndPos ? SettingsInfo.Left : CW_USEDEFAULT),
@@ -756,16 +842,7 @@ CMainWindow::ItemCheckStateChanged(BOOL bChecked, LPVOID CallbackParam)
BOOL
CMainWindow::InstallApplication(CAppInfo *Info)
{
if (Info)
{
if (DownloadApplication(Info))
{
UpdateApplicationsList(SelectedEnumType);
return TRUE;
}
}
return FALSE;
return Info && DownloadApplication(Info);
}
BOOL

View File

@@ -41,6 +41,7 @@ enum AppsCategories
ENUM_CAT_THEMES,
ENUM_CAT_OTHER,
ENUM_CAT_SELECTED,
ENUM_LASTCATEGORY = ENUM_CAT_SELECTED - 1,
ENUM_ALL_INSTALLED = 30,
ENUM_INSTALLED_APPLICATIONS,
ENUM_UPDATES,
@@ -54,6 +55,12 @@ enum AppsCategories
inline BOOL
IsAvailableEnum(INT x)
{
C_ASSERT(ENUM_CAT_AUDIO == 1 && ENUM_CAT_THEMES == 15 && ENUM_CAT_OTHER == 16);
C_ASSERT(ENUM_LASTCATEGORY >= ENUM_CAT_OTHER);
C_ASSERT(ENUM_LASTCATEGORY < ENUM_CAT_SELECTED);
C_ASSERT(ENUM_LASTCATEGORY < ENUM_INSTALLED_MIN);
C_ASSERT(ENUM_CAT_SELECTED < ENUM_INSTALLED_MIN);
return (x >= ENUM_AVAILABLE_MIN && x <= ENUM_AVAILABLE_MAX);
}
@@ -68,7 +75,9 @@ enum UninstallCommandFlags
UCF_NONE = 0x00,
UCF_MODIFY = 0x01,
UCF_SILENT = 0x02,
UCF_SAMEPROCESS = 0x04,
};
DEFINE_ENUM_FLAG_OPERATORS(UninstallCommandFlags);
enum InstallerType
{
@@ -82,6 +91,7 @@ enum InstallerType
#define DB_REGNAME L"RegName"
#define DB_INSTALLER L"Installer"
#define DB_SCOPE L"Scope" // User or Machine
#define DB_SAVEAS L"SaveAs"
#define DB_GENINSTSECTION L"Generate"
#define GENERATE_ARPSUBKEY L"RApps" // Our uninstall data is stored here

View File

@@ -89,8 +89,6 @@ class CAppRichEdit : public CUiWindow<CRichEdit>
LoadAndInsertText(UINT uStringID, DWORD StringFlags);
VOID
InsertTextWithString(UINT StringID, const CStringW &Text, DWORD TextFlags);
VOID
SetWelcomeText();
};
int
@@ -177,9 +175,9 @@ class CAppInfoDisplay : public CUiWindow<CWindowImpl<CAppInfoDisplay>>
Create(HWND hwndParent);
VOID
ShowAppInfo(CAppInfo *Info);
VOID
SetWelcomeText();
ShowAppInfo(CAppInfo &Info, bool OnlyUpdateText = false);
void
SetWelcomeText(bool bAppwiz);
VOID
OnCommand(WPARAM wParam, LPARAM lParam);
@@ -195,7 +193,7 @@ class CAppsListView : public CUiWindow<CWindowImpl<CAppsListView, CListView>>
};
BOOL bIsAscending = TRUE;
BOOL bHasCheckboxes = FALSE;
bool bHasCheckboxes = false;
INT ItemCount = 0;
INT CheckedItemCount = 0;
@@ -224,8 +222,9 @@ class CAppsListView : public CUiWindow<CWindowImpl<CAppsListView, CListView>>
VOID
SetWatermark(const CStringW &Text);
VOID
SetCheckboxesVisible(BOOL bIsVisible);
void
ShowCheckboxes(bool bShow);
VOID
ColumnClick(LPNMLISTVIEW pnmv);
@@ -293,10 +292,11 @@ class CMainToolbar : public CUiWindow<CToolbar<>>
HWND
Create(HWND hwndParent);
VOID
HideButtonCaption();
VOID
ShowButtonCaption();
void
ShowButtonCaption(bool bShow);
void
UpdateMaxButtonsWidth();
DWORD
GetMaxButtonsWidth() const;
@@ -388,6 +388,8 @@ class CApplicationView : public CUiWindow<CWindowImpl<CApplicationView>>
void
SetRedraw(BOOL bRedraw);
void
RefreshAvailableItem(PCWSTR PackageName);
void
SetFocusOnSearchBar();
BOOL
SetDisplayAppType(APPLICATION_VIEW_TYPE AppType);
@@ -415,6 +417,9 @@ class CApplicationView : public CUiWindow<CWindowImpl<CApplicationView>>
VOID
RestoreListSelection(const RESTORELISTSELECTION &Restore);
VOID
RefreshDetailsPane(CAppInfo &Info, bool OnlyUpdateText = false);
// this function is called when a item of listview get focus.
// CallbackParam is the param passed to listview when adding the item (the one getting focus now).
VOID

View File

@@ -52,18 +52,22 @@ class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
CUiWindow<CStatusBar> *m_StatusBar = NULL;
CApplicationView *m_ApplicationView = NULL;
friend class CApplicationView;
CAppDB *m_Db;
CAtlList<CAppInfo *> m_Selected;
BOOL bUpdating = FALSE;
BOOL bAppwizMode;
BOOL m_bAppwizMode;
HTREEITEM hRootItemInstalled;
CStringW szSearchPattern;
AppsCategories SelectedEnumType;
public:
static HWND m_hLastFocus;
static bool m_PendingInstalledViewRefresh;
explicit CMainWindow(CAppDB *db, BOOL bAppwiz = FALSE);
~CMainWindow();

View File

@@ -30,6 +30,8 @@ VOID
CopyTextToClipboard(LPCWSTR lpszText);
VOID
ShowPopupMenuEx(HWND hwnd, HWND hwndOwner, UINT MenuID, UINT DefaultItem, POINT *Point = NULL);
VOID
EmulateDialogReposition(HWND hwnd);
BOOL
StartProcess(const CStringW &Path, BOOL Wait);
BOOL
@@ -115,3 +117,32 @@ GetProgramFilesPath(CStringW &Path, BOOL PerUser, HWND hwnd = NULL);
template <class T> class CLocalPtr : public CHeapPtr<T, CLocalAllocator>
{
};
struct CScopedMutex
{
HANDLE m_hMutex;
CScopedMutex(LPCWSTR Name, UINT Timeout = INFINITE, BOOL InitialOwner = FALSE)
{
m_hMutex = CreateMutexW(NULL, InitialOwner, Name);
if (m_hMutex && !InitialOwner)
{
DWORD wait = WaitForSingleObject(m_hMutex, Timeout);
if (wait != WAIT_OBJECT_0 && wait != WAIT_ABANDONED)
{
CloseHandle(m_hMutex);
m_hMutex = NULL;
}
}
}
~CScopedMutex()
{
if (m_hMutex)
{
ReleaseMutex(m_hMutex);
CloseHandle(m_hMutex);
}
}
bool Acquired() const { return m_hMutex != NULL; }
};

View File

@@ -13,4 +13,19 @@
#include "misc.h"
#include "configparser.h"
extern LONG g_Busy;
extern bool g_PendingInstalledViewRefresh;
#define WM_NOTIFY_OPERATIONCOMPLETED (WM_APP + 0)
#define WM_NOTIFY_INSTALLERFINISHED (WM_APP + 1)
#define MAINWINDOWCLASSNAME L"ROSAPPMGR2"
#define MAINWINDOWMUTEX szWindowClass
#define UPDATEDBMUTEX ( MAINWINDOWCLASSNAME L":UpDB" )
struct CUpdateDatabaseMutex : public CScopedMutex
{
CUpdateDatabaseMutex() : CScopedMutex(UPDATEDBMUTEX, 1000 * 60 * 10, FALSE) { };
};
#endif /* _RAPPS_H */

View File

@@ -67,7 +67,6 @@
/* Menus */
#define IDR_MAINMENU 500
#define IDR_LINKMENU 501
#define IDR_APPLICATIONMENU 502
/* Menu items */
#define ID_EXIT 550
@@ -88,40 +87,46 @@
/* Messages */
#define ID_ACTIVATE_APPWIZ 600
/* Strings */
/* Banners */
#define IDS_APPTITLE 100
#define IDS_SEARCH_TEXT 101
#define IDS_APPS_COUNT 102
#define IDS_WELCOME_TITLE 103
#define IDS_WELCOME_TEXT 104
#define IDS_WELCOME_URL 105
#define IDS_INSTALLED 106
#define IDS_AVAILABLEFORINST 107
#define IDS_UPDATES 108
#define IDS_APPLICATIONS 109
#define IDS_CHOOSE_FOLDER_TEXT 110
#define IDS_CHOOSE_FOLDER_ERROR 111
#define IDS_URL_INVALID 112
#define IDS_APP_REG_REMOVE 113
#define IDS_INFORMATION 114
#define IDS_UNABLE_TO_REMOVE 115
#define IDS_UNABLE_TO_DOWNLOAD 116
#define IDS_UNABLE_TO_DOWNLOAD2 117
#define IDS_UNABLE_TO_QUERY_CERT 118
#define IDS_INTEG_CHECK_TITLE 119
#define IDS_INTEG_CHECK_FAIL 120
#define IDS_INTERRUPTED_DOWNLOAD 121
#define IDS_UNABLE_TO_WRITE 122
#define IDS_INSTALL_SELECTED 123
#define IDS_UNABLE_TO_INSTALL 124
#define IDS_SELECTEDFORINST 125
#define IDS_MISMATCH_CERT_INFO 126
#define IDS_UNABLE_PATH 127
#define IDS_APP_AUTHORS 128
#define IDS_APP_DISPLAY_DETAILS 129
#define IDS_APP_DISPLAY_LIST 130
#define IDS_APP_DISPLAY_TILE 131
#define IDS_NO_SEARCH_RESULTS 132
#define IDS_APP_AUTHORS 101
#define IDS_WELCOME_TITLE 102
#define IDS_WELCOME_TEXT 103
#define IDS_WELCOME_URL 104
#define IDS_APPWIZ_TITLE 105
#define IDS_APPWIZ_TEXT1 106
#define IDS_APPWIZ_TEXT2 107
/* Strings */
#define IDS_SEARCH_TEXT 110
#define IDS_APPS_COUNT 111
#define IDS_APPS_SELECT_COUNT 112
#define IDS_INSTALLED 113
#define IDS_AVAILABLEFORINST 114
#define IDS_UPDATES 115
#define IDS_APPLICATIONS 116
#define IDS_CHOOSE_FOLDER_TEXT 117
#define IDS_CHOOSE_FOLDER_ERROR 118
#define IDS_URL_INVALID 119
#define IDS_APP_REG_REMOVE 120
#define IDS_INFORMATION 121
#define IDS_UNABLE_TO_REMOVE 122
#define IDS_UNABLE_TO_DOWNLOAD 123
#define IDS_UNABLE_TO_DOWNLOAD2 124
#define IDS_UNABLE_TO_QUERY_CERT 125
#define IDS_INTEG_CHECK_TITLE 126
#define IDS_INTEG_CHECK_FAIL 127
#define IDS_INTERRUPTED_DOWNLOAD 128
#define IDS_UNABLE_TO_WRITE 129
#define IDS_INSTALL_SELECTED 130
#define IDS_UNABLE_TO_INSTALL 131
#define IDS_SELECTEDFORINST 132
#define IDS_MISMATCH_CERT_INFO 133
#define IDS_UNABLE_PATH 134
#define IDS_APP_DISPLAY_DETAILS 135
#define IDS_APP_DISPLAY_LIST 136
#define IDS_APP_DISPLAY_TILE 137
#define IDS_NO_SEARCH_RESULTS 138
/* Tooltips */
#define IDS_TOOLTIP_INSTALL 200

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Слагане\tCtrl+Enter", ID_INSTALL
MENUITEM "&Махане\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Промяна", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Пр&емахване от регистъра", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "О&пресняване\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 254, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Настройки"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Управителят за приложения на РеактОС"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Търсене"
IDS_APPS_COUNT "Брой приложения: %d; Selected: %d"
IDS_WELCOME_TITLE "Управителят на приложенията на РеактОС ви приветства"
IDS_WELCOME_TEXT "Изберете раздел от лявата страна, след което изберете приложение за слагане или премахване.\nСтраницата на РеактОС: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Търсене…"
IDS_APPS_COUNT "Брой приложения: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Сложено"
IDS_AVAILABLEFORINST "Налично за слагане"
IDS_UPDATES "Обновления"

View File

@@ -44,22 +44,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalovat\tCtrl+Enter", ID_INSTALL
MENUITEM "&Odinstalovat\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Změnit", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Odstranit z r&egistru", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Ob&novit\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Aktualizovat data&bázi\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Nastavení"
@@ -189,11 +173,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Správce aplikací"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Hledat…"
IDS_APPS_COUNT "Počet aplikací: %d; Vybráno: %d"
IDS_WELCOME_TITLE "Vítejte v ReactOS Správci aplikací!\n\n"
IDS_WELCOME_TITLE "Vítejte v ReactOS Správci aplikací!"
IDS_WELCOME_TEXT "Na levé straně zvolte kategorii, pak vpravo zvolte aplikaci, která bude nainstalována nebo odinstalována.\nWebová stránka ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Hledat…"
IDS_APPS_COUNT "Počet aplikací: %d"
IDS_APPS_SELECT_COUNT "; Vybráno: %d"
IDS_INSTALLED "Nainstalováno"
IDS_AVAILABLEFORINST "Lze instalovat"
IDS_UPDATES "Aktualizace"

View File

@@ -46,22 +46,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installieren\tCtrl+Enter", ID_INSTALL
MENUITEM "&Deinstallieren\tCtrl+Del", ID_UNINSTALL
MENUITEM "Ä&ndern", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Aus R&egistry entfernen", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Aktualisie&ren\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Daten&bank aktualisieren\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Einstellungen"
@@ -191,11 +175,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS-Anwendungsmanager"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Suche…"
IDS_APPS_COUNT "Anzahl der Anwendungen: %d, ausgewählt: %d"
IDS_WELCOME_TITLE "Willkommen im ReactOS-Anwendungsmanager!\n\n"
IDS_WELCOME_TITLE "Willkommen im ReactOS-Anwendungsmanager!"
IDS_WELCOME_TEXT "Wählen Sie links eine Kategorie und dann eine Anwendung um sie zu installieren oder zu deinstallieren.\nReactOS-Webseite: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Suche…"
IDS_APPS_COUNT "Anzahl der Anwendungen: %d"
IDS_APPS_SELECT_COUNT "; ausgewählt: %d"
IDS_INSTALLED "Installiert"
IDS_AVAILABLEFORINST "Zur Installation verfügbar"
IDS_UPDATES "Aktualisierungen"

View File

@@ -46,22 +46,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Install\tCtrl+Enter", ID_INSTALL
MENUITEM "&Uninstall\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modify", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "R&emove from Registry", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Refresh\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Settings"
@@ -191,11 +175,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Applications Manager"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Search…"
IDS_APPS_COUNT "Applications count: %d; Selected: %d"
IDS_WELCOME_TITLE "Welcome to ReactOS Applications Manager!\n\n"
IDS_WELCOME_TITLE "Welcome to ReactOS Applications Manager!"
IDS_WELCOME_TEXT "Choose a category on the left, then choose an application to install or uninstall.\nReactOS Web Site: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Search…"
IDS_APPS_COUNT "Applications count: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Installed"
IDS_AVAILABLEFORINST "Available for installation"
IDS_UPDATES "Updates"

View File

@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalar\tCtrl+Intro", ID_INSTALL
MENUITEM "&Desinstalar\tCtrl+Supr", ID_UNINSTALL
MENUITEM "&Modificar", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Eliminar del Registro", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Recargar\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "&Actualizar listado desde Internet\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ajustes"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Administrador de aplicaciones de ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Buscar…"
IDS_APPS_COUNT "Nº de aplicaciones: %d; Selecionadas: %d"
IDS_WELCOME_TITLE "Bienvenido al Administrador de aplicaciones de ReactOS.\n\n"
IDS_WELCOME_TITLE "Bienvenido al Administrador de aplicaciones de ReactOS."
IDS_WELCOME_TEXT "Seleccione una categoría a la izquierda, para más tarde seleccionar la aplicación a instalar o desinstalar.\nWeb de ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Buscar…"
IDS_APPS_COUNT "Nº de aplicaciones: %d"
IDS_APPS_SELECT_COUNT "; Selecionadas: %d"
IDS_INSTALLED "Instaladas"
IDS_AVAILABLEFORINST "Disponible para su instalación"
IDS_UPDATES "Actualizaciones"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installi\tCtrl+Enter", ID_INSTALL
MENUITEM "&Desinstalli\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Muuda", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Eemalda registrist", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Värskenda\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Uuenda andme&baasi\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sätted"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS'i Rakenduste Haldur"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Otsi…"
IDS_APPS_COUNT "Rakenduste arv: %d; Valitud: %d"
IDS_WELCOME_TITLE "Tere tulemast ReactOS'i Rakenduste Haldurisse!\n\n"
IDS_WELCOME_TITLE "Tere tulemast ReactOS'i Rakenduste Haldurisse!"
IDS_WELCOME_TEXT "Vali vasakult teema, siis vali paremalt rakendusi mida soovid installida või desinstallida.\nReactOS'i veebileht: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Otsi…"
IDS_APPS_COUNT "Rakenduste arv: %d"
IDS_APPS_SELECT_COUNT "; Valitud: %d"
IDS_INSTALLED "Installitud"
IDS_AVAILABLEFORINST "Installimiseks saadaval"
IDS_UPDATES "Uuendused"

View File

@@ -46,22 +46,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installer\tCtrl+Entrée", ID_INSTALL
MENUITEM "&Désinstaller\tCtrl+Suppr", ID_UNINSTALL
MENUITEM "&Modifier", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Supprimer du registre", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Rafraîchir\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Mettre à jour la &base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Configuration"
@@ -191,11 +175,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Gestionnaire d'applications ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Chercher…"
IDS_APPS_COUNT "Nombre d'applications : %d ; Sélectionnées : %d"
IDS_WELCOME_TITLE "Bienvenue dans ReactOS Applications Manager !\n\n"
IDS_WELCOME_TITLE "Bienvenue dans ReactOS Applications Manager !"
IDS_WELCOME_TEXT "Choisissez une catégorie à gauche, ensuite choisissez une application à installer ou désinstaller.\nSite internet de ReactOS : "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Ajout/Suppression de programmes" // "Ajouter/Supprimer des Programmes"
IDS_APPWIZ_TEXT1 "Choisissez ""Applications"" ou ""Mises à jour"" pour voir la liste des programmes ou des mises à jour installés sur votre système."
IDS_APPWIZ_TEXT2 "Pour supprimer un programme, ou modifier ses composants installés, sélectionnez-le dans la liste et cliquez sur ""Désinstaller"" ou ""Modifier""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Chercher…"
IDS_APPS_COUNT "Nombre d'applications : %d"
IDS_APPS_SELECT_COUNT " ; Sélectionnées : %d"
IDS_INSTALLED "Installé"
IDS_AVAILABLEFORINST "Disponible pour installation"
IDS_UPDATES "Mises à jour"
@@ -274,5 +267,5 @@ END
STRINGTABLE
BEGIN
IDS_INSTGEN_CONFIRMUNINST "Are you sure you want to uninstall %s?"
IDS_INSTGEN_CONFIRMUNINST "Êtes-vous sûr de vouloir désinstaller %s ?"
END

View File

@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "התקנה\tCtrl+Enter", ID_INSTALL
MENUITEM "הסרה\tCtrl+Del", ID_UNINSTALL
MENUITEM "שינוי", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "הסרה מהרשום", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "רענן\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "עדכון מסד נתונים\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
@@ -193,11 +177,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "מנהל היישומים של ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "חיפוש…"
IDS_APPS_COUNT "ספירת יישומים: %d; Selected: %d"
IDS_WELCOME_TITLE "ברוכים הבאים למנהל היישומים של ReactOS!\n\n"
IDS_WELCOME_TITLE "ברוכים הבאים למנהל היישומים של ReactOS!"
IDS_WELCOME_TEXT "בחר קטגוריה בצד שמאל, לאחר מכן בחר יישום להתקנה או להסרה.\nהאתר של ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "חיפוש…"
IDS_APPS_COUNT "ספירת יישומים: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "מותקן"
IDS_AVAILABLEFORINST "זמין להתקנה"
IDS_UPDATES "עדכונים"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "Telep&ítés\tCtrl+Enter", ID_INSTALL
MENUITEM "Eltá&volítás\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Módosítás", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Eltávolítás a registryből", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "F&rissítés\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Adat&bázis frissítése\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Beállítások"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Alkalmazáskezelő"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Keresés…"
IDS_APPS_COUNT "Alkalmazások száma: %d; Kijelölve: %d"
IDS_WELCOME_TITLE "Üdvözöljük a ReactOS Alkalmazáskezelőben!\n\n"
IDS_WELCOME_TITLE "Üdvözöljük a ReactOS Alkalmazáskezelőben!"
IDS_WELCOME_TEXT "Bal oldalon válasszon kategóriát, majd válasszon egy telepíteni vagy eltávolítani kívánt alkalmazást.\nReactOS weboldal: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Keresés…"
IDS_APPS_COUNT "Alkalmazások száma: %d"
IDS_APPS_SELECT_COUNT "; Kijelölve: %d"
IDS_INSTALLED "Telepített"
IDS_AVAILABLEFORINST "Telepíthető alkalmazások"
IDS_UPDATES "Frissítések"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Pasang\tCtrl+Enter", ID_INSTALL
MENUITEM "&Bongkar\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Ubah", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Hapus dari R&egistri", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Sega&rkan\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Perbarui Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Pengaturan"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Manajer Aplikasi ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Cari…"
IDS_APPS_COUNT "Jumlah aplikasi: %d; Terpilih: %d"
IDS_WELCOME_TITLE "Selamat datang di Manajer Aplikasi ReactOS!\n\n"
IDS_WELCOME_TITLE "Selamat datang di Manajer Aplikasi ReactOS!"
IDS_WELCOME_TEXT "pilih kategori di sisi kiri, kemudian pilih aplikasi untuk dipasang atau dibongkar.\nSitus Web ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Cari…"
IDS_APPS_COUNT "Jumlah aplikasi: %d"
IDS_APPS_SELECT_COUNT "; Terpilih: %d"
IDS_INSTALLED "Terpasang"
IDS_AVAILABLEFORINST "Tersedia untuk pemasangan"
IDS_UPDATES "Pembaruan"

View File

@@ -27,7 +27,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "&Aggiorna\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Aggiorna Data&base", ID_RESETDB
MENUITEM "Aggiorna Data&base\tCtrl+F5", ID_RESETDB
END
POPUP "?"
BEGIN
@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installa\tCtrl+Enter", ID_INSTALL
MENUITEM "Rim&uovi\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modifica", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Canc&ella dal registro", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Aggiorna\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Aggiorna Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Impostazioni"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Gestione applicazioni"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Cerca…"
IDS_APPS_COUNT "Numero applicazioni: %d; Selezionate: %d"
IDS_WELCOME_TITLE "Benvenuto!\n\n"
IDS_WELCOME_TITLE "Benvenuto!"
IDS_WELCOME_TEXT "Scegliere una categoria a sinistra, poi scegliere una applicazione da installare o disinstallare.\nReactOS Web Site: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Cerca…"
IDS_APPS_COUNT "Numero applicazioni: %d"
IDS_APPS_SELECT_COUNT "; Selezionate: %d"
IDS_INSTALLED "Installato"
IDS_AVAILABLEFORINST "Disponibile per l'installazione"
IDS_UPDATES "Aggiornamenti"

View File

@@ -23,9 +23,9 @@ BEGIN
MENUITEM "アンインストール(&U)\tCtrl+Del", ID_UNINSTALL
MENUITEM "変更(&M)", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "レジストリから削除(&E)\tF5", ID_REGREMOVE
MENUITEM "レジストリから削除(&E)", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "更新(&R)", ID_REFRESH
MENUITEM "更新(&R)\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "データベースの更新(&B)\tCtrl+F5", ID_RESETDB
END
@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "インストール(&I)\tCtrl+Enter", ID_INSTALL
MENUITEM "アンインストール(&U)\tCtrl+Del", ID_UNINSTALL
MENUITEM "変更(&M)", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "レジストリから削除(&E)\tF5", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "更新(&R)", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "データベースの更新(&B)\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "設定"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS アプリ マネージャ"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "検索..."
IDS_APPS_COUNT "アプリ数: %d; Selected: %d"
IDS_WELCOME_TITLE "ReactOS アプリ マネージャへようこそ!\n\n"
IDS_WELCOME_TITLE "ReactOS アプリ マネージャへようこそ!"
IDS_WELCOME_TEXT "左側からカテゴリを選択し、インストールまたはアンインストールするアプリを選んでください。\nReactOS ウェブ サイト: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "検索..."
IDS_APPS_COUNT "アプリ数: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "インストール済み"
IDS_AVAILABLEFORINST "インストール可能"
IDS_UPDATES "更新"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installere\tCtrl+Enter", ID_INSTALL
MENUITEM "&Avinstallere\tCtrl+Del", ID_UNINSTALL
MENUITEM "E&ndre", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "R&emove from Registry", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Oppdate&r\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Settings"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS programbehandler"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Søk…"
IDS_APPS_COUNT "Program oppsummering: %d; Selected: %d"
IDS_WELCOME_TITLE "Velkommen til ReactOS programbehandler!\n\n"
IDS_WELCOME_TITLE "Velkommen til ReactOS programbehandler!"
IDS_WELCOME_TEXT "Velg en kategori til venstre, og velg et program for installere eller avinstallere programvaren.\nReactOS internettside: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Søk…"
IDS_APPS_COUNT "Program oppsummering: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Installert"
IDS_AVAILABLEFORINST "Tilgjengelig for installasjon"
IDS_UPDATES "Oppdateringer"

View File

@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instaluj\tCtrl+Enter", ID_INSTALL
MENUITEM "Odinstal&uj\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modyfikuj", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Usuń z r&ejestru", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Odśwież\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Aktualizuj &bazę programów\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ustawienia"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Menedżer aplikacji ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Szukaj…"
IDS_APPS_COUNT "Liczba aplikacji: %d; Wybranych: %d"
IDS_WELCOME_TITLE "Witamy w Menedżerze aplikacji ReactOS!\n\n"
IDS_WELCOME_TITLE "Witamy w Menedżerze aplikacji ReactOS!"
IDS_WELCOME_TEXT "Z listy po lewej wybierz kategorię, a następnie aplikację, by ją zainstalować lub odinstalować.\nStrona projektu ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Szukaj…"
IDS_APPS_COUNT "Liczba aplikacji: %d"
IDS_APPS_SELECT_COUNT "; Wybranych: %d"
IDS_INSTALLED "Zainstalowane"
IDS_AVAILABLEFORINST "Dostępne"
IDS_UPDATES "Uaktualnienia"

View File

@@ -17,7 +17,7 @@ BEGIN
END
POPUP "&Programas"
BEGIN
MENUITEM "I&nstalar\tCtrl+Enter", ID_INSTALL
MENUITEM "&Instalar\tCtrl+Enter", ID_INSTALL
MENUITEM "&Desinstalar\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modificar", ID_MODIFY
MENUITEM SEPARATOR
@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalar\tCtrl+Enter", ID_INSTALL
MENUITEM "&Desinstalar\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modificar", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "R&emover do Registro", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Atualiza&r\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Configurações"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Central de Aplicativos ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Procurar…"
IDS_APPS_COUNT "Número de aplicativos: %d; Selected: %d"
IDS_WELCOME_TITLE "Bem-vindo(a) a Central de Aplicativos ReactOS!\n\n"
IDS_WELCOME_TITLE "Bem-vindo(a) a Central de Aplicativos ReactOS!"
IDS_WELCOME_TEXT "Escolha uma categoria à esquerda, então escolha um aplicativo para instalar ou desinstalar.\nWeb Site ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Procurar…"
IDS_APPS_COUNT "Número de aplicativos: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Instalado"
IDS_AVAILABLEFORINST "Disponível para instalação"
IDS_UPDATES "Atualizações"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalar\tCtrl+Enter", ID_INSTALL
MENUITEM "&Desinstalar\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modificar", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "R&emover do Registo", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Actualiza&r\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Actualizar &Base de dados\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Configurações"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Central de aplicações ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Procurar…"
IDS_APPS_COUNT "Número de aplicações: %d; Seleccionadas: %d"
IDS_WELCOME_TITLE "Bem-vindo(a) à Central de aplicações ReactOS!\n\n"
IDS_WELCOME_TITLE "Bem-vindo(a) à Central de aplicações ReactOS!"
IDS_WELCOME_TEXT "Escolha uma categoria à esquerda, de seguida escolha uma aplicação para instalar ou desinstalar.\nWeb Site ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Procurar…"
IDS_APPS_COUNT "Número de aplicações: %d"
IDS_APPS_SELECT_COUNT "; Seleccionadas: %d"
IDS_INSTALLED "Instalado"
IDS_AVAILABLEFORINST "Disponível para instalação"
IDS_UPDATES "Actualizações"

View File

@@ -27,7 +27,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Împ&rospătare\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "&Actualizare baza de date\tCtrl+F5", ID_RESETDB
MENUITEM "&Actualizare a bazei de date\tCtrl+F5", ID_RESETDB
END
POPUP "Aj&utor"
BEGIN
@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalare\tCtrl+Enter", ID_INSTALL
MENUITEM "&Dezinstalare\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modificare", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Eliminare din registru", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Împ&rospătare\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "&Actualizare a bazei de date\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Setări"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Managerul de aplicații ReactOS"
IDS_APP_AUTHORS "Marcă înregistrată 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Căutare…"
IDS_APPS_COUNT "Numărul de programe: %d; Selectate: %d"
IDS_WELCOME_TITLE "Bun venit la Managerul de aplicații ReactOS!\n\n"
IDS_WELCOME_TITLE "Bun venit la Managerul de aplicații ReactOS!"
IDS_WELCOME_TEXT "Alegeți o categorie din stânga, apoi alegeți o aplicație pentru a o instala sau dezinstala.\nArdesa web ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Adăugare/Eliminare de programe"
IDS_APPWIZ_TEXT1 "Alegeți ""Aplicații"" sau ""Actualizări"" pentru a vedea lista aplicațiilor sau a actualizărilor instalate pe sistem."
IDS_APPWIZ_TEXT2 "Pentru a elimina un program sau pentru a-i modifica componentele instalate, selectați-l din listă și faceți clic pe ""Dezinstalare"" sau pe ""Modificare""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Căutare…"
IDS_APPS_COUNT "Numărul de programe: %d"
IDS_APPS_SELECT_COUNT "; Selectate: %d"
IDS_INSTALLED "Instalate"
IDS_AVAILABLEFORINST "Disponibile pentru instalare"
IDS_UPDATES "Actualizări"
@@ -254,9 +247,9 @@ END
STRINGTABLE
BEGIN
IDS_DL_DIALOG_DB_DISP "Aplicații baza de date"
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizare bază de date…"
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Actualizare bază de date… (Sursă neoficială)"
IDS_DL_DIALOG_DB_DISP "Aplicații pentru baza de date"
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizare a bazei de date…"
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Actualizare a bazei de date… (Sursă neoficială)"
END
STRINGTABLE
@@ -268,7 +261,7 @@ BEGIN
IDS_CMD_INVALID_OPTION "Eroare: opțiunea de linie de comandă specificată este necunoscută sau nevalidă.\n"
IDS_CMD_FIND_RESULT_FOR "Rezultatele căutării pentru %1:\n"
IDS_CMD_PACKAGE_NOT_FOUND "Nu se poate găsi pachetul %1.\n"
IDS_CMD_PACKAGE_INFO "Informații despre pachet %1:\n"
IDS_CMD_PACKAGE_INFO "Informații despre pachetul %1:\n"
END
STRINGTABLE

View File

@@ -48,22 +48,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "У&становить\tCtrl+Enter", ID_INSTALL
MENUITEM "&Удалить\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Изменить", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "У&далить из реестра", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Обновить\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Обновить &базу данных\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Параметры"
@@ -193,11 +177,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Менеджер приложений ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Поиск…"
IDS_APPS_COUNT "Количество приложений: %d; Выбрано: %d"
IDS_WELCOME_TITLE "Добро пожаловать в ""Менеджер приложений ReactOS""!\n\n"
IDS_WELCOME_TITLE "Добро пожаловать в ""Менеджер приложений ReactOS""!"
IDS_WELCOME_TEXT "Выберите категорию слева и приложение для установки или удаления.\nСайт ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Поиск…"
IDS_APPS_COUNT "Количество приложений: %d"
IDS_APPS_SELECT_COUNT "; Выбрано: %d"
IDS_INSTALLED "Установленные"
IDS_AVAILABLEFORINST "Доступно для установки"
IDS_UPDATES "Обновления"

View File

@@ -2,7 +2,8 @@
* PROJECT: ReactOS Applications Manager
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Slovak resource file
* TRANSLATOR: Copyright 2009-2010 Mário Kačmár <kario@szm.sk>
* TRANSLATORS: Copyright 2009-2010 Mário Kačmár <kario@szm.sk>
* Copyright 2024 Václav Zouzalík (Venca24) <vaclav.zouzalik@seznam.cz>
*/
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
@@ -25,12 +26,12 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "&Obnoviť\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
MENUITEM "Aktualizovať data&bázu\tCtrl+F5", ID_RESETDB
END
POPUP "Pomocník"
BEGIN
MENUITEM "Pomocník\tF1", ID_HELP, GRAYED
MENUITEM "Čo je", ID_ABOUT
MENUITEM "O programe", ID_ABOUT
END
END
@@ -38,24 +39,8 @@ IDR_LINKMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Otvoriť linku v prehliadači", ID_OPEN_LINK
MENUITEM "&Kopírovať linku do schránky", ID_COPY_LINK
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Inštalovať\tCtrl+Enter", ID_INSTALL
MENUITEM "O&dinštalovať\tCtrl+Del", ID_UNINSTALL
MENUITEM "Z&meniť", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Odstrániť z R&egistrov", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Obnoviť\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
MENUITEM "&Otvoriť odkaz v prehliadači", ID_OPEN_LINK
MENUITEM "&Kopírovať odkaz do schránky", ID_COPY_LINK
END
END
@@ -73,16 +58,16 @@ BEGIN
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP | ES_AUTOHSCROLL
PUSHBUTTON "&Vybrať", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Zmazať inštalačné programy po nainštalovaní", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
GROUPBOX "Software source", -1, 4, 118, 240, 46
AUTORADIOBUTTON "Use default", IDC_SOURCE_DEFAULT, 15, 132, 74, 10, WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "Specified source", IDC_USE_SOURCE, 15, 147, 74, 10
GROUPBOX "Zdroj softvéru", -1, 4, 118, 240, 46
AUTORADIOBUTTON "Použiť predvolené", IDC_SOURCE_DEFAULT, 15, 132, 74, 10, WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "Vlastný zdroj", IDC_USE_SOURCE, 15, 147, 74, 10
EDITTEXT IDC_SOURCE_URL, 97, 147, 140, 12, ES_AUTOHSCROLL | WS_DISABLED
GROUPBOX "Proxy", -1, 4, 166, 240, 76
AUTORADIOBUTTON "System proxy settings", IDC_PROXY_DEFAULT, 15, 180, 210, 10, WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "Direct (No proxy)", IDC_NO_PROXY, 15, 195, 210, 10
AUTORADIOBUTTON "Systémové nastavenia proxy", IDC_PROXY_DEFAULT, 15, 180, 210, 10, WS_GROUP | WS_TABSTOP
AUTORADIOBUTTON "Bez proxy servera", IDC_NO_PROXY, 15, 195, 210, 10
AUTORADIOBUTTON "Proxy", IDC_USE_PROXY, 15, 210, 74, 10
EDITTEXT IDC_PROXY_SERVER, 90, 210, 147, 12, ES_AUTOHSCROLL | WS_DISABLED
LTEXT "No proxy for", -1, 26, 226, 64, 10
LTEXT "Žiadna proxy pre", -1, 26, 226, 64, 10
EDITTEXT IDC_NO_PROXY_FOR, 90, 225, 147, 12, ES_AUTOHSCROLL | WS_DISABLED
PUSHBUTTON "Predvolené", IDC_DEFAULT_SETTINGS, 8, 245, 60, 14, WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 116, 245, 60, 14
@@ -116,10 +101,10 @@ BEGIN
IDS_TOOLTIP_INSTALL "Inštalovať"
IDS_TOOLTIP_UNINSTALL "Odinštalovať"
IDS_TOOLTIP_MODIFY "Zmeniť"
IDS_TOOLTIP_SELECT_ALL "Select/Deselect All"
IDS_TOOLTIP_SELECT_ALL "Vybrať všetky/Zrušiť výber"
IDS_TOOLTIP_SETTINGS "Nastavenia"
IDS_TOOLTIP_REFRESH "Obnoviť"
IDS_TOOLTIP_UPDATE_DB "Update Database"
IDS_TOOLTIP_UPDATE_DB "Aktualizovať databázu"
IDS_TOOLTIP_EXIT "Skončiť"
END
@@ -135,102 +120,111 @@ BEGIN
IDS_INFO_VERSION "\nVerzia: "
IDS_INFO_DESCRIPTION "\nPopis: "
IDS_INFO_PUBLISHER "\nVydavateľ: "
IDS_INFO_HELPLINK "\nHelp Link: "
IDS_INFO_HELPPHONE "\nHelp Telephone: "
IDS_INFO_README "\nČítajMa: "
IDS_INFO_HELPLINK "\nInternetová pomoc: "
IDS_INFO_HELPPHONE "\nTelefonická pomoc: "
IDS_INFO_README "\nReadme: "
IDS_INFO_REGOWNER "\nRegistrovaný vlastník: "
IDS_INFO_PRODUCTID "\nID Produktu: "
IDS_INFO_CONTACT "\nKontakt: "
IDS_INFO_UPDATEINFO "\nUpdate Information: "
IDS_INFO_INFOABOUT "\nInformation About: "
IDS_INFO_COMMENTS "\nComments: "
IDS_INFO_INSTLOCATION "\nInstall Location: "
IDS_INFO_INSTALLSRC "\nInstall Source: "
IDS_INFO_UNINSTALLSTR "\nUninstall String: "
IDS_INFO_UPDATEINFO "\nInformácie o aktualizáciach: "
IDS_INFO_INFOABOUT "\nInformácie o programe: "
IDS_INFO_COMMENTS "\nKomentáre: "
IDS_INFO_INSTLOCATION "\nUmiestnenie inštalácie: "
IDS_INFO_INSTALLSRC "\nZdroj inštalácie: "
IDS_INFO_UNINSTALLSTR "\nOdinstalačný reťazec: "
IDS_INFO_MODIFYPATH "\nModify Path: "
IDS_INFO_INSTALLDATE "\nDátum inštalácie: "
IDS_AINFO_PACKAGE_NAME "\nPackage Name: "
IDS_AINFO_PACKAGE_NAME "\nNázov balíčka: "
END
STRINGTABLE
BEGIN
IDS_AINFO_VERSION "\nVerzia: "
IDS_AINFO_AVAILABLEVERSION "\nAvailable Version: "
IDS_AINFO_AVAILABLEVERSION "\nDostupná verzia: "
IDS_AINFO_DESCRIPTION "\nPopis: "
IDS_AINFO_SIZE "\nVeľkosť: "
IDS_AINFO_URLSITE "\nDomovská stránka: "
IDS_AINFO_LICENSE "\nLicencia: "
IDS_AINFO_URLDOWNLOAD "\nStiahnuť: "
IDS_AINFO_LANGUAGES "\nLanguages: "
IDS_AINFO_LANGUAGES "\nJazyky: "
END
STRINGTABLE
BEGIN
IDS_CAT_AUDIO "Audio"
IDS_CAT_DEVEL "Vývojárske"
IDS_CAT_DEVEL "Vývoj"
IDS_CAT_DRIVERS "Ovládače"
IDS_CAT_EDU "Vzdelávacie"
IDS_CAT_ENGINEER "Inžinierske"
IDS_CAT_FINANCE "Finančné"
IDS_CAT_EDU "Vzdelávanie"
IDS_CAT_ENGINEER "Strojírenstvo"
IDS_CAT_FINANCE "Financie"
IDS_CAT_GAMES "Hry & zábava"
IDS_CAT_GRAPHICS "Grafické"
IDS_CAT_INTERNET "Internet & sieť"
IDS_CAT_GRAPHICS "Grafika"
IDS_CAT_INTERNET "Internet a siete"
IDS_CAT_LIBS "Knižnice"
IDS_CAT_OFFICE "Kancelárske"
IDS_CAT_OTHER "Iné"
IDS_CAT_SCIENCE "Vedecké"
IDS_CAT_OFFICE "Kancelária"
IDS_CAT_OTHER "Ostatné"
IDS_CAT_SCIENCE "Veda"
IDS_CAT_TOOLS "Nástroje"
IDS_CAT_VIDEO "Video"
IDS_CAT_THEMES "Themes"
IDS_CAT_THEMES "Vzhľad"
END
STRINGTABLE
BEGIN
IDS_APPTITLE "Manažér aplikácií systému ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Hľadať…"
IDS_APPS_COUNT "Počet programov: %d; Selected: %d"
IDS_WELCOME_TITLE "Víta Vás Manažér aplikácií systému ReactOS!\n\n"
IDS_WELCOME_TITLE "Víta Vás Manažér aplikácií systému ReactOS!"
IDS_WELCOME_TEXT "Vyberte si kategóriu na ľavej strane, potom vyberte aplikáciu, ktorú chcete nainštalovať alebo odinštalovať.\nWebstránka projektu ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Pridať/Odobrať programy"
IDS_APPWIZ_TEXT1 "Vyberte ""Aplikácie"" alebo ""Aktualizácie"" pre zobrazenie zoznamu aplikácií alebo aktualizácií nainštalovaných vo vašom systéme."
IDS_APPWIZ_TEXT2 "Pre odobranie programu alebo pre zmenu jeho inštalovaných komponentov, ho vyberte zo zoznamu a kliknite na ""Odinštalovať"" alebo ""Upraviť""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Hľadať…"
IDS_APPS_COUNT "Počet programov: %d"
IDS_APPS_SELECT_COUNT "; Vybrané: %d"
IDS_INSTALLED "Nainštalované"
IDS_AVAILABLEFORINST "Dostupné pre nainštalovanie"
IDS_UPDATES "Aktualizácie"
IDS_APPLICATIONS "Aplikácie"
IDS_CHOOSE_FOLDER_TEXT "Vyberte priečinok, ktorý sa použije pre sťahovanie programov:"
IDS_CHOOSE_FOLDER_ERROR "Zvolili ste si neexistujúci priečinok!"
IDS_URL_INVALID "The URL you have specified is invalid or not supported. Please correct it!"
IDS_URL_INVALID "Vami zadaná URL adresa nie je platná alebo nie je podporovaná. Prosím, opravte ju!"
IDS_APP_REG_REMOVE "Naozaj chcete vymazať údaje o nainštalovanom programe z registrov?"
IDS_INFORMATION "Informácie"
IDS_UNABLE_TO_DOWNLOAD "Unable to download the package! Address not found!"
IDS_UNABLE_TO_DOWNLOAD2 "Unable to download the package! Check Internet Connection!"
IDS_UNABLE_TO_DOWNLOAD "Súbor sa nepodarilo stiahnuť! Adresa nebola nájdená!"
IDS_UNABLE_TO_DOWNLOAD2 "Balíček sa nepodarilo stiahnuť! Skontrolujte pripojenie k Internetu"
IDS_UNABLE_TO_REMOVE "Nie je možné odstrániť z registrov údaje o programe!"
IDS_UNABLE_TO_INSTALL "Unable to open installer!"
IDS_UNABLE_TO_QUERY_CERT "Unable to retrieve certificate info.\n\nDo you want to continue anyway?"
IDS_INTEG_CHECK_TITLE "Verifying package integrity…"
IDS_INTEG_CHECK_FAIL "The package did not pass the integrity check, it may have been corrupted or tampered with during downloading. Running the software is not recommended."
IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet."
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_INSTALL_SELECTED "Install Selected"
IDS_SELECTEDFORINST "Selected for installation"
IDS_MISMATCH_CERT_INFO "The certificate used is unknown:\nSubject: %s\nIssuer: %s\nDo you want to continue anyway?"
IDS_UNABLE_TO_INSTALL "Nepodarilo sa otvoriť inštalátor!"
IDS_UNABLE_TO_QUERY_CERT "Nepodarilo sa získať informácie o certifikáte.\n\nChcete napriek tomu pokračovať?"
IDS_INTEG_CHECK_TITLE "Overujem integritu balíčka…"
IDS_INTEG_CHECK_FAIL "Balíček neprešiel kontrolou integrity, mohol byť poškodený alebo zmenený počas sťahovania. Spustenie tohto programu sa neodporúča."
IDS_INTERRUPTED_DOWNLOAD "Sťahovanie bolo prerušené. Skontrolujte pripojenie k Internetu."
IDS_UNABLE_TO_WRITE "Ukladanie na disk sa nepodarilo. Disk môže byť plný."
IDS_INSTALL_SELECTED "Nainštalovať vybrané"
IDS_SELECTEDFORINST "Vybrané pre inštaláciu"
IDS_MISMATCH_CERT_INFO "Neznámy certifikát:\nSubjekt: %s\nVydávateľ: %s\nChcete napriek tomu pokračovať?"
IDS_UNABLE_PATH "Incorrect path format."
IDS_APP_DISPLAY_DETAILS "Details"
IDS_APP_DISPLAY_LIST "List"
IDS_APP_DISPLAY_TILE "Tile"
IDS_NO_SEARCH_RESULTS "No search results"
IDS_APP_DISPLAY_DETAILS "Podrobnosti"
IDS_APP_DISPLAY_LIST "Zoznam"
IDS_APP_DISPLAY_TILE "Dlaždice"
IDS_NO_SEARCH_RESULTS "Žiadne výsledky"
END
STRINGTABLE
BEGIN
IDS_STATUS_INSTALLED "Installed"
IDS_STATUS_NOTINSTALLED "Not installed"
IDS_STATUS_DOWNLOADED "Downloaded"
IDS_STATUS_UPDATE_AVAILABLE "Update available"
IDS_STATUS_DOWNLOADING "Downloading…"
IDS_STATUS_INSTALLING "Installing…"
IDS_STATUS_WAITING "Waiting to install…"
IDS_STATUS_FINISHED "Finished"
IDS_STATUS_INSTALLED "Nainstalované"
IDS_STATUS_NOTINSTALLED "Nenainstalované"
IDS_STATUS_DOWNLOADED "Stiahnuté"
IDS_STATUS_UPDATE_AVAILABLE "Aktualizovateľné"
IDS_STATUS_DOWNLOADING "Sťahujem…"
IDS_STATUS_INSTALLING "Inštalujem…"
IDS_STATUS_WAITING "Čakám na inštaláciu…"
IDS_STATUS_FINISHED "Dokončené"
END
STRINGTABLE
@@ -242,34 +236,34 @@ END
STRINGTABLE
BEGIN
IDS_LANGUAGE_AVAILABLE_TRANSLATION "Supports your language"
IDS_LANGUAGE_NO_TRANSLATION "Supports other languages"
IDS_LANGUAGE_ENGLISH_TRANSLATION "Supports English"
IDS_LANGUAGE_SINGLE "Single language"
IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d more)"
IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d available)"
IDS_LANGUAGE_AVAILABLE_TRANSLATION "Podporuje váš jazyk"
IDS_LANGUAGE_NO_TRANSLATION "Podporuje iné jazyky"
IDS_LANGUAGE_ENGLISH_TRANSLATION "Podporuje angličtinu"
IDS_LANGUAGE_SINGLE "Jediný jazyk"
IDS_LANGUAGE_MORE_PLACEHOLDER " (+%d ďalších)"
IDS_LANGUAGE_AVAILABLE_PLACEHOLDER " (+%d dostupných)"
END
STRINGTABLE
BEGIN
IDS_DL_DIALOG_DB_DISP "Applications Database"
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
IDS_DL_DIALOG_DB_DISP "Databáza aplikácií"
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aktualizujem databázu…"
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Aktualizujem databázu… (Neoficiálny zdroj)"
END
STRINGTABLE
BEGIN
IDS_CMD_USAGE "Usage: "
IDS_CMD_NEED_PACKAGE_NAME "Error: option %1 expects one or more package name.\n"
IDS_CMD_NEED_FILE_NAME "Error: option %1 expects a file name.\n"
IDS_CMD_NEED_PARAMS "Error: option %1 expects one or more parameters.\n"
IDS_CMD_INVALID_OPTION "Error: Unknown or invalid command line option specified.\n"
IDS_CMD_FIND_RESULT_FOR "Find result for %1:\n"
IDS_CMD_PACKAGE_NOT_FOUND "Failed to find package %1.\n"
IDS_CMD_PACKAGE_INFO "Information about package %1:\n"
IDS_CMD_USAGE "Použitie: "
IDS_CMD_NEED_PACKAGE_NAME "Chyba: prepínač %1 očakáva jeden alebo viac názvov balíčkov.\n"
IDS_CMD_NEED_FILE_NAME "Chyba: prepínač %1 očakáva názov súboru.\n"
IDS_CMD_NEED_PARAMS "Chyba: prepínač %1 očakáva jeden alebo viac parametrov.\n"
IDS_CMD_INVALID_OPTION "Chyba: Neznámy alebo neplatný prepínač príkazového riadka.\n"
IDS_CMD_FIND_RESULT_FOR "Nájdi výsledok pre %1:\n"
IDS_CMD_PACKAGE_NOT_FOUND "Nepodarilo sa nájsť balíček %1.\n"
IDS_CMD_PACKAGE_INFO "Informácie o balíčku %1:\n"
END
STRINGTABLE
BEGIN
IDS_INSTGEN_CONFIRMUNINST "Are you sure you want to uninstall %s?"
IDS_INSTGEN_CONFIRMUNINST "Ste si istí, že chcete odinštalovať %s?"
END

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Instalo\tCtrl+Enter", ID_INSTALL
MENUITEM "&Uninstall\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Modifiko", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Hiq nga R&egjistri", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Rifresko\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Konfigurime"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Applications Manager"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Kerko…"
IDS_APPS_COUNT "Numrimi Aplicacioneve: %d; Selected: %d"
IDS_WELCOME_TITLE "Mire Se Erdhe ne ReactOS Applications Manager!\n\n"
IDS_WELCOME_TITLE "Mire Se Erdhe ne ReactOS Applications Manager!"
IDS_WELCOME_TEXT "Zgjidh nje kategori ne te majte, pastaj zgjidh nje aplicacion per ta instaluar ose uninstall.\nReactOS Web Site: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Kerko…"
IDS_APPS_COUNT "Numrimi Aplicacioneve: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Instaluar"
IDS_AVAILABLEFORINST "Te vlefshem per instalim"
IDS_UPDATES "Updates"

View File

@@ -43,22 +43,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Installera\tCtrl+Enter", ID_INSTALL
MENUITEM "&Avinstallera\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Ändra", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Ta bort från R&egistret", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "Uppdate&ra\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Update Data&base\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Inställningar"
@@ -188,11 +172,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS programhanterare"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Sök…"
IDS_APPS_COUNT "Programantal: %d; Selected: %d"
IDS_WELCOME_TITLE "Välkommen till ReactOS programhanterare!\n\n"
IDS_WELCOME_TITLE "Välkommen till ReactOS programhanterare!"
IDS_WELCOME_TEXT "Välj en kategori till vänster, och sedan ett program för att installera eller avinstallera.\nReactOS Web sida: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Sök…"
IDS_APPS_COUNT "Programantal: %d"
IDS_APPS_SELECT_COUNT "; Selected: %d"
IDS_INSTALLED "Installerat"
IDS_AVAILABLEFORINST "Tillgängliga for installation"
IDS_UPDATES "Uppdateringar"

View File

@@ -45,22 +45,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Kur\tCtrl+Enter", ID_INSTALL
MENUITEM "K&aldır\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Değiştir", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "&Girdiyi Kayıt Defteri'nden Kaldır", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Yenile\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Uygulama Veri Ta&banını Yenile\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ayarlar"
@@ -190,11 +174,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS Uygulama Yöneticisi"
IDS_APP_AUTHORS "Telif Hakkı: 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Ara"
IDS_APPS_COUNT "Uygulama Sayısı: %d; Seçili: %d"
IDS_WELCOME_TITLE "ReactOS Uygulama Yöneticisi'ne hoş geldiniz.\n\n"
IDS_WELCOME_TITLE "ReactOS Uygulama Yöneticisi'ne hoş geldiniz."
IDS_WELCOME_TEXT "Solda bir kategori seçiniz, ardından kurmak ya da kaldırmak için bir uygulama seçiniz.\nReactOS'un İnternet sitesi: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Program Ekle/Kaldır"
IDS_APPWIZ_TEXT1 "Sisteminizde yüklü olan uygulamaların veya güncellemelerin listesini görüntülemek için ""Uygulamalar"" veya ""Güncellemeler"" öğesini seçin."
IDS_APPWIZ_TEXT2 "Bir programı kaldırmak veya yüklü bileşenlerini değiştirmek için listeden seçin ve ""Kaldır"" veya ""Değiştir"" üzerine tıklayın."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Ara…"
IDS_APPS_COUNT "Uygulama Sayısı: %d"
IDS_APPS_SELECT_COUNT "; Seçili: %d"
IDS_INSTALLED "Kurulanlar"
IDS_AVAILABLEFORINST "Kurulabilir Uygulamalar"
IDS_UPDATES "Güncelleştirmeler"
@@ -220,7 +213,7 @@ BEGIN
IDS_APP_DISPLAY_DETAILS "Detaylar"
IDS_APP_DISPLAY_LIST "Liste"
IDS_APP_DISPLAY_TILE "Karo"
IDS_NO_SEARCH_RESULTS "No search results"
IDS_NO_SEARCH_RESULTS "Arama sonucu yok"
END
STRINGTABLE
@@ -273,5 +266,5 @@ END
STRINGTABLE
BEGIN
IDS_INSTGEN_CONFIRMUNINST "Are you sure you want to uninstall %s?"
IDS_INSTGEN_CONFIRMUNINST "Kaldırmak istediğinizden emin misiniz %s?"
END

View File

@@ -46,22 +46,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "&Встановити\tCtrl+Enter", ID_INSTALL
MENUITEM "В&идалити\tCtrl+Del", ID_UNINSTALL
MENUITEM "&Змінити", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Вида&лити з реєстру", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Оновити\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "Оновити список &програм\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Налаштування"
@@ -191,11 +175,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Менеджер додатків ReactOS"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "Пошук…"
IDS_APPS_COUNT "Kількість додатків: %d; Обрано: %d"
IDS_WELCOME_TITLE "Ласкаво просимо в Менеджер додатків ReactOS!\n\n"
IDS_WELCOME_TITLE "Ласкаво просимо в Менеджер додатків ReactOS!"
IDS_WELCOME_TEXT "Виберіть категорію зліва, а потім виберіть програми для встановлення чи видалення.\nСторінка ReactOS: "
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "Пошук…"
IDS_APPS_COUNT "Kількість додатків: %d"
IDS_APPS_SELECT_COUNT "; Обрано: %d"
IDS_INSTALLED "Встановлені"
IDS_AVAILABLEFORINST "Доступні для встановлення"
IDS_UPDATES "Оновлення"

View File

@@ -47,22 +47,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "安装(&I)\tCtrl+Enter", ID_INSTALL
MENUITEM "卸载(&U)\tCtrl+Del", ID_UNINSTALL
MENUITEM "修改(&M)", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "从注册表删除(&E)", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "刷新(&R)\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "更新数据库(&B)\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "设置"
@@ -192,11 +176,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS 程序管理器"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "搜索…"
IDS_APPS_COUNT "程序数量:%d已选%d"
IDS_WELCOME_TITLE "欢迎使用 ReactOS 程序管理器!\n\n"
IDS_WELCOME_TITLE "欢迎使用 ReactOS 程序管理器!"
IDS_WELCOME_TEXT "从左栏选择一个类别,然后选择要安装或卸载的程序。\nReactOS 网站:"
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "搜索…"
IDS_APPS_COUNT "程序数量:%d"
IDS_APPS_SELECT_COUNT ";已选:%d"
IDS_INSTALLED "已安装"
IDS_AVAILABLEFORINST "可安装"
IDS_UPDATES "更新"

View File

@@ -44,22 +44,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "安裝(&I)\tCtrl+Enter", ID_INSTALL
MENUITEM "解除安裝(&U)\tCtrl+Del", ID_UNINSTALL
MENUITEM "修改(&M)", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "從登錄檔刪除(&E)", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "重新整理(&R)\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "更新資料庫(&B)\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "設定"
@@ -189,11 +173,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS 程式管理員"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "搜尋..."
IDS_APPS_COUNT "程式數量:%d 已選:%d"
IDS_WELCOME_TITLE "歡迎來到 ReactOS 程式管理員!\n\n"
IDS_WELCOME_TITLE "歡迎來到 ReactOS 程式管理員!"
IDS_WELCOME_TEXT "從左側欄目選擇一個類別,然後選擇要安裝或解除安裝的程式。\nReactOS 網站︰"
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "搜尋..."
IDS_APPS_COUNT "程式數量:%d"
IDS_APPS_SELECT_COUNT " 已選:%d"
IDS_INSTALLED "已安裝"
IDS_AVAILABLEFORINST "可安裝"
IDS_UPDATES "更新"

View File

@@ -44,22 +44,6 @@ BEGIN
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "安裝(&I)\tCtrl+Enter", ID_INSTALL
MENUITEM "解除安裝(&U)\tCtrl+Del", ID_UNINSTALL
MENUITEM "修改(&M)", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "從登錄檔刪除(&E)", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "重新整理(&R)\tF5", ID_REFRESH
MENUITEM SEPARATOR
MENUITEM "更新資料庫(&B)\tCtrl+F5", ID_RESETDB
END
END
IDD_SETTINGS_DIALOG DIALOGEX 0, 0, 250, 265
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "設定"
@@ -189,11 +173,20 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "ReactOS 程式管理員"
IDS_APP_AUTHORS "Copyright 2009 Dmitry Chapyshev"
IDS_SEARCH_TEXT "搜尋..."
IDS_APPS_COUNT "程式數量:%d 已選:%d"
IDS_WELCOME_TITLE "歡迎來到 ReactOS 程式管理員!\n\n"
IDS_WELCOME_TITLE "歡迎來到 ReactOS 程式管理員!"
IDS_WELCOME_TEXT "從左側欄目選擇一個類別,然後選擇要安裝或解除安裝的程式。\nReactOS 網站︰"
IDS_WELCOME_URL "https://reactos.org"
IDS_APPWIZ_TITLE "Add/Remove Programs"
IDS_APPWIZ_TEXT1 "Choose ""Applications"" or ""Updates"" to view the list of applications or updates installed on your system."
IDS_APPWIZ_TEXT2 "To remove a program or to modify its installed components, select it from the list and click on ""Uninstall"" or ""Modify""."
END
STRINGTABLE
BEGIN
IDS_SEARCH_TEXT "搜尋..."
IDS_APPS_COUNT "程式數量:%d"
IDS_APPS_SELECT_COUNT " 已選:%d"
IDS_INSTALLED "已安裝"
IDS_AVAILABLEFORINST "可安裝"
IDS_UPDATES "更新"

File diff suppressed because it is too large Load Diff

View File

@@ -39,6 +39,31 @@ CopyTextToClipboard(LPCWSTR lpszText)
CloseClipboard();
}
static INT_PTR CALLBACK
NothingDlgProc(HWND hDlg, UINT uMsg, WPARAM, LPARAM)
{
return uMsg == WM_CLOSE ? DestroyWindow(hDlg) : FALSE;
}
VOID
EmulateDialogReposition(HWND hwnd)
{
static const DWORD DlgTmpl[] = { WS_POPUP | WS_CAPTION | WS_SYSMENU, 0, 0, 0, 0, 0 };
HWND hDlg = CreateDialogIndirectW(NULL, (LPDLGTEMPLATE)DlgTmpl, NULL, NothingDlgProc);
if (hDlg)
{
RECT r;
GetWindowRect(hwnd, &r);
if (SetWindowPos(hDlg, hDlg, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_NOZORDER | SWP_NOACTIVATE))
{
SendMessage(hDlg, DM_REPOSITION, 0, 0);
if (GetWindowRect(hDlg, &r))
SetWindowPos(hwnd, hwnd, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_NOZORDER | SWP_NOACTIVATE);
}
SendMessage(hDlg, WM_CLOSE, 0, 0);
}
}
VOID
ShowPopupMenuEx(HWND hwnd, HWND hwndOwner, UINT MenuID, UINT DefaultItem, POINT *Point)
{
@@ -135,6 +160,8 @@ StartProcess(const CStringW &Path, BOOL Wait)
{
EnableWindow(hMainWnd, TRUE);
SetForegroundWindow(hMainWnd);
// We got the real activation message during MsgWaitForMultipleObjects while
// we were disabled, we need to set the focus again now.
SetFocus(hMainWnd);
}

View File

@@ -8,6 +8,7 @@
#include "rapps.h"
#include "settings.h"
#define SETTINGSSUBKEY L"Software\\ReactOS\\" RAPPS_NAME
class SettingsField
{
@@ -109,7 +110,7 @@ class SettingsFieldString : public SettingsField
LPCWSTR m_RegName; // key name in registery
};
void
static void
AddInfoFields(ATL::CAtlList<SettingsField *> &infoFields, SETTINGS_INFO &settings)
{
infoFields.AddTail(new SettingsFieldBool(&(settings.bSaveWndPos), L"bSaveWndPos"));
@@ -127,11 +128,9 @@ AddInfoFields(ATL::CAtlList<SettingsField *> &infoFields, SETTINGS_INFO &setting
infoFields.AddTail(new SettingsFieldString((settings.szNoProxyFor), MAX_PATH, L"NoProxyFor"));
infoFields.AddTail(new SettingsFieldBool(&(settings.bUseSource), L"bUseSource"));
infoFields.AddTail(new SettingsFieldString((settings.szSourceURL), INTERNET_MAX_URL_LENGTH, L"SourceURL"));
return;
}
BOOL
static BOOL
SaveAllSettings(CRegKey &key, SETTINGS_INFO &settings)
{
BOOL bAllSuccess = TRUE;
@@ -153,10 +152,10 @@ SaveAllSettings(CRegKey &key, SETTINGS_INFO &settings)
return bAllSuccess;
}
BOOL
static BOOL
LoadAllSettings(CRegKey &key, SETTINGS_INFO &settings)
{
BOOL bAllSuccess = TRUE;
BOOL bLoadedAny = FALSE;
ATL::CAtlList<SettingsField *> infoFields;
AddInfoFields(infoFields, settings);
@@ -165,27 +164,18 @@ LoadAllSettings(CRegKey &key, SETTINGS_INFO &settings)
while (InfoListPosition)
{
SettingsField *Info = infoFields.GetNext(InfoListPosition);
if (!Info->Load(key))
{
bAllSuccess = FALSE;
// TODO: error log
}
if (Info->Load(key))
bLoadedAny = TRUE;
//else
// TODO: error log
delete Info;
}
return bAllSuccess;
return bLoadedAny;
}
VOID
FillDefaultSettings(PSETTINGS_INFO pSettingsInfo)
static void
GetDefaultDownloadDirectory(CStringW &szDownloadDir)
{
CStringW szDownloadDir;
ZeroMemory(pSettingsInfo, sizeof(SETTINGS_INFO));
pSettingsInfo->bSaveWndPos = TRUE;
pSettingsInfo->bUpdateAtStart = FALSE;
pSettingsInfo->bLogEnabled = TRUE;
pSettingsInfo->bUseSource = FALSE;
if (FAILED(SHGetFolderPathW(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, szDownloadDir.GetBuffer(MAX_PATH))))
{
szDownloadDir.ReleaseBuffer();
@@ -201,29 +191,68 @@ FillDefaultSettings(PSETTINGS_INFO pSettingsInfo)
PathAppendW(szDownloadDir.GetBuffer(MAX_PATH), L"\\RAPPS Downloads");
szDownloadDir.ReleaseBuffer();
}
CStringW::CopyChars(
pSettingsInfo->szDownloadDir, _countof(pSettingsInfo->szDownloadDir), szDownloadDir.GetString(),
szDownloadDir.GetLength() + 1);
static VOID
ValidateStringSettings(PSETTINGS_INFO pSettingsInfo)
{
if (!pSettingsInfo->szDownloadDir[0])
{
CStringW szDownloadDir;
GetDefaultDownloadDirectory(szDownloadDir);
CStringW::CopyChars(pSettingsInfo->szDownloadDir, _countof(pSettingsInfo->szDownloadDir),
szDownloadDir.GetString(), szDownloadDir.GetLength() + 1);
}
}
VOID
FillDefaultSettings(PSETTINGS_INFO pSettingsInfo)
{
ZeroMemory(pSettingsInfo, sizeof(*pSettingsInfo));
pSettingsInfo->bSaveWndPos = TRUE;
pSettingsInfo->bUpdateAtStart = FALSE;
pSettingsInfo->bLogEnabled = TRUE;
pSettingsInfo->bUseSource = FALSE;
pSettingsInfo->bDelInstaller = FALSE;
pSettingsInfo->Maximized = FALSE;
pSettingsInfo->Left = CW_USEDEFAULT;
pSettingsInfo->Top = CW_USEDEFAULT;
pSettingsInfo->Width = 680;
pSettingsInfo->Height = 450;
ValidateStringSettings(pSettingsInfo);
}
BOOL
LoadSettings(PSETTINGS_INFO pSettingsInfo)
{
BOOL bLoadedAny = FALSE;
FillDefaultSettings(pSettingsInfo);
ATL::CRegKey RegKey;
if (RegKey.Open(HKEY_CURRENT_USER, L"Software\\ReactOS\\" RAPPS_NAME, KEY_READ) != ERROR_SUCCESS)
if (RegKey.Open(HKEY_CURRENT_USER, SETTINGSSUBKEY, KEY_READ) == ERROR_SUCCESS)
{
return FALSE;
bLoadedAny = LoadAllSettings(RegKey, *pSettingsInfo);
}
return LoadAllSettings(RegKey, *pSettingsInfo);
ValidateStringSettings(pSettingsInfo); // Handles the case where a REG_SZ is present but empty
if (!bLoadedAny)
{
// This the first launch, write at least one item so ParseCmdAndExecute() does not
// trigger another DB update in another process instance between now and SaveSettings().
ATL::CRegKey RegKey;
if (RegKey.Create(HKEY_CURRENT_USER, SETTINGSSUBKEY, NULL, REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, NULL) == ERROR_SUCCESS)
{
SettingsFieldBool field(&(pSettingsInfo->bUpdateAtStart), L"bUpdateAtStart");
field.Save(RegKey);
}
}
return bLoadedAny;
}
BOOL
@@ -245,8 +274,8 @@ SaveSettings(HWND hwnd, PSETTINGS_INFO pSettingsInfo)
(wp.showCmd == SW_MAXIMIZE || (wp.showCmd == SW_SHOWMINIMIZED && (wp.flags & WPF_RESTORETOMAXIMIZED)));
}
if (RegKey.Create(HKEY_CURRENT_USER, L"Software\\ReactOS\\" RAPPS_NAME, NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, NULL) != ERROR_SUCCESS)
if (RegKey.Create(HKEY_CURRENT_USER, SETTINGSSUBKEY, NULL, REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, NULL) != ERROR_SUCCESS)
{
return FALSE;
}

View File

@@ -9,6 +9,20 @@
SETTINGS_INFO NewSettingsInfo;
static int CALLBACK
BrowseFolderCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
switch (uMsg)
{
case BFFM_INITIALIZED:
SendMessageW(hwnd, BFFM_SETSELECTIONW, TRUE, lpData);
break;
case BFFM_VALIDATEFAILED:
return TRUE;
}
return 0;
}
BOOL
ChooseFolder(HWND hwnd)
{
@@ -25,24 +39,24 @@ ChooseFolder(HWND hwnd)
bi.ulFlags =
BIF_USENEWUI | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | /* BIF_BROWSEFILEJUNCTIONS | */ BIF_VALIDATE;
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
if (SUCCEEDED(CoInitialize(NULL)))
{
CStringW szBuf;
WCHAR szDir[MAX_PATH];
if (GetWindowTextW(GetDlgItem(hwnd, IDC_DOWNLOAD_DIR_EDIT), szDir, _countof(szDir)))
{
bi.lpfn = BrowseFolderCallback;
bi.lParam = (LPARAM)szDir;
}
LPITEMIDLIST lpItemList = SHBrowseForFolderW(&bi);
if (lpItemList && SHGetPathFromIDListW(lpItemList, szBuf.GetBuffer(MAX_PATH)))
if (lpItemList && SHGetPathFromIDListW(lpItemList, szDir))
{
szBuf.ReleaseBuffer();
if (!szBuf.IsEmpty())
if (*szDir)
{
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szBuf);
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szDir);
bRet = TRUE;
}
}
else
{
szBuf.ReleaseBuffer();
}
CoTaskMemFree(lpItemList);
CoUninitialize();
@@ -94,7 +108,9 @@ InitSettingsControls(HWND hDlg, PSETTINGS_INFO Info)
SendDlgItemMessageW(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info->bLogEnabled, 0);
SendDlgItemMessageW(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info->bDelInstaller, 0);
SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT), Info->szDownloadDir);
HWND hCtl = GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT);
SetWindowTextW(hCtl, Info->szDownloadDir);
SendMessageW(hCtl, EM_LIMITTEXT, MAX_PATH - 1, 0);
CheckRadioButton(hDlg, IDC_PROXY_DEFAULT, IDC_USE_PROXY, IDC_PROXY_DEFAULT + Info->Proxy);

View File

@@ -191,7 +191,7 @@ HandleUninstallCommand(CAppDB &db, UINT argcLeft, LPWSTR *argvLeft)
if (pInfo)
{
retval = pInfo->UninstallApplication(silent ? UCF_SILENT : UCF_NONE);
retval = pInfo->UninstallApplication((silent ? UCF_SILENT : UCF_NONE) | UCF_SAMEPROCESS);
}
delete pDelete;
return retval;
@@ -338,6 +338,7 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
BOOL bAppwizMode = (argc > 1 && MatchCmdOption(argv[1], CMD_KEY_APPWIZ));
if (!bAppwizMode)
{
CUpdateDatabaseMutex lock;
if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch)
db.RemoveCached();
@@ -349,16 +350,17 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
if (argc == 1 || bAppwizMode) // RAPPS is launched without options or APPWIZ mode is requested
{
// Check whether the RAPPS MainWindow is already launched in another process
HANDLE hMutex;
CStringW szWindowText(MAKEINTRESOURCEW(bAppwizMode ? IDS_APPWIZ_TITLE : IDS_APPTITLE));
LPCWSTR pszMutex = bAppwizMode ? L"RAPPWIZ" : MAINWINDOWMUTEX;
hMutex = CreateMutexW(NULL, FALSE, szWindowClass);
HANDLE hMutex = CreateMutexW(NULL, FALSE, pszMutex);
if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
{
/* If already started, find its window */
HWND hWindow;
for (int wait = 2500, inter = 250; wait > 0; wait -= inter)
{
if ((hWindow = FindWindowW(szWindowClass, NULL)) != NULL)
if ((hWindow = FindWindowW(szWindowClass, szWindowText)) != NULL)
break;
Sleep(inter);
}
@@ -366,6 +368,7 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
if (hWindow)
{
/* Activate the window in the other instance */
ShowWindow(hWindow, SW_SHOWNA);
SwitchToThisWindow(hWindow, TRUE);
if (bAppwizMode)
PostMessage(hWindow, WM_COMMAND, ID_ACTIVATE_APPWIZ, 0);
@@ -376,6 +379,7 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
return FALSE;
}
}
szWindowText.Empty();
CMainWindow wnd(&db, bAppwizMode);
MainWindowLoop(&wnd, nCmdShow);

View File

@@ -13,7 +13,8 @@
#include <gdiplus.h>
#include <conutils.h>
LPCWSTR szWindowClass = L"ROSAPPMGR2";
LPCWSTR szWindowClass = MAINWINDOWCLASSNAME;
LONG g_Busy = 0;
HWND hMainWnd;
HINSTANCE hInst;
@@ -40,12 +41,7 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, INT nSh
}
hInst = hInstance;
BOOL bIsFirstLaunch = !LoadSettings(&SettingsInfo);
if (bIsFirstLaunch)
{
FillDefaultSettings(&SettingsInfo);
}
InitLogs();
InitCommonControls();

View File

@@ -11,7 +11,7 @@
#include <shlguid.h>
ChildWnd* g_pChildWnd;
static int last_split;
static int last_split = -1;
HBITMAP SizingPattern;
HBRUSH SizingBrush;
WCHAR Suggestions[256];
@@ -99,16 +99,20 @@ extern void ResizeWnd(int cx, int cy)
const int nButtonWidth = 44;
const int nButtonHeight = 22;
int cyEdge = GetSystemMetrics(SM_CYEDGE);
const UINT uFlags = SWP_NOZORDER | SWP_NOACTIVATE;
SetRect(&rt, 0, 0, cx, cy);
const UINT uFlags = SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS;
cy = 0;
if (hStatusBar != NULL)
if (IsWindowVisible(hStatusBar))
{
GetWindowRect(hStatusBar, &rs);
cy = rs.bottom - rs.top;
}
GetWindowRect(g_pChildWnd->hAddressBtnWnd, &rb);
GetClientRect(g_pChildWnd->hWnd, &rt);
RedrawWindow(g_pChildWnd->hWnd, &rt, NULL, RDW_INVALIDATE | RDW_NOCHILDREN);
g_pChildWnd->nSplitPos = ClampSplitBarX(g_pChildWnd->hWnd, g_pChildWnd->nSplitPos);
cx = g_pChildWnd->nSplitPos + SPLIT_WIDTH / 2;
@@ -148,7 +152,7 @@ static void draw_splitbar(HWND hWnd, int x)
{
RECT rt;
HGDIOBJ OldObj;
HDC hdc = GetDC(hWnd);
HDC hdc = GetDCEx(hWnd, NULL, DCX_CACHE);
if(!SizingPattern)
{
@@ -159,7 +163,10 @@ static void draw_splitbar(HWND hWnd, int x)
{
SizingBrush = CreatePatternBrush(SizingPattern);
}
GetClientRect(hWnd, &rt);
GetWindowRect(g_pChildWnd->hTreeWnd, &rt);
MapWindowPoints(NULL, hWnd, (POINT *)&rt, sizeof(rt) / sizeof(POINT));
rt.left = x - SPLIT_WIDTH/2;
rt.right = x + SPLIT_WIDTH/2+1;
OldObj = SelectObject(hdc, SizingBrush);
@@ -388,7 +395,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
g_pChildWnd->nSplitPos = 190;
g_pChildWnd->hWnd = hWnd;
style = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
/* ES_AUTOHSCROLL style enables horizontal scrolling and shrinking */
style = WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL;
g_pChildWnd->hAddressBarWnd = CreateWindowExW(WS_EX_CLIENTEDGE, L"Edit", NULL, style,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWnd, (HMENU)0, hInst, 0);

View File

@@ -1446,7 +1446,8 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
// For now, the Help dialog item is disabled because of lacking of HTML Help support
EnableMenuItem(GetMenu(hWnd), ID_HELP_HELPTOPICS, MF_BYCOMMAND | MF_GRAYED);
GetClientRect(hWnd, &rc);
CreateWindowExW(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE,
CreateWindowExW(0, szChildClass, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
hWnd, (HMENU)0, hInst, 0);
break;

View File

@@ -74,6 +74,7 @@ ServiceControlHandlerEx(
TRACE(" SERVICE_CONTROL_STOP received\n");
UpdateServiceStatus(SERVICE_STOP_PENDING);
StopRpcServer();
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
case SERVICE_CONTROL_PAUSE:
@@ -100,6 +101,7 @@ ServiceControlHandlerEx(
TRACE(" SERVICE_CONTROL_SHUTDOWN received\n");
UpdateServiceStatus(SERVICE_STOP_PENDING);
StopRpcServer();
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
default :

View File

@@ -22,7 +22,7 @@
#include "fsutil.h"
#include <fslib/vfatlib.h>
#include <fslib/btrfslib.h>
// #include <fslib/btrfslib.h>
// #include <fslib/ext2lib.h>
// #include <fslib/ntfslib.h>
@@ -165,9 +165,7 @@ static FILE_SYSTEM RegisteredFileSystems[] =
#if 0
{ L"FATX" , VfatxFormat, VfatxChkdsk },
{ L"NTFS" , NtfsFormat, NtfsChkdsk },
#endif
{ L"BTRFS", BtrfsFormat, BtrfsChkdsk },
#if 0
{ L"EXT2" , Ext2Format, Ext2Chkdsk },
{ L"EXT3" , Ext2Format, Ext2Chkdsk },
{ L"EXT4" , Ext2Format, Ext2Chkdsk },

View File

@@ -378,29 +378,48 @@ Quit:
#endif
}
/**
* @brief
* Determine the installation source path and isolate its useful
* path components (root path and source sub-directory).
*
* The installation source path is based either on the installer's
* image file path, or on the \SystemRoot full path.
*
* 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 returned strings are allocated with RtlCreateUnicodeString(),
* and need to be freed with RtlFreeUnicodeString() after being used.
*
* Example of output:
* SourcePath: '\Device\CdRom0\I386'
* SourceRootPath: '\Device\CdRom0'
* SourceRootDir: '\I386'
**/
NTSTATUS
GetSourcePaths(
OUT PUNICODE_STRING SourcePath,
OUT PUNICODE_STRING SourceRootPath,
OUT PUNICODE_STRING SourceRootDir)
_Out_ PUNICODE_STRING SourcePath,
_Out_ PUNICODE_STRING SourceRootPath,
_Out_ PUNICODE_STRING SourceRootDir)
{
NTSTATUS Status;
HANDLE LinkHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
UCHAR ImageFileBuffer[sizeof(UNICODE_STRING) + MAX_PATH * sizeof(WCHAR)];
PUNICODE_STRING InstallSourcePath = (PUNICODE_STRING)&ImageFileBuffer;
WCHAR SystemRootBuffer[MAX_PATH] = L"";
UNICODE_STRING SystemRootPath = RTL_CONSTANT_STRING(L"\\SystemRoot");
ULONG BufferSize;
PWCHAR Ptr;
HANDLE LinkHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatusBlock;
struct { OBJECT_NAME_INFORMATION; WCHAR Buffer[MAX_PATH]; } ImageFileBuffer;
PUNICODE_STRING InstallSourcePath = &ImageFileBuffer.Name;
struct { OBJECT_NAME_INFORMATION; WCHAR Buffer[MAX_PATH]; } SystemRootBuffer;
PUNICODE_STRING SystemRootPath = &SystemRootBuffer.Name;
const UNICODE_STRING SystemRoot = RTL_CONSTANT_STRING(L"\\SystemRoot");
// FIXME: commented out to allow installation from USB
#if 0
/* Determine the installation source path via the full path of the installer */
/* Retrieve the installer's full image file path */
RtlInitEmptyUnicodeString(InstallSourcePath,
(PWSTR)((ULONG_PTR)ImageFileBuffer + sizeof(UNICODE_STRING)),
sizeof(ImageFileBuffer) - sizeof(UNICODE_STRING)
/* Reserve space for a NULL terminator */ - sizeof(UNICODE_NULL));
ImageFileBuffer.Buffer,
sizeof(ImageFileBuffer.Buffer));
BufferSize = sizeof(ImageFileBuffer);
Status = NtQueryInformationProcess(NtCurrentProcess(),
ProcessImageFileName,
@@ -410,75 +429,114 @@ GetSourcePaths(
// STATUS_INFO_LENGTH_MISMATCH or STATUS_BUFFER_TOO_SMALL ?
if (!NT_SUCCESS(Status))
return Status;
ASSERT(InstallSourcePath->Length < InstallSourcePath->MaximumLength);
/* Manually NULL-terminate */
/* Go to the beginning of the path component, stop at the separator */
Ptr = ImageFileBuffer.Buffer + (InstallSourcePath->Length / sizeof(WCHAR));
while ((Ptr > ImageFileBuffer.Buffer) && (*Ptr != OBJ_NAME_PATH_SEPARATOR))
--Ptr;
/* Strip the trailing file name (at the separator or beginning of buffer)
* and manually NULL-terminate */
InstallSourcePath->Length = (ULONG_PTR)Ptr - (ULONG_PTR)ImageFileBuffer.Buffer;
InstallSourcePath->Buffer[InstallSourcePath->Length / sizeof(WCHAR)] = UNICODE_NULL;
/* Strip the trailing file name */
Ptr = wcsrchr(InstallSourcePath->Buffer, OBJ_NAME_PATH_SEPARATOR);
if (Ptr)
*Ptr = UNICODE_NULL;
InstallSourcePath->Length = wcslen(InstallSourcePath->Buffer) * sizeof(WCHAR);
#endif
/*
* Now resolve the full path to \SystemRoot. In case it prefixes
* the installation source path determined from the full path of
* the installer, we use instead the resolved \SystemRoot as the
* installation source path.
* Otherwise, we use instead the path from the full installer path.
* Now, resolve the \SystemRoot symlink target full path.
*
* The symlink target path resolution requires 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
*
* We then verify whether it prefixes the image file path obtained
* from the step above, which is a fully reparsed path.
*
* - Using NtOpenSymbolicLinkObject(SYMBOLIC_LINK_QUERY) followed by
* NtQuerySymbolicLinkObject() would only resolve the first symlink
* but not the others (\Device\Harddisk1\Partition1 left as is).
*
* - Since \SystemRoot has to point to a directory, we try opening
* the directory itself: NtOpenFile(..., FILE_DIRECTORY_FILE).
*
* - A call to NtQueryInformationFile(FileNameInformation) alone on
* the obtained handle would only retrieve the FS directory name,
* i.e. \ReactOS , but not the whole NT path.
*
* - We therefore use NtQueryObject(), which allows retrieving the
* full resolved NT path (device name + FS directory name).
*/
InitializeObjectAttributes(&ObjectAttributes,
&SystemRootPath,
(PUNICODE_STRING)&SystemRoot,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status = NtOpenSymbolicLinkObject(&LinkHandle,
SYMBOLIC_LINK_QUERY,
&ObjectAttributes);
RtlInitEmptyUnicodeString(SystemRootPath,
SystemRootBuffer.Buffer,
sizeof(SystemRootBuffer.Buffer));
Status = NtOpenFile(&LinkHandle,
SYNCHRONIZE,
&ObjectAttributes,
&IoStatusBlock,
FILE_SHARE_READ | FILE_SHARE_WRITE,
FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT
/*| FILE_OPEN_FOR_BACKUP_INTENT*/);
if (NT_SUCCESS(Status))
{
/* Resolve the path and close its handle */
Status = NtQueryObject(LinkHandle,
ObjectNameInformation,
&SystemRootBuffer,
sizeof(SystemRootBuffer),
&BufferSize);
NtClose(LinkHandle);
}
/* If any of the calls above failed, try to naively resolve the symlink */
if (!NT_SUCCESS(Status))
{
/*
* We failed at opening the \SystemRoot link (usually due to wrong
* access rights). Do not consider this as a fatal error, but use
* instead the image file path as the installation source path.
*/
DPRINT1("NtOpenSymbolicLinkObject(%wZ) failed with Status 0x%08lx\n",
&SystemRootPath, Status);
goto InitPaths;
RtlInitEmptyUnicodeString(SystemRootPath,
SystemRootBuffer.Buffer,
sizeof(SystemRootBuffer.Buffer));
Status = NtOpenSymbolicLinkObject(&LinkHandle,
SYMBOLIC_LINK_QUERY,
&ObjectAttributes);
if (NT_SUCCESS(Status))
{
/* Resolve the link and close its handle */
Status = NtQuerySymbolicLinkObject(LinkHandle,
SystemRootPath,
&BufferSize);
NtClose(LinkHandle);
}
}
ASSERT(SystemRootPath->Length < SystemRootPath->MaximumLength);
RtlInitEmptyUnicodeString(&SystemRootPath,
SystemRootBuffer,
sizeof(SystemRootBuffer));
/* Resolve the link and close its handle */
Status = NtQuerySymbolicLinkObject(LinkHandle,
&SystemRootPath,
&BufferSize);
NtClose(LinkHandle);
if (!NT_SUCCESS(Status))
return Status; // Unexpected error
/* Check whether the resolved \SystemRoot is a prefix of the image file path */
// FIXME: commented out to allow installation from USB
// if (RtlPrefixUnicodeString(&SystemRootPath, InstallSourcePath, TRUE))
{
/* Yes it is, so we use instead SystemRoot as the installation source path */
InstallSourcePath = &SystemRootPath;
}
InitPaths:
/*
* Retrieve the different source path components
* If the resolved \SystemRoot is a prefix of the image file path,
* use \SystemRoot instead as the installation source path.
*
* If opening the \SystemRoot link failed (usually due to wrong
* access rights), do not consider this as a fatal error, and
* use the image file path as the installation source path.
*/
if (NT_SUCCESS(Status) && RtlPrefixUnicodeString(SystemRootPath, InstallSourcePath, TRUE))
InstallSourcePath = SystemRootPath;
/*
* Retrieve the different source path components.
*/
RtlCreateUnicodeString(SourcePath, InstallSourcePath->Buffer);
/* Strip trailing directory */
/* Isolate and strip the trailing (source root) directory */
Ptr = wcsrchr(InstallSourcePath->Buffer, OBJ_NAME_PATH_SEPARATOR);
if (Ptr)
{
@@ -986,10 +1044,6 @@ InitializeSetup(
NTSTATUS Status;
/* Get the source path and source root path */
//
// NOTE: Sometimes the source path may not be in SystemRoot !!
// (and this is the case when using the 1st-stage GUI setup!)
//
Status = GetSourcePaths(&pSetupData->SourcePath,
&pSetupData->SourceRootPath,
&pSetupData->SourceRootDir);
@@ -998,12 +1052,6 @@ InitializeSetup(
DPRINT1("GetSourcePaths() failed (Status 0x%08lx)\n", Status);
return ERROR_NO_SOURCE_DRIVE;
}
/*
* Example of output:
* SourcePath: '\Device\CdRom0\I386'
* SourceRootPath: '\Device\CdRom0'
* SourceRootDir: '\I386'
*/
DPRINT1("SourcePath (1): '%wZ'\n", &pSetupData->SourcePath);
DPRINT1("SourceRootPath (1): '%wZ'\n", &pSetupData->SourceRootPath);
DPRINT1("SourceRootDir (1): '%wZ'\n", &pSetupData->SourceRootDir);

View File

@@ -170,9 +170,9 @@ InstallSetupInfFile(
NTSTATUS
GetSourcePaths(
OUT PUNICODE_STRING SourcePath,
OUT PUNICODE_STRING SourceRootPath,
OUT PUNICODE_STRING SourceRootDir);
_Out_ PUNICODE_STRING SourcePath,
_Out_ PUNICODE_STRING SourceRootPath,
_Out_ PUNICODE_STRING SourceRootDir);
ERROR_NUMBER
LoadSetupInf(

View File

@@ -3122,9 +3122,9 @@ IsSupportedActivePartition(
/* NOTE: Please keep in sync with the RegisteredFileSystems list! */
if (wcsicmp(Volume->Info.FileSystem, L"FAT") == 0 ||
wcsicmp(Volume->Info.FileSystem, L"FAT32") == 0 ||
wcsicmp(Volume->Info.FileSystem, L"FAT32") == 0)
// wcsicmp(Volume->Info.FileSystem, L"NTFS") == 0 ||
wcsicmp(Volume->Info.FileSystem, L"BTRFS") == 0)
// wcsicmp(Volume->Info.FileSystem, L"BTRFS") == 0)
{
return TRUE;
}

View File

@@ -19,7 +19,7 @@ add_rc_deps(reactos.rc ${reactos_rc_deps})
add_executable(reactos ${SOURCE} reactos.rc)
add_pch(reactos reactos.h SOURCE)
set_module_type(reactos win32gui UNICODE)
target_link_libraries(reactos uuid setuplib ext2lib vfatlib btrfslib)
target_link_libraries(reactos uuid setuplib ext2lib vfatlib)
target_link_libraries(reactos zlib_solo) ## We use USETUP's cabinet implementation
add_importlibs(reactos advapi32 gdi32 user32 comctl32 shlwapi setupapi msvcrt kernel32 ntdll)
add_cd_file(TARGET reactos DESTINATION reactos NO_CAB FOR bootcd)

View File

@@ -35,6 +35,6 @@ endif()
add_pch(usetup usetup.h SOURCE)
set_module_type(usetup nativecui)
target_link_libraries(usetup inflib setuplib zlib_solo ext2lib vfatlib btrfslib chkstk)
target_link_libraries(usetup inflib setuplib zlib_solo ext2lib vfatlib chkstk)
add_importlibs(usetup ntdll)
add_cd_file(TARGET usetup DESTINATION reactos/system32 NO_CAB NAME_ON_CD smss.exe FOR bootcd regtest)

View File

@@ -49,15 +49,21 @@ IDB_TASKBARPROP_LOCK_GROUP_NOQL BITMAP "res/bmp/150.bmp"
IDB_TASKBARPROP_NOLOCK_GROUP_NOQL BITMAP "res/bmp/151.bmp"
IDB_TASKBARPROP_LOCK_NOGROUP_NOQL BITMAP "res/bmp/152.bmp"
IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL BITMAP "res/bmp/153.bmp"
IDB_SYSTRAYPROP_SHOW_SECONDS BITMAP "res/bmp/154.bmp"
IDB_SYSTRAYPROP_HIDE_SECONDS BITMAP "res/bmp/155.bmp"
IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK BITMAP "res/bmp/154.bmp"
IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK BITMAP "res/bmp/155.bmp"
IDB_STARTMENU BITMAP "res/bmp/158.bmp"
IDB_STARTPREVIEW BITMAP "res/bmp/170.bmp"
IDB_STARTPREVIEW_CLASSIC BITMAP "res/bmp/171.bmp"
IDB_SYSTRAYPROP_HIDE_CLOCK BITMAP "res/bmp/180.bmp"
IDB_SYSTRAYPROP_HIDE_NOCLOCK BITMAP "res/bmp/181.bmp"
IDB_SYSTRAYPROP_SHOW_CLOCK BITMAP "res/bmp/182.bmp"
IDB_SYSTRAYPROP_SHOW_NOCLOCK BITMAP "res/bmp/183.bmp"
IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK BITMAP "res/bmp/180.bmp"
IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK BITMAP "res/bmp/181.bmp"
IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK BITMAP "res/bmp/182.bmp"
IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK BITMAP "res/bmp/183.bmp"
IDB_SYSTRAYPROP_SHOW_SECONDS_DESK BITMAP "res/bmp/184.bmp"
IDB_SYSTRAYPROP_HIDE_SECONDS_DESK BITMAP "res/bmp/185.bmp"
IDB_SYSTRAYPROP_HIDE_CLOCK_DESK BITMAP "res/bmp/186.bmp"
IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK BITMAP "res/bmp/187.bmp"
IDB_SYSTRAYPROP_SHOW_CLOCK_DESK BITMAP "res/bmp/188.bmp"
IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK BITMAP "res/bmp/189.bmp"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "explorer.exe.manifest"

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -39,15 +39,21 @@
#define IDB_TASKBARPROP_NOLOCK_GROUP_NOQL 151
#define IDB_TASKBARPROP_LOCK_NOGROUP_NOQL 152
#define IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL 153
#define IDB_SYSTRAYPROP_SHOW_SECONDS 154
#define IDB_SYSTRAYPROP_HIDE_SECONDS 155
#define IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK 154
#define IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK 155
#define IDB_STARTMENU 158
#define IDB_STARTPREVIEW 170
#define IDB_STARTPREVIEW_CLASSIC 171
#define IDB_SYSTRAYPROP_HIDE_CLOCK 180
#define IDB_SYSTRAYPROP_HIDE_NOCLOCK 181
#define IDB_SYSTRAYPROP_SHOW_CLOCK 182
#define IDB_SYSTRAYPROP_SHOW_NOCLOCK 183
#define IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK 180
#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK 181
#define IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK 182
#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK 183
#define IDB_SYSTRAYPROP_SHOW_SECONDS_DESK 184
#define IDB_SYSTRAYPROP_HIDE_SECONDS_DESK 185
#define IDB_SYSTRAYPROP_HIDE_CLOCK_DESK 186
#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK 187
#define IDB_SYSTRAYPROP_SHOW_CLOCK_DESK 188
#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK 189
/*******************************************************************************\
|* Menu Resources *|

View File

@@ -230,13 +230,14 @@ class CNotifySettingsPage : public CPropertyPageImpl<CNotifySettingsPage>
private:
HBITMAP m_hbmpTray;
HWND m_hwndTaskbar;
static const WORD wImageIdLookupTable[2][2][2][2];
void _UpdateDialog()
{
BOOL bShowClock = IsDlgButtonChecked(IDC_TASKBARPROP_CLOCK);
BOOL bShowSeconds = IsDlgButtonChecked(IDC_TASKBARPROP_SECONDS);
BOOL bHideInactive = IsDlgButtonChecked(IDC_TASKBARPROP_HIDEICONS);
UINT uImageId;
BOOL bShowDesktopButton = IsDlgButtonChecked(IDC_TASKBARPROP_DESKTOP);
HWND hwndCustomizeNotifyButton = GetDlgItem(IDC_TASKBARPROP_ICONCUST);
HWND hwndSeconds = GetDlgItem(IDC_TASKBARPROP_SECONDS);
@@ -246,19 +247,7 @@ private:
::EnableWindow(hwndSeconds, bShowClock);
if (!bShowSeconds)
CheckDlgButton(IDC_TASKBARPROP_SECONDS, BST_UNCHECKED);
if (bHideInactive && bShowClock && bShowSeconds)
uImageId = IDB_SYSTRAYPROP_HIDE_SECONDS;
else if (bHideInactive && bShowClock && !bShowSeconds)
uImageId = IDB_SYSTRAYPROP_HIDE_CLOCK;
else if (bHideInactive && !bShowClock)
uImageId = IDB_SYSTRAYPROP_HIDE_NOCLOCK;
else if (!bHideInactive && bShowClock && bShowSeconds)
uImageId = IDB_SYSTRAYPROP_SHOW_SECONDS;
else if (!bHideInactive && bShowClock && !bShowSeconds)
uImageId = IDB_SYSTRAYPROP_SHOW_CLOCK;
else if (!bHideInactive && !bShowClock)
uImageId = IDB_SYSTRAYPROP_SHOW_NOCLOCK;
UINT uImageId = wImageIdLookupTable[bShowClock][bShowSeconds][bHideInactive][bShowDesktopButton];
SetBitmap(hwndTrayBitmap, &m_hbmpTray, uImageId);
}
@@ -324,6 +313,30 @@ public:
}
};
const WORD CNotifySettingsPage::wImageIdLookupTable[2][2][2][2] =
{
{
{
{IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK},
{IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK}
},
{
{IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK},
{IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK}
}
},
{
{
{IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_CLOCK_DESK},
{IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_CLOCK_DESK}
},
{
{IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK, IDB_SYSTRAYPROP_SHOW_SECONDS_DESK},
{IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK, IDB_SYSTRAYPROP_HIDE_SECONDS_DESK}
}
}
};
static int CALLBACK
PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
{

View File

@@ -2454,6 +2454,9 @@ ChangePos:
CheckTrayWndPosition();
}
if (m_DesktopWnd)
::SendMessageW(m_DesktopWnd, uMsg, wParam, lParam);
if (m_StartMenuPopup && lstrcmpiW((LPCWSTR)lParam, L"TraySettings") == 0)
{
HideStartMenu();

View File

@@ -852,6 +852,105 @@ ScmDeleteServiceRecord(PSERVICE lpService)
DPRINT("Done\n");
}
DWORD
Int_EnumDependentServicesW(HKEY hServicesKey,
PSERVICE lpService,
DWORD dwServiceState,
PSERVICE *lpServices,
LPDWORD pcbBytesNeeded,
LPDWORD lpServicesReturned);
DWORD ScmDeleteService(PSERVICE lpService)
{
DWORD dwError;
DWORD pcbBytesNeeded = 0;
DWORD dwServicesReturned = 0;
HKEY hServicesKey;
ASSERT(lpService->RefCount == 0);
/* Open the Services Reg key */
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\Services",
0,
KEY_SET_VALUE | KEY_READ,
&hServicesKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT1("Failed to open services key\n");
return dwError;
}
/* Call the function with NULL, just to get bytes we need */
Int_EnumDependentServicesW(hServicesKey,
lpService,
SERVICE_ACTIVE,
NULL,
&pcbBytesNeeded,
&dwServicesReturned);
/* If pcbBytesNeeded returned a value then there are services running that are dependent on this service */
if (pcbBytesNeeded)
{
DPRINT1("Deletion failed due to running dependencies\n");
RegCloseKey(hServicesKey);
return ERROR_DEPENDENT_SERVICES_RUNNING;
}
/* There are no references and no running dependencies,
it is now safe to delete the service */
/* Delete the Service Key */
dwError = ScmDeleteRegKey(hServicesKey, lpService->lpServiceName);
RegCloseKey(hServicesKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT1("Failed to delete the Service Registry key\n");
return dwError;
}
/* Delete the Service */
ScmDeleteServiceRecord(lpService);
return ERROR_SUCCESS;
}
/*
* This function allows the caller to be sure that the service won't be freed unexpectedly.
* In order to be sure that lpService will be valid until the reference is added
* the caller needs to hold the database lock.
* A running service will keep a reference for the whole time it is not SERVICE_STOPPED.
* A service handle will also keep a reference to a service. Keeping a reference is
* really needed so that ScmControlService can be called without keeping the database locked.
* This means that eventually the correct order of operations to send a control message to
* a service looks like: lock, reference, unlock, send control, lock, dereference, unlock.
*/
DWORD
ScmReferenceService(PSERVICE lpService)
{
return InterlockedIncrement(&lpService->RefCount);
}
/* This function must be called with the database lock held exclusively as
it can end up deleting the service */
DWORD
ScmDereferenceService(PSERVICE lpService)
{
DWORD ref;
ASSERT(lpService->RefCount > 0);
ref = InterlockedDecrement(&lpService->RefCount);
if (ref == 0 && lpService->bDeleted &&
lpService->Status.dwCurrentState == SERVICE_STOPPED)
{
ScmDeleteService(lpService);
}
return ref;
}
static DWORD
CreateServiceListEntry(LPCWSTR lpServiceName,
@@ -1310,6 +1409,10 @@ ScmGetBootAndSystemDriverState(VOID)
}
/*
* ScmControlService must never be called with the database lock being held.
* The service passed must always be referenced instead.
*/
DWORD
ScmControlService(HANDLE hControlPipe,
PWSTR pServiceName,
@@ -1327,7 +1430,7 @@ ScmControlService(HANDLE hControlPipe,
BOOL bResult;
OVERLAPPED Overlapped = {0};
DPRINT("ScmControlService() called\n");
DPRINT("ScmControlService(%S, %d) called\n", pServiceName, dwControl);
/* Acquire the service control critical section, to synchronize requests */
EnterCriticalSection(&ControlServiceCriticalSection);
@@ -1364,23 +1467,24 @@ ScmControlService(HANDLE hControlPipe,
&Overlapped);
if (bResult == FALSE)
{
DPRINT("WriteFile() returned FALSE\n");
DPRINT1("WriteFile(%S, %d) returned FALSE\n", pServiceName, dwControl);
dwError = GetLastError();
if (dwError == ERROR_IO_PENDING)
{
DPRINT("dwError: ERROR_IO_PENDING\n");
DPRINT("(%S, %d) dwError: ERROR_IO_PENDING\n", pServiceName, dwControl);
dwError = WaitForSingleObject(hControlPipe,
PipeTimeout);
DPRINT("WaitForSingleObject() returned %lu\n", dwError);
DPRINT("WaitForSingleObject(%S, %d) returned %lu\n", pServiceName, dwControl, dwError);
if (dwError == WAIT_TIMEOUT)
{
DPRINT1("WaitForSingleObject(%S, %d) timed out\n", pServiceName, dwControl, dwError);
bResult = CancelIo(hControlPipe);
if (bResult == FALSE)
{
DPRINT1("CancelIo() failed (Error: %lu)\n", GetLastError());
DPRINT1("CancelIo(%S, %d) failed (Error: %lu)\n", pServiceName, dwControl, GetLastError());
}
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
@@ -1395,7 +1499,7 @@ ScmControlService(HANDLE hControlPipe,
if (bResult == FALSE)
{
dwError = GetLastError();
DPRINT1("GetOverlappedResult() failed (Error %lu)\n", dwError);
DPRINT1("GetOverlappedResult(%S, %d) failed (Error %lu)\n", pServiceName, dwControl, dwError);
goto Done;
}
@@ -1403,7 +1507,7 @@ ScmControlService(HANDLE hControlPipe,
}
else
{
DPRINT1("WriteFile() failed (Error %lu)\n", dwError);
DPRINT1("WriteFile(%S, %d) failed (Error %lu)\n", pServiceName, dwControl, dwError);
goto Done;
}
}
@@ -1418,23 +1522,24 @@ ScmControlService(HANDLE hControlPipe,
&Overlapped);
if (bResult == FALSE)
{
DPRINT("ReadFile() returned FALSE\n");
DPRINT1("ReadFile(%S, %d) returned FALSE\n", pServiceName, dwControl);
dwError = GetLastError();
if (dwError == ERROR_IO_PENDING)
{
DPRINT("dwError: ERROR_IO_PENDING\n");
DPRINT("(%S, %d) dwError: ERROR_IO_PENDING\n", pServiceName, dwControl);
dwError = WaitForSingleObject(hControlPipe,
PipeTimeout);
DPRINT("WaitForSingleObject() returned %lu\n", dwError);
DPRINT("WaitForSingleObject(%S, %d) returned %lu\n", pServiceName, dwControl, dwError);
if (dwError == WAIT_TIMEOUT)
{
DPRINT1("WaitForSingleObject(%S, %d) timed out\n", pServiceName, dwControl, dwError);
bResult = CancelIo(hControlPipe);
if (bResult == FALSE)
{
DPRINT1("CancelIo() failed (Error: %lu)\n", GetLastError());
DPRINT1("CancelIo(%S, %d) failed (Error: %lu)\n", pServiceName, dwControl, GetLastError());
}
dwError = ERROR_SERVICE_REQUEST_TIMEOUT;
@@ -1449,7 +1554,7 @@ ScmControlService(HANDLE hControlPipe,
if (bResult == FALSE)
{
dwError = GetLastError();
DPRINT1("GetOverlappedResult() failed (Error %lu)\n", dwError);
DPRINT1("GetOverlappedResult(%S, %d) failed (Error %lu)\n", pServiceName, dwControl, dwError);
goto Done;
}
@@ -1457,7 +1562,7 @@ ScmControlService(HANDLE hControlPipe,
}
else
{
DPRINT1("ReadFile() failed (Error %lu)\n", dwError);
DPRINT1("ReadFile(%S, %d) failed (Error %lu)\n", pServiceName, dwControl, dwError);
goto Done;
}
}
@@ -1475,7 +1580,7 @@ Done:
LeaveCriticalSection(&ControlServiceCriticalSection);
DPRINT("ScmControlService() done\n");
DPRINT("ScmControlService(%S, %d) done\n", pServiceName, dwControl);
return dwError;
}
@@ -2052,6 +2157,7 @@ ScmLoadService(PSERVICE Service,
{
Service->Status.dwCurrentState = SERVICE_START_PENDING;
Service->Status.dwControlsAccepted = 0;
ScmReferenceService(Service);
}
else
{

View File

@@ -777,9 +777,8 @@ ScmCanonDriverImagePath(DWORD dwStartType,
}
/* Internal recursive function */
/* Need to search for every dependency on every service */
static DWORD
/* Recursively search for every dependency on every service */
DWORD
Int_EnumDependentServicesW(HKEY hServicesKey,
PSERVICE lpService,
DWORD dwServiceState,
@@ -939,10 +938,6 @@ RCloseServiceHandle(
PMANAGER_HANDLE hManager;
PSERVICE_HANDLE hService;
PSERVICE lpService;
HKEY hServicesKey;
DWORD dwError;
DWORD pcbBytesNeeded = 0;
DWORD dwServicesReturned = 0;
DPRINT("RCloseServiceHandle() called\n");
@@ -986,68 +981,9 @@ RCloseServiceHandle(
HeapFree(GetProcessHeap(), 0, hService);
hService = NULL;
ASSERT(lpService->dwRefCount > 0);
lpService->dwRefCount--;
DPRINT("CloseServiceHandle - lpService->dwRefCount %u\n",
lpService->dwRefCount);
if (lpService->dwRefCount == 0)
{
/* If this service has been marked for deletion */
if (lpService->bDeleted &&
lpService->Status.dwCurrentState == SERVICE_STOPPED)
{
/* Open the Services Reg key */
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\Services",
0,
KEY_SET_VALUE | KEY_READ,
&hServicesKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT("Failed to open services key\n");
ScmUnlockDatabase();
return dwError;
}
/* Call the internal function with NULL, just to get bytes we need */
Int_EnumDependentServicesW(hServicesKey,
lpService,
SERVICE_ACTIVE,
NULL,
&pcbBytesNeeded,
&dwServicesReturned);
/* If pcbBytesNeeded returned a value then there are services running that are dependent on this service */
if (pcbBytesNeeded)
{
DPRINT("Deletion failed due to running dependencies\n");
RegCloseKey(hServicesKey);
ScmUnlockDatabase();
return ERROR_SUCCESS;
}
/* There are no references and no running dependencies,
it is now safe to delete the service */
/* Delete the Service Key */
dwError = ScmDeleteRegKey(hServicesKey,
lpService->lpServiceName);
RegCloseKey(hServicesKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT("Failed to Delete the Service Registry key\n");
ScmUnlockDatabase();
return dwError;
}
/* Delete the Service */
ScmDeleteServiceRecord(lpService);
}
}
DPRINT("Closing service %S with %d references\n", lpService->lpServiceName, lpService->RefCount);
ScmDereferenceService(lpService);
ScmUnlockDatabase();
@@ -1672,6 +1608,81 @@ ScmIsValidServiceState(DWORD dwCurrentState)
}
}
static
DWORD
WINAPI
ScmStopThread(PVOID pParam)
{
PSERVICE lpService = (PSERVICE)pParam;
WCHAR szLogBuffer[80];
LPCWSTR lpLogStrings[2];
/* Check if we are about to stop this service */
if (lpService->lpImage->dwImageRunCount == 1)
{
/* Stop the dispatcher thread.
* We must not send a control message while holding the database lock, otherwise it can cause timeouts
* We are sure that the service won't be deleted in the meantime because we still have a reference to it. */
DPRINT("Stopping the dispatcher thread for service %S\n", lpService->lpServiceName);
ScmControlService(lpService->lpImage->hControlPipe,
L"",
(SERVICE_STATUS_HANDLE)lpService,
SERVICE_CONTROL_STOP);
}
/* Lock the service database exclusively */
ScmLockDatabaseExclusive();
DPRINT("Service %S image count:%d\n", lpService->lpServiceName, lpService->lpImage->dwImageRunCount);
/* Decrement the image run counter */
lpService->lpImage->dwImageRunCount--;
/* If we just stopped the last running service... */
if (lpService->lpImage->dwImageRunCount == 0)
{
/* Remove the service image */
DPRINT("Removing service image for %S\n", lpService->lpServiceName);
ScmRemoveServiceImage(lpService->lpImage);
lpService->lpImage = NULL;
}
/* Report the results of the status change here */
if (lpService->Status.dwWin32ExitCode != ERROR_SUCCESS)
{
/* Log a failed service stop */
StringCchPrintfW(szLogBuffer, ARRAYSIZE(szLogBuffer),
L"%lu", lpService->Status.dwWin32ExitCode);
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_EXIT_FAILED,
EVENTLOG_ERROR_TYPE,
ARRAYSIZE(lpLogStrings),
lpLogStrings);
}
else
{
/* Log a successful service status change */
LoadStringW(GetModuleHandle(NULL), IDS_SERVICE_STOPPED, szLogBuffer, ARRAYSIZE(szLogBuffer));
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_STATUS_SUCCESS,
EVENTLOG_INFORMATION_TYPE,
ARRAYSIZE(lpLogStrings),
lpLogStrings);
}
/* Remove the reference that was added when the service started */
DPRINT("Service %S has %d references while stoping\n", lpService->lpServiceName, lpService->RefCount);
ScmDereferenceService(lpService);
/* Unlock the service database */
ScmUnlockDatabase();
return 0;
}
/* Function 7 */
DWORD
@@ -1754,58 +1765,62 @@ RSetServiceStatus(
/* Restore the previous service type */
lpService->Status.dwServiceType = dwPreviousType;
/* Dereference a stopped service */
if ((lpServiceStatus->dwServiceType & SERVICE_WIN32) &&
(lpServiceStatus->dwCurrentState == SERVICE_STOPPED))
DPRINT("Service %S changed state %d to %d\n", lpService->lpServiceName, dwPreviousState, lpServiceStatus->dwCurrentState);
if (lpServiceStatus->dwCurrentState != SERVICE_STOPPED &&
dwPreviousState == SERVICE_STOPPED)
{
/* Decrement the image run counter */
lpService->lpImage->dwImageRunCount--;
/* Keep a reference on all non stopped services */
ScmReferenceService(lpService);
DPRINT("Service %S has %d references after starting\n", lpService->lpServiceName, lpService->RefCount);
}
/* If we just stopped the last running service... */
if (lpService->lpImage->dwImageRunCount == 0)
/* Check if the service just stopped */
if (lpServiceStatus->dwCurrentState == SERVICE_STOPPED &&
dwPreviousState != SERVICE_STOPPED)
{
HANDLE hStopThread;
DWORD dwStopThreadId;
DPRINT("Service %S, currentstate: %d, prev: %d\n", lpService->lpServiceName, lpServiceStatus->dwCurrentState, dwPreviousState);
/*
* The service just changed its status to stopped.
* Create a thread that will complete the stop sequence.
* This thread will remove the reference that was added when the service started.
* This will ensure that the service will remain valid as long as this reference is still held.
*/
hStopThread = CreateThread(NULL,
0,
ScmStopThread,
(LPVOID)lpService,
0,
&dwStopThreadId);
if (hStopThread == NULL)
{
/* Stop the dispatcher thread */
ScmControlService(lpService->lpImage->hControlPipe,
L"",
(SERVICE_STATUS_HANDLE)lpService,
SERVICE_CONTROL_STOP);
/* Remove the service image */
ScmRemoveServiceImage(lpService->lpImage);
lpService->lpImage = NULL;
DPRINT1("Failed to create thread to complete service stop\n");
/* We can't leave without releasing the reference.
* We also can't remove it without holding the lock. */
ScmDereferenceService(lpService);
DPRINT1("Service %S has %d references after stop\n", lpService->lpServiceName, lpService->RefCount);
}
else
{
CloseHandle(hStopThread);
}
}
/* Unlock the service database */
ScmUnlockDatabase();
if ((lpServiceStatus->dwCurrentState == SERVICE_STOPPED) &&
(dwPreviousState != SERVICE_STOPPED) &&
(lpServiceStatus->dwWin32ExitCode != ERROR_SUCCESS))
{
/* Log a failed service stop */
StringCchPrintfW(szLogBuffer, ARRAYSIZE(szLogBuffer),
L"%lu", lpServiceStatus->dwWin32ExitCode);
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
/* Don't log any events here regarding a service stop as it can become invalid at any time */
ScmLogEvent(EVENT_SERVICE_EXIT_FAILED,
EVENTLOG_ERROR_TYPE,
2,
lpLogStrings);
}
else if (lpServiceStatus->dwCurrentState != dwPreviousState &&
(lpServiceStatus->dwCurrentState == SERVICE_STOPPED ||
lpServiceStatus->dwCurrentState == SERVICE_RUNNING ||
lpServiceStatus->dwCurrentState == SERVICE_PAUSED))
if (lpServiceStatus->dwCurrentState != dwPreviousState &&
(lpServiceStatus->dwCurrentState == SERVICE_RUNNING ||
lpServiceStatus->dwCurrentState == SERVICE_PAUSED))
{
/* Log a successful service status change */
switch(lpServiceStatus->dwCurrentState)
{
case SERVICE_STOPPED:
uID = IDS_SERVICE_STOPPED;
break;
case SERVICE_RUNNING:
uID = IDS_SERVICE_RUNNING;
break;
@@ -2217,7 +2232,7 @@ RChangeServiceConfigW(
DPRINT1("ScmDecryptPassword failed (Error %lu)\n", dwError);
goto done;
}
DPRINT1("Clear text password: %S\n", lpClearTextPassword);
DPRINT("Clear text password: %S\n", lpClearTextPassword);
/* Write the password */
dwError = ScmSetServicePassword(lpService->szServiceName,
@@ -2641,12 +2656,12 @@ RCreateServiceW(
if (dwError != ERROR_SUCCESS)
goto done;
lpService->dwRefCount = 1;
ScmReferenceService(lpService);
/* Get the service tag (if Win32) */
ScmGenerateServiceTag(lpService);
DPRINT("CreateService - lpService->dwRefCount %u\n", lpService->dwRefCount);
DPRINT("CreateService - lpService->RefCount %u\n", lpService->RefCount);
done:
/* Unlock the service database */
@@ -2981,8 +2996,8 @@ ROpenServiceW(
goto Done;
}
lpService->dwRefCount++;
DPRINT("OpenService - lpService->dwRefCount %u\n",lpService->dwRefCount);
ScmReferenceService(lpService);
DPRINT("OpenService %S - lpService->RefCount %u\n", lpService->lpServiceName, lpService->RefCount);
*lpServiceHandle = (SC_RPC_HANDLE)hHandle;
DPRINT("*hService = %p\n", *lpServiceHandle);
@@ -6725,7 +6740,7 @@ RI_ScValidatePnPService(
hManager = ScmGetServiceManagerFromHandle(hSCManager);
if (hManager == NULL)
{
DPRINT1("Invalid handle!\n");
DPRINT1("Invalid handle\n");
return ERROR_INVALID_HANDLE;
}
@@ -6735,7 +6750,7 @@ RI_ScValidatePnPService(
if (!RtlAreAllAccessesGranted(hManager->Handle.DesiredAccess,
SC_MANAGER_CONNECT))
{
DPRINT1("No SC_MANAGER_CONNECT access!\n");
DPRINT1("No SC_MANAGER_CONNECT access\n");
return ERROR_ACCESS_DENIED;
}

View File

@@ -65,7 +65,7 @@ typedef struct _SERVICE
PSERVICE_IMAGE lpImage;
BOOL bDeleted;
DWORD dwResumeCount;
DWORD dwRefCount;
LONG RefCount;
SERVICE_STATUS Status;
DWORD dwStartType;
@@ -186,6 +186,9 @@ DWORD ScmStartService(PSERVICE Service,
DWORD argc,
LPWSTR *argv);
DWORD ScmReferenceService(PSERVICE lpService);
DWORD ScmDereferenceService(PSERVICE lpService);
VOID ScmRemoveServiceImage(PSERVICE_IMAGE pServiceImage);
PSERVICE ScmGetServiceEntryByName(LPCWSTR lpServiceName);
PSERVICE ScmGetServiceEntryByDisplayName(LPCWSTR lpDisplayName);

View File

@@ -1,21 +1,21 @@
## efisys.bin
# EFI platform ID, used in environ/CMakelists.txt for bootmgfw filename naming also.
if(ARCH STREQUAL "amd64")
set(EFI_PLATFORM_ID "x64")
elseif(ARCH STREQUAL "i386")
if(NOT (SARCH STREQUAL "pc98" OR SARCH STREQUAL "xbox"))
set(EFI_PLATFORM_ID "ia32")
endif()
elseif(ARCH STREQUAL "ia64")
set(EFI_PLATFORM_ID "ia64")
elseif(ARCH STREQUAL "arm")
set(EFI_PLATFORM_ID "arm")
elseif(ARCH STREQUAL "arm64")
set(EFI_PLATFORM_ID "aa64")
else()
message(FATAL_ERROR "Unknown ARCH '" ${ARCH} "', cannot generate a valid UEFI boot filename.")
endif()
# if(ARCH STREQUAL "amd64")
# set(EFI_PLATFORM_ID "x64")
# elseif(ARCH STREQUAL "i386")
# if(NOT (SARCH STREQUAL "pc98" OR SARCH STREQUAL "xbox"))
# set(EFI_PLATFORM_ID "ia32")
# endif()
# elseif(ARCH STREQUAL "ia64")
# set(EFI_PLATFORM_ID "ia64")
# elseif(ARCH STREQUAL "arm")
# set(EFI_PLATFORM_ID "arm")
# elseif(ARCH STREQUAL "arm64")
# set(EFI_PLATFORM_ID "aa64")
# else()
# message(FATAL_ERROR "Unknown ARCH '" ${ARCH} "', cannot generate a valid UEFI boot filename.")
# endif()
if(DEFINED EFI_PLATFORM_ID)
add_custom_target(efisys

View File

@@ -59,16 +59,12 @@ LocaleID = 409
; 1: ReactOS Workstation
ProductOption = 0
; enable this section to automatically launch programs
; Enable this section to automatically launch programs
; after 3rd boot
;
; [GuiRunOnce]
; %SystemRoot%\system32\cmd.exe
; Enable the next line (+ the GuiRunOnce section) to enable the lautus theme
; "rundll32.exe shell32.dll,Control_RunDLL desk.cpl desk,@Appearance /Action:ActivateMSTheme /file:%SYSTEMROOT%\Resources\themes\lautus\lautus.msstyles"
; enable this section to change resolution / bpp
; Enable this section to change resolution / bpp
; setting a value to 0 or skipping it will leave it unchanged
; [Display]
; BitsPerPel = 32
@@ -80,3 +76,7 @@ ProductOption = 0
;[Env]
;WINETEST_PLATFORM=reactos
; Enable this section to enable the default ReactOS theme
[Shell]
DefaultThemesOff = no
CustomDefaultThemeFile = "%WINDIR%\Resources\Themes\Mizu\mizu.msstyles"

View File

@@ -64,9 +64,9 @@ HKCU,"Control Panel\Desktop","ScreenSaverIsSecure",2,"1"
HKCU,"Control Panel\Desktop","ScreenSaveTimeOut",2,"600"
HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",2,"20000"
HKCU,"Control Panel\Desktop","Pattern",2,"(None)"
HKCU,"Control Panel\Desktop","Wallpaper",0x00000002,""
HKCU,"Control Panel\Desktop","Wallpaper",0x00000002,"%SystemRoot%\Web\Wallpaper\Mizu (4x3).bmp"
HKCU,"Control Panel\Desktop","TileWallpaper",2,"0"
HKCU,"Control Panel\Desktop","WallpaperStyle",2,"2"
HKCU,"Control Panel\Desktop","WallpaperStyle",2,"10"
HKCU,"Control Panel\Desktop","FontSmoothing",2,"0"
HKCU,"Control Panel\Desktop","FontSmoothingOrientation",0x00010003,0x00000001
HKCU,"Control Panel\Desktop","FontSmoothingType",0x00010003,0x00000001

View File

@@ -1938,6 +1938,11 @@ HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows","USERProcessHandleQu
; App Compat -- Enable on ReactOS
;HKLM,"SOFTWARE\Policies\Microsoft\Windows\AppCompat","DisableEngine",0x00010003, 0x00000001
; App Compat -- for official Releases we do still disable the new heuristic introduced in master 0.4.13-dev-986-g029b8f2.
; This will not automatically expose apisets based on apps manifests as we have too many gaps still in the apisets.
; Adventurous users can set this to 0 to expose more Vista+ stuff, in return can OPT-OUT per app via shim "IgnoreManifestCompatVersion".
HKLM,"SOFTWARE\Policies\Microsoft\Windows\AppCompat","DisableCompatGuidDetection",0x00010003, 0x00000001
;-------------------------------- STRINGS -------------------------------
[Strings]

View File

@@ -1190,25 +1190,27 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Language","InstallLanguage",0x0000000
; If you add/uncomment an entry here, please also add the appropriate Language
; in the previous section.
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale",,0x00000012
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000401",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000801",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000c01",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001001",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001401",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001801",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001c01",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002001",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002401",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002801",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002c01",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003001",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003401",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003801",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003c01",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00004001",0x00000000,""
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000401",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000801",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000c01",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001001",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001401",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001801",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001c01",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002001",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002401",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002801",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00002c01",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003001",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003401",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003801",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00003c01",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00004001",0x00000000,"d"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000402",0x00000000,"5"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000403",0x00000000,"1"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000404",0x00000000,"9"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000c04",0x00000000,"9"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00001004",0x00000000,"a"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000804",0x00000000,"a"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000405",0x00000000,"2"
HKLM,"SYSTEM\CurrentControlSet\Control\Nls\Locale","00000406",0x00000000,"1"

View File

@@ -11,3 +11,7 @@ UnattendSetupEnabled = no
; see hivesys.inf for available languages
LocaleID = 409
; Enable this section to enable the default ReactOS theme
[Shell]
DefaultThemesOff = no
CustomDefaultThemeFile = "%WINDIR%\Resources\Themes\Mizu\mizu.msstyles"

View File

@@ -80,6 +80,7 @@ Signature = "$Windows NT$"
56 = winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.2600.2982_none_deadbeef
57 = winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef
58 = winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_deadbeef
59 = winsxs\x86_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef
60 = bin\suppl
61 = winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.14393.0_none_deadbeef
62 = Resources\Themes\Modern
@@ -90,16 +91,19 @@ Signature = "$Windows NT$"
67 = winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.2600.2982_none_deadbeef
68 = winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef
69 = winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_deadbeef
70 = winsxs\amd64_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef
71 = winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.14393.0_none_deadbeef
72 = winsxs\arm_microsoft.windows.common-controls_6595b64144ccf1df_5.82.2600.2982_none_deadbeef
73 = winsxs\arm_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef
74 = winsxs\arm_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_deadbeef
75 = winsxs\arm_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef
76 = winsxs\arm_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.14393.0_none_deadbeef
77 = winsxs\arm64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.2600.2982_none_deadbeef
78 = winsxs\arm64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef
79 = winsxs\arm64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_deadbeef
80 = winsxs\arm64_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef
81 = winsxs\arm64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.14393.0_none_deadbeef
.InfEnd

View File

@@ -1,5 +1,6 @@
add_subdirectory(3rdparty)
add_subdirectory(apisets)
add_subdirectory(appcompat)
add_subdirectory(cpl)
add_subdirectory(directx)

256
dll/apisets/CMakeLists.txt Normal file
View File

@@ -0,0 +1,256 @@
# This file is generated by update.py, please edit CMakeLists.txt.in instead
# Generated from wine-3.20-144-g2ef62f9085
project(apisets)
function (add_apiset apiset_name baseaddress)
spec2def(${apiset_name}.dll ${apiset_name}.spec ADD_IMPORTLIB)
add_definitions(
-D_CTYPE_DISABLE_MACROS
-D_NO_INLINING
-D__CRT__NO_INLINE
-D__STDC_WANT_SECURE_LIB__=0
-D_INC_STRING
-D_CTYPE_DEFINED
-D_WCTYPE_DEFINED
-D_CRT_ERRNO_DEFINED)
add_library(${apiset_name} MODULE
${CMAKE_CURRENT_BINARY_DIR}/${apiset_name}_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/${apiset_name}.def)
add_dependencies(${apiset_name} xdk)
set_module_type(${apiset_name} module UNICODE IMAGEBASE ${baseaddress})
if(NOT MSVC)
target_compile_options(${apiset_name} PRIVATE -fno-builtin)
else()
target_compile_options(${apiset_name} PRIVATE /wd4026 /wd4273 /Oi-)
endif()
add_importlibs(${apiset_name} ${ARGN} ntdll)
add_cd_file(TARGET ${apiset_name} DESTINATION reactos/winsxs/${WINARCH}_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef FOR all)
endfunction()
add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/${WINARCH}_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef.manifest DESTINATION reactos/winsxs/manifests FOR all)
# Apisets will be appended
add_apiset(api-ms-win-appmodel-identity-l1-1-0 0x60000000 )
add_apiset(api-ms-win-appmodel-runtime-l1-1-1 0x60020000 kernel32)
add_apiset(api-ms-win-appmodel-runtime-l1-1-2 0x60040000 )
add_apiset(api-ms-win-core-apiquery-l1-1-0 0x60060000 )
add_apiset(api-ms-win-core-appcompat-l1-1-1 0x60070000 kernel32)
add_apiset(api-ms-win-core-appinit-l1-1-0 0x60080000 )
add_apiset(api-ms-win-core-atoms-l1-1-0 0x60090000 kernel32)
add_apiset(api-ms-win-core-bem-l1-1-0 0x600a0000 )
add_apiset(api-ms-win-core-com-l1-1-0 0x600b0000 ole32)
add_apiset(api-ms-win-core-com-l1-1-1 0x600c0000 ole32)
add_apiset(api-ms-win-core-com-private-l1-1-0 0x600e0000 ole32)
add_apiset(api-ms-win-core-comm-l1-1-0 0x60130000 kernel32)
add_apiset(api-ms-win-core-console-l1-1-0 0x60140000 kernel32)
add_apiset(api-ms-win-core-console-l2-1-0 0x60150000 kernel32)
add_apiset(api-ms-win-core-crt-l1-1-0 0x60160000 msvcrt)
add_apiset(api-ms-win-core-crt-l2-1-0 0x60190000 msvcrt)
add_apiset(api-ms-win-core-datetime-l1-1-0 0x601a0000 kernel32)
add_apiset(api-ms-win-core-datetime-l1-1-1 0x601b0000 kernel32)
add_apiset(api-ms-win-core-debug-l1-1-0 0x601c0000 kernel32)
add_apiset(api-ms-win-core-debug-l1-1-1 0x601d0000 kernel32)
add_apiset(api-ms-win-core-delayload-l1-1-0 0x601e0000 kernel32)
add_apiset(api-ms-win-core-delayload-l1-1-1 0x601f0000 kernel32)
add_apiset(api-ms-win-core-errorhandling-l1-1-0 0x60200000 kernel32)
add_apiset(api-ms-win-core-errorhandling-l1-1-1 0x60210000 kernel32)
add_apiset(api-ms-win-core-errorhandling-l1-1-2 0x60220000 kernel32)
add_apiset(api-ms-win-core-errorhandling-l1-1-3 0x60230000 kernel32)
add_apiset(api-ms-win-core-fibers-l1-1-0 0x60240000 kernel32)
add_apiset(api-ms-win-core-fibers-l1-1-1 0x60250000 kernel32)
add_apiset(api-ms-win-core-file-l1-1-0 0x60260000 kernel32)
add_apiset(api-ms-win-core-file-l1-2-0 0x60270000 kernel32)
add_apiset(api-ms-win-core-file-l1-2-1 0x60280000 kernel32)
add_apiset(api-ms-win-core-file-l1-2-2 0x60290000 kernel32)
add_apiset(api-ms-win-core-file-l2-1-0 0x602a0000 kernel32)
add_apiset(api-ms-win-core-file-l2-1-1 0x602b0000 kernel32)
add_apiset(api-ms-win-core-file-l2-1-2 0x602c0000 kernel32)
add_apiset(api-ms-win-core-handle-l1-1-0 0x602d0000 kernel32)
add_apiset(api-ms-win-core-heap-l1-1-0 0x602e0000 kernel32)
add_apiset(api-ms-win-core-heap-l1-2-0 0x602f0000 kernel32)
add_apiset(api-ms-win-core-heap-l2-1-0 0x60300000 kernel32)
add_apiset(api-ms-win-core-heap-obsolete-l1-1-0 0x60310000 kernel32)
add_apiset(api-ms-win-core-interlocked-l1-1-0 0x60320000 kernel32)
add_apiset(api-ms-win-core-interlocked-l1-2-0 0x60330000 kernel32)
add_apiset(api-ms-win-core-io-l1-1-0 0x60340000 kernel32)
add_apiset(api-ms-win-core-io-l1-1-1 0x60350000 kernel32)
add_apiset(api-ms-win-core-job-l1-1-0 0x60360000 kernel32)
add_apiset(api-ms-win-core-job-l2-1-0 0x60370000 kernel32)
add_apiset(api-ms-win-core-kernel32-legacy-l1-1-0 0x60380000 kernel32)
add_apiset(api-ms-win-core-kernel32-legacy-l1-1-1 0x60390000 kernel32)
add_apiset(api-ms-win-core-kernel32-private-l1-1-1 0x603a0000 kernel32)
add_apiset(api-ms-win-core-largeinteger-l1-1-0 0x603b0000 kernel32)
add_apiset(api-ms-win-core-libraryloader-l1-1-0 0x603c0000 kernel32 user32)
add_apiset(api-ms-win-core-libraryloader-l1-1-1 0x603d0000 kernel32 user32)
add_apiset(api-ms-win-core-libraryloader-l1-2-0 0x603e0000 kernel32 user32)
add_apiset(api-ms-win-core-libraryloader-l1-2-1 0x603f0000 kernel32)
add_apiset(api-ms-win-core-libraryloader-l1-2-2 0x60400000 kernel32)
add_apiset(api-ms-win-core-localization-l1-1-0 0x60410000 kernel32)
add_apiset(api-ms-win-core-localization-l1-2-0 0x60420000 kernel32)
add_apiset(api-ms-win-core-localization-l1-2-1 0x60430000 kernel32)
add_apiset(api-ms-win-core-localization-l2-1-0 0x60440000 kernel32)
add_apiset(api-ms-win-core-localization-obsolete-l1-1-0 0x60450000 kernel32)
add_apiset(api-ms-win-core-localization-obsolete-l1-2-0 0x60460000 kernel32)
add_apiset(api-ms-win-core-localization-obsolete-l1-3-0 0x60470000 kernel32)
add_apiset(api-ms-win-core-localization-private-l1-1-0 0x60480000 kernel32)
add_apiset(api-ms-win-core-localregistry-l1-1-0 0x60490000 advapi32 advapi32_vista)
add_apiset(api-ms-win-core-memory-l1-1-0 0x604a0000 kernel32)
add_apiset(api-ms-win-core-memory-l1-1-1 0x604b0000 kernel32)
add_apiset(api-ms-win-core-memory-l1-1-2 0x604c0000 kernel32)
add_apiset(api-ms-win-core-misc-l1-1-0 0x604d0000 kernel32)
add_apiset(api-ms-win-core-namedpipe-l1-1-0 0x604e0000 kernel32 advapi32)
add_apiset(api-ms-win-core-namedpipe-l1-2-0 0x604f0000 kernel32 advapi32)
add_apiset(api-ms-win-core-namespace-l1-1-0 0x60500000 kernel32)
add_apiset(api-ms-win-core-normalization-l1-1-0 0x60510000 kernel32)
add_apiset(api-ms-win-core-path-l1-1-0 0x60520000 )
add_apiset(api-ms-win-core-privateprofile-l1-1-1 0x60540000 kernel32)
add_apiset(api-ms-win-core-processenvironment-l1-1-0 0x60550000 kernel32)
add_apiset(api-ms-win-core-processenvironment-l1-2-0 0x60560000 kernel32)
add_apiset(api-ms-win-core-processthreads-l1-1-0 0x60570000 kernel32 advapi32)
add_apiset(api-ms-win-core-processthreads-l1-1-1 0x60580000 kernel32 advapi32)
add_apiset(api-ms-win-core-processthreads-l1-1-2 0x60590000 kernel32 advapi32)
add_apiset(api-ms-win-core-processthreads-l1-1-3 0x605a0000 kernel32)
add_apiset(api-ms-win-core-processtopology-obsolete-l1-1-0 0x605b0000 kernel32)
add_apiset(api-ms-win-core-profile-l1-1-0 0x605c0000 kernel32)
add_apiset(api-ms-win-core-psapi-ansi-l1-1-0 0x605d0000 kernel32)
add_apiset(api-ms-win-core-psapi-l1-1-0 0x605e0000 kernel32)
add_apiset(api-ms-win-core-psapi-obsolete-l1-1-0 0x605f0000 )
add_apiset(api-ms-win-core-quirks-l1-1-0 0x60600000 )
add_apiset(api-ms-win-core-realtime-l1-1-0 0x60610000 kernel32)
add_apiset(api-ms-win-core-registry-l1-1-0 0x60620000 advapi32 advapi32_vista)
add_apiset(api-ms-win-core-registry-l2-1-0 0x60630000 advapi32 advapi32_vista)
add_apiset(api-ms-win-core-registryuserspecific-l1-1-0 0x60640000 shlwapi)
add_apiset(api-ms-win-core-rtlsupport-l1-1-0 0x60650000 kernel32)
add_apiset(api-ms-win-core-rtlsupport-l1-2-0 0x60660000 )
add_apiset(api-ms-win-core-shlwapi-legacy-l1-1-0 0x60670000 shlwapi)
add_apiset(api-ms-win-core-shlwapi-obsolete-l1-1-0 0x60680000 shlwapi)
add_apiset(api-ms-win-core-shlwapi-obsolete-l1-2-0 0x60690000 shlwapi)
add_apiset(api-ms-win-core-shutdown-l1-1-0 0x606a0000 advapi32)
add_apiset(api-ms-win-core-sidebyside-l1-1-0 0x606b0000 kernel32)
add_apiset(api-ms-win-core-string-l1-1-0 0x606c0000 kernel32)
add_apiset(api-ms-win-core-string-l2-1-0 0x606d0000 user32)
add_apiset(api-ms-win-core-string-obsolete-l1-1-0 0x606e0000 kernel32)
add_apiset(api-ms-win-core-stringansi-l1-1-0 0x606f0000 user32)
add_apiset(api-ms-win-core-stringloader-l1-1-1 0x60700000 user32)
add_apiset(api-ms-win-core-synch-ansi-l1-1-0 0x60710000 kernel32)
add_apiset(api-ms-win-core-synch-l1-1-0 0x60720000 kernel32)
add_apiset(api-ms-win-core-synch-l1-2-0 0x60730000 kernel32)
add_apiset(api-ms-win-core-synch-l1-2-1 0x60740000 kernel32)
add_apiset(api-ms-win-core-sysinfo-l1-1-0 0x60750000 kernel32)
add_apiset(api-ms-win-core-sysinfo-l1-2-0 0x60760000 kernel32)
add_apiset(api-ms-win-core-sysinfo-l1-2-1 0x60770000 kernel32)
add_apiset(api-ms-win-core-threadpool-l1-1-0 0x60780000 kernel32)
add_apiset(api-ms-win-core-threadpool-l1-2-0 0x60790000 kernel32)
add_apiset(api-ms-win-core-threadpool-legacy-l1-1-0 0x607a0000 kernel32)
add_apiset(api-ms-win-core-threadpool-private-l1-1-0 0x607b0000 kernel32)
add_apiset(api-ms-win-core-timezone-l1-1-0 0x607c0000 kernel32)
add_apiset(api-ms-win-core-toolhelp-l1-1-0 0x607d0000 kernel32)
add_apiset(api-ms-win-core-url-l1-1-0 0x607e0000 shlwapi)
add_apiset(api-ms-win-core-util-l1-1-0 0x607f0000 kernel32)
add_apiset(api-ms-win-core-version-l1-1-0 0x60800000 version)
add_apiset(api-ms-win-core-version-l1-1-1 0x60810000 version)
add_apiset(api-ms-win-core-version-private-l1-1-0 0x60820000 )
add_apiset(api-ms-win-core-versionansi-l1-1-0 0x60830000 version)
add_apiset(api-ms-win-core-windowserrorreporting-l1-1-0 0x60840000 kernel32)
add_apiset(api-ms-win-core-winrt-error-l1-1-0 0x60850000 )
add_apiset(api-ms-win-core-winrt-error-l1-1-1 0x60860000 )
add_apiset(api-ms-win-core-winrt-errorprivate-l1-1-1 0x60880000 )
add_apiset(api-ms-win-core-winrt-l1-1-0 0x60890000 )
add_apiset(api-ms-win-core-winrt-registration-l1-1-0 0x608a0000 )
add_apiset(api-ms-win-core-winrt-roparameterizediid-l1-1-0 0x608b0000 )
add_apiset(api-ms-win-core-winrt-string-l1-1-0 0x608c0000 )
add_apiset(api-ms-win-core-winrt-string-l1-1-1 0x608e0000 )
add_apiset(api-ms-win-core-wow64-l1-1-0 0x60900000 kernel32)
add_apiset(api-ms-win-core-wow64-l1-1-1 0x60910000 kernel32)
add_apiset(api-ms-win-core-xstate-l1-1-0 0x60920000 )
add_apiset(api-ms-win-core-xstate-l2-1-0 0x60930000 )
add_apiset(api-ms-win-crt-conio-l1-1-0 0x60940000 msvcrt)
add_apiset(api-ms-win-crt-convert-l1-1-0 0x60960000 msvcrt)
add_apiset(api-ms-win-crt-environment-l1-1-0 0x609c0000 msvcrt)
add_apiset(api-ms-win-crt-filesystem-l1-1-0 0x609d0000 msvcrt)
add_apiset(api-ms-win-crt-heap-l1-1-0 0x60a00000 msvcrt)
add_apiset(api-ms-win-crt-locale-l1-1-0 0x60a10000 msvcrt)
add_apiset(api-ms-win-crt-math-l1-1-0 0x60a20000 msvcrt)
add_apiset(api-ms-win-crt-multibyte-l1-1-0 0x60b30000 msvcrt)
add_apiset(api-ms-win-crt-private-l1-1-0 0x60bb0000 msvcrt kernel32)
add_apiset(api-ms-win-crt-process-l1-1-0 0x61020000 msvcrt)
add_apiset(api-ms-win-crt-runtime-l1-1-0 0x61030000 msvcrt)
add_apiset(api-ms-win-crt-stdio-l1-1-0 0x61070000 msvcrt)
add_apiset(api-ms-win-crt-string-l1-1-0 0x610c0000 msvcrt)
add_apiset(api-ms-win-crt-time-l1-1-0 0x61120000 msvcrt)
add_apiset(api-ms-win-crt-utility-l1-1-0 0x61150000 msvcrt)
add_apiset(api-ms-win-devices-config-l1-1-0 0x61160000 setupapi)
add_apiset(api-ms-win-devices-config-l1-1-1 0x61170000 setupapi)
add_apiset(api-ms-win-devices-query-l1-1-1 0x61180000 )
add_apiset(api-ms-win-downlevel-advapi32-l1-1-0 0x61190000 advapi32 advapi32_vista)
add_apiset(api-ms-win-downlevel-advapi32-l2-1-0 0x611b0000 advapi32)
add_apiset(api-ms-win-downlevel-normaliz-l1-1-0 0x611c0000 kernel32)
add_apiset(api-ms-win-downlevel-ole32-l1-1-0 0x611d0000 ole32)
add_apiset(api-ms-win-downlevel-shell32-l1-1-0 0x611e0000 shell32)
add_apiset(api-ms-win-downlevel-shlwapi-l1-1-0 0x611f0000 shlwapi)
add_apiset(api-ms-win-downlevel-shlwapi-l2-1-0 0x61200000 shlwapi)
add_apiset(api-ms-win-downlevel-user32-l1-1-0 0x61210000 user32)
add_apiset(api-ms-win-downlevel-version-l1-1-0 0x61220000 version)
add_apiset(api-ms-win-dx-d3dkmt-l1-1-0 0x61230000 gdi32_vista gdi32)
add_apiset(api-ms-win-eventing-classicprovider-l1-1-0 0x61290000 advapi32)
add_apiset(api-ms-win-eventing-consumer-l1-1-0 0x612a0000 advapi32)
add_apiset(api-ms-win-eventing-controller-l1-1-0 0x612b0000 advapi32)
add_apiset(api-ms-win-eventing-legacy-l1-1-0 0x612c0000 advapi32)
add_apiset(api-ms-win-eventing-provider-l1-1-0 0x612d0000 )
add_apiset(api-ms-win-eventlog-legacy-l1-1-0 0x612e0000 advapi32)
add_apiset(api-ms-win-gdi-dpiinfo-l1-1-0 0x612f0000 )
add_apiset(api-ms-win-mm-joystick-l1-1-0 0x61300000 winmm)
add_apiset(api-ms-win-mm-misc-l1-1-1 0x61310000 winmm)
add_apiset(api-ms-win-mm-mme-l1-1-0 0x61320000 winmm)
add_apiset(api-ms-win-mm-time-l1-1-0 0x61330000 winmm)
add_apiset(api-ms-win-ntuser-dc-access-l1-1-0 0x61340000 user32)
add_apiset(api-ms-win-ntuser-rectangle-l1-1-0 0x61350000 user32)
add_apiset(api-ms-win-ntuser-sysparams-l1-1-0 0x61360000 user32)
add_apiset(api-ms-win-perf-legacy-l1-1-0 0x61370000 )
add_apiset(api-ms-win-power-base-l1-1-0 0x61380000 powrprof)
add_apiset(api-ms-win-power-setting-l1-1-0 0x61390000 powrprof)
add_apiset(api-ms-win-rtcore-ntuser-draw-l1-1-0 0x613a0000 user32)
add_apiset(api-ms-win-rtcore-ntuser-private-l1-1-0 0x613b0000 user32)
add_apiset(api-ms-win-rtcore-ntuser-private-l1-1-4 0x613c0000 )
add_apiset(api-ms-win-rtcore-ntuser-window-l1-1-0 0x613d0000 user32)
add_apiset(api-ms-win-rtcore-ntuser-winevent-l1-1-0 0x613e0000 user32)
add_apiset(api-ms-win-rtcore-ntuser-wmpointer-l1-1-0 0x613f0000 )
add_apiset(api-ms-win-rtcore-ntuser-wmpointer-l1-1-3 0x61410000 )
add_apiset(api-ms-win-security-activedirectoryclient-l1-1-0 0x61420000 ntdsapi)
add_apiset(api-ms-win-security-audit-l1-1-1 0x61430000 )
add_apiset(api-ms-win-security-base-l1-1-0 0x61440000 advapi32)
add_apiset(api-ms-win-security-base-l1-2-0 0x61450000 advapi32)
add_apiset(api-ms-win-security-base-private-l1-1-1 0x61460000 advapi32)
add_apiset(api-ms-win-security-credentials-l1-1-0 0x61470000 advapi32)
add_apiset(api-ms-win-security-cryptoapi-l1-1-0 0x61480000 advapi32)
add_apiset(api-ms-win-security-grouppolicy-l1-1-0 0x61490000 userenv)
add_apiset(api-ms-win-security-lsalookup-l1-1-0 0x614b0000 )
add_apiset(api-ms-win-security-lsalookup-l1-1-1 0x614c0000 )
add_apiset(api-ms-win-security-lsalookup-l2-1-0 0x614d0000 advapi32)
add_apiset(api-ms-win-security-lsalookup-l2-1-1 0x614e0000 advapi32)
add_apiset(api-ms-win-security-lsapolicy-l1-1-0 0x614f0000 advapi32)
add_apiset(api-ms-win-security-provider-l1-1-0 0x61500000 advapi32)
add_apiset(api-ms-win-security-sddl-l1-1-0 0x61510000 advapi32)
add_apiset(api-ms-win-security-systemfunctions-l1-1-0 0x61520000 advapi32)
add_apiset(api-ms-win-service-core-l1-1-0 0x61530000 advapi32)
add_apiset(api-ms-win-service-core-l1-1-1 0x61540000 advapi32)
add_apiset(api-ms-win-service-management-l1-1-0 0x61550000 advapi32)
add_apiset(api-ms-win-service-management-l2-1-0 0x61560000 advapi32)
add_apiset(api-ms-win-service-private-l1-1-1 0x61570000 advapi32)
add_apiset(api-ms-win-service-winsvc-l1-1-0 0x61580000 advapi32)
add_apiset(api-ms-win-service-winsvc-l1-2-0 0x61590000 advapi32)
add_apiset(api-ms-win-shcore-obsolete-l1-1-0 0x615a0000 shlwapi shell32)
add_apiset(api-ms-win-shcore-scaling-l1-1-1 0x615b0000 )
add_apiset(api-ms-win-shcore-stream-l1-1-0 0x615c0000 shlwapi)
add_apiset(api-ms-win-shcore-thread-l1-1-0 0x615d0000 shlwapi)
add_apiset(api-ms-win-shell-shellcom-l1-1-0 0x615e0000 shell32)
add_apiset(api-ms-win-shell-shellfolders-l1-1-0 0x615f0000 shell32)

View File

@@ -0,0 +1,41 @@
# This file is generated by update.py, please edit CMakeLists.txt.in instead
# Generated from %WINE_GIT_VERSION%
project(apisets)
function (add_apiset apiset_name baseaddress)
spec2def(${apiset_name}.dll ${apiset_name}.spec ADD_IMPORTLIB)
add_definitions(
-D_CTYPE_DISABLE_MACROS
-D_NO_INLINING
-D__CRT__NO_INLINE
-D__STDC_WANT_SECURE_LIB__=0
-D_INC_STRING
-D_CTYPE_DEFINED
-D_WCTYPE_DEFINED
-D_CRT_ERRNO_DEFINED)
add_library(${apiset_name} MODULE
${CMAKE_CURRENT_BINARY_DIR}/${apiset_name}_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/${apiset_name}.def)
add_dependencies(${apiset_name} xdk)
set_module_type(${apiset_name} module UNICODE IMAGEBASE ${baseaddress})
if(NOT MSVC)
target_compile_options(${apiset_name} PRIVATE -fno-builtin)
else()
target_compile_options(${apiset_name} PRIVATE /wd4026 /wd4273 /Oi-)
endif()
add_importlibs(${apiset_name} ${ARGN} ntdll)
add_cd_file(TARGET ${apiset_name} DESTINATION reactos/winsxs/${WINARCH}_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef FOR all)
endfunction()
add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/${WINARCH}_reactos.apisets_6595b64144ccf1df_1.0.0.0_none_deadbeef.manifest DESTINATION reactos/winsxs/manifests FOR all)
# Apisets will be appended

View File

@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Generated from wine-3.20-144-g2ef62f9085 -->
<assemblyIdentity type="win32" name="ReactOS.Apisets" version="1.0.0.0" publicKeyToken="6595b64144ccf1df"/>
<file name="api-ms-win-appmodel-identity-l1-1-0.dll"/>
<file name="api-ms-win-appmodel-runtime-l1-1-1.dll"/>
<file name="api-ms-win-appmodel-runtime-l1-1-2.dll"/>
<file name="api-ms-win-core-apiquery-l1-1-0.dll"/>
<file name="api-ms-win-core-appcompat-l1-1-1.dll"/>
<file name="api-ms-win-core-appinit-l1-1-0.dll"/>
<file name="api-ms-win-core-atoms-l1-1-0.dll"/>
<file name="api-ms-win-core-bem-l1-1-0.dll"/>
<file name="api-ms-win-core-com-l1-1-0.dll"/>
<file name="api-ms-win-core-com-l1-1-1.dll"/>
<file name="api-ms-win-core-com-private-l1-1-0.dll"/>
<file name="api-ms-win-core-comm-l1-1-0.dll"/>
<file name="api-ms-win-core-console-l1-1-0.dll"/>
<file name="api-ms-win-core-console-l2-1-0.dll"/>
<file name="api-ms-win-core-crt-l1-1-0.dll"/>
<file name="api-ms-win-core-crt-l2-1-0.dll"/>
<file name="api-ms-win-core-datetime-l1-1-0.dll"/>
<file name="api-ms-win-core-datetime-l1-1-1.dll"/>
<file name="api-ms-win-core-debug-l1-1-0.dll"/>
<file name="api-ms-win-core-debug-l1-1-1.dll"/>
<file name="api-ms-win-core-delayload-l1-1-0.dll"/>
<file name="api-ms-win-core-delayload-l1-1-1.dll"/>
<file name="api-ms-win-core-errorhandling-l1-1-0.dll"/>
<file name="api-ms-win-core-errorhandling-l1-1-1.dll"/>
<file name="api-ms-win-core-errorhandling-l1-1-2.dll"/>
<file name="api-ms-win-core-errorhandling-l1-1-3.dll"/>
<file name="api-ms-win-core-fibers-l1-1-0.dll"/>
<file name="api-ms-win-core-fibers-l1-1-1.dll"/>
<file name="api-ms-win-core-file-l1-1-0.dll"/>
<file name="api-ms-win-core-file-l1-2-0.dll"/>
<file name="api-ms-win-core-file-l1-2-1.dll"/>
<file name="api-ms-win-core-file-l1-2-2.dll"/>
<file name="api-ms-win-core-file-l2-1-0.dll"/>
<file name="api-ms-win-core-file-l2-1-1.dll"/>
<file name="api-ms-win-core-file-l2-1-2.dll"/>
<file name="api-ms-win-core-handle-l1-1-0.dll"/>
<file name="api-ms-win-core-heap-l1-1-0.dll"/>
<file name="api-ms-win-core-heap-l1-2-0.dll"/>
<file name="api-ms-win-core-heap-l2-1-0.dll"/>
<file name="api-ms-win-core-heap-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-interlocked-l1-1-0.dll"/>
<file name="api-ms-win-core-interlocked-l1-2-0.dll"/>
<file name="api-ms-win-core-io-l1-1-0.dll"/>
<file name="api-ms-win-core-io-l1-1-1.dll"/>
<file name="api-ms-win-core-job-l1-1-0.dll"/>
<file name="api-ms-win-core-job-l2-1-0.dll"/>
<file name="api-ms-win-core-kernel32-legacy-l1-1-0.dll"/>
<file name="api-ms-win-core-kernel32-legacy-l1-1-1.dll"/>
<file name="api-ms-win-core-kernel32-private-l1-1-1.dll"/>
<file name="api-ms-win-core-largeinteger-l1-1-0.dll"/>
<file name="api-ms-win-core-libraryloader-l1-1-0.dll"/>
<file name="api-ms-win-core-libraryloader-l1-1-1.dll"/>
<file name="api-ms-win-core-libraryloader-l1-2-0.dll"/>
<file name="api-ms-win-core-libraryloader-l1-2-1.dll"/>
<file name="api-ms-win-core-libraryloader-l1-2-2.dll"/>
<file name="api-ms-win-core-localization-l1-1-0.dll"/>
<file name="api-ms-win-core-localization-l1-2-0.dll"/>
<file name="api-ms-win-core-localization-l1-2-1.dll"/>
<file name="api-ms-win-core-localization-l2-1-0.dll"/>
<file name="api-ms-win-core-localization-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-localization-obsolete-l1-2-0.dll"/>
<file name="api-ms-win-core-localization-obsolete-l1-3-0.dll"/>
<file name="api-ms-win-core-localization-private-l1-1-0.dll"/>
<file name="api-ms-win-core-localregistry-l1-1-0.dll"/>
<file name="api-ms-win-core-memory-l1-1-0.dll"/>
<file name="api-ms-win-core-memory-l1-1-1.dll"/>
<file name="api-ms-win-core-memory-l1-1-2.dll"/>
<file name="api-ms-win-core-misc-l1-1-0.dll"/>
<file name="api-ms-win-core-namedpipe-l1-1-0.dll"/>
<file name="api-ms-win-core-namedpipe-l1-2-0.dll"/>
<file name="api-ms-win-core-namespace-l1-1-0.dll"/>
<file name="api-ms-win-core-normalization-l1-1-0.dll"/>
<file name="api-ms-win-core-path-l1-1-0.dll"/>
<file name="api-ms-win-core-privateprofile-l1-1-1.dll"/>
<file name="api-ms-win-core-processenvironment-l1-1-0.dll"/>
<file name="api-ms-win-core-processenvironment-l1-2-0.dll"/>
<file name="api-ms-win-core-processthreads-l1-1-0.dll"/>
<file name="api-ms-win-core-processthreads-l1-1-1.dll"/>
<file name="api-ms-win-core-processthreads-l1-1-2.dll"/>
<file name="api-ms-win-core-processthreads-l1-1-3.dll"/>
<file name="api-ms-win-core-processtopology-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-profile-l1-1-0.dll"/>
<file name="api-ms-win-core-psapi-ansi-l1-1-0.dll"/>
<file name="api-ms-win-core-psapi-l1-1-0.dll"/>
<file name="api-ms-win-core-psapi-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-quirks-l1-1-0.dll"/>
<file name="api-ms-win-core-realtime-l1-1-0.dll"/>
<file name="api-ms-win-core-registry-l1-1-0.dll"/>
<file name="api-ms-win-core-registry-l2-1-0.dll"/>
<file name="api-ms-win-core-registryuserspecific-l1-1-0.dll"/>
<file name="api-ms-win-core-rtlsupport-l1-1-0.dll"/>
<file name="api-ms-win-core-rtlsupport-l1-2-0.dll"/>
<file name="api-ms-win-core-shlwapi-legacy-l1-1-0.dll"/>
<file name="api-ms-win-core-shlwapi-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-shlwapi-obsolete-l1-2-0.dll"/>
<file name="api-ms-win-core-shutdown-l1-1-0.dll"/>
<file name="api-ms-win-core-sidebyside-l1-1-0.dll"/>
<file name="api-ms-win-core-string-l1-1-0.dll"/>
<file name="api-ms-win-core-string-l2-1-0.dll"/>
<file name="api-ms-win-core-string-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-core-stringansi-l1-1-0.dll"/>
<file name="api-ms-win-core-stringloader-l1-1-1.dll"/>
<file name="api-ms-win-core-synch-ansi-l1-1-0.dll"/>
<file name="api-ms-win-core-synch-l1-1-0.dll"/>
<file name="api-ms-win-core-synch-l1-2-0.dll"/>
<file name="api-ms-win-core-synch-l1-2-1.dll"/>
<file name="api-ms-win-core-sysinfo-l1-1-0.dll"/>
<file name="api-ms-win-core-sysinfo-l1-2-0.dll"/>
<file name="api-ms-win-core-sysinfo-l1-2-1.dll"/>
<file name="api-ms-win-core-threadpool-l1-1-0.dll"/>
<file name="api-ms-win-core-threadpool-l1-2-0.dll"/>
<file name="api-ms-win-core-threadpool-legacy-l1-1-0.dll"/>
<file name="api-ms-win-core-threadpool-private-l1-1-0.dll"/>
<file name="api-ms-win-core-timezone-l1-1-0.dll"/>
<file name="api-ms-win-core-toolhelp-l1-1-0.dll"/>
<file name="api-ms-win-core-url-l1-1-0.dll"/>
<file name="api-ms-win-core-util-l1-1-0.dll"/>
<file name="api-ms-win-core-version-l1-1-0.dll"/>
<file name="api-ms-win-core-version-l1-1-1.dll"/>
<file name="api-ms-win-core-version-private-l1-1-0.dll"/>
<file name="api-ms-win-core-versionansi-l1-1-0.dll"/>
<file name="api-ms-win-core-windowserrorreporting-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-error-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-error-l1-1-1.dll"/>
<file name="api-ms-win-core-winrt-errorprivate-l1-1-1.dll"/>
<file name="api-ms-win-core-winrt-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-registration-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-string-l1-1-0.dll"/>
<file name="api-ms-win-core-winrt-string-l1-1-1.dll"/>
<file name="api-ms-win-core-wow64-l1-1-0.dll"/>
<file name="api-ms-win-core-wow64-l1-1-1.dll"/>
<file name="api-ms-win-core-xstate-l1-1-0.dll"/>
<file name="api-ms-win-core-xstate-l2-1-0.dll"/>
<file name="api-ms-win-crt-conio-l1-1-0.dll"/>
<file name="api-ms-win-crt-convert-l1-1-0.dll"/>
<file name="api-ms-win-crt-environment-l1-1-0.dll"/>
<file name="api-ms-win-crt-filesystem-l1-1-0.dll"/>
<file name="api-ms-win-crt-heap-l1-1-0.dll"/>
<file name="api-ms-win-crt-locale-l1-1-0.dll"/>
<file name="api-ms-win-crt-math-l1-1-0.dll"/>
<file name="api-ms-win-crt-multibyte-l1-1-0.dll"/>
<file name="api-ms-win-crt-private-l1-1-0.dll"/>
<file name="api-ms-win-crt-process-l1-1-0.dll"/>
<file name="api-ms-win-crt-runtime-l1-1-0.dll"/>
<file name="api-ms-win-crt-stdio-l1-1-0.dll"/>
<file name="api-ms-win-crt-string-l1-1-0.dll"/>
<file name="api-ms-win-crt-time-l1-1-0.dll"/>
<file name="api-ms-win-crt-utility-l1-1-0.dll"/>
<file name="api-ms-win-devices-config-l1-1-0.dll"/>
<file name="api-ms-win-devices-config-l1-1-1.dll"/>
<file name="api-ms-win-devices-query-l1-1-1.dll"/>
<file name="api-ms-win-downlevel-advapi32-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-advapi32-l2-1-0.dll"/>
<file name="api-ms-win-downlevel-normaliz-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-ole32-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-shell32-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-shlwapi-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-shlwapi-l2-1-0.dll"/>
<file name="api-ms-win-downlevel-user32-l1-1-0.dll"/>
<file name="api-ms-win-downlevel-version-l1-1-0.dll"/>
<file name="api-ms-win-dx-d3dkmt-l1-1-0.dll"/>
<file name="api-ms-win-eventing-classicprovider-l1-1-0.dll"/>
<file name="api-ms-win-eventing-consumer-l1-1-0.dll"/>
<file name="api-ms-win-eventing-controller-l1-1-0.dll"/>
<file name="api-ms-win-eventing-legacy-l1-1-0.dll"/>
<file name="api-ms-win-eventing-provider-l1-1-0.dll"/>
<file name="api-ms-win-eventlog-legacy-l1-1-0.dll"/>
<file name="api-ms-win-gdi-dpiinfo-l1-1-0.dll"/>
<file name="api-ms-win-mm-joystick-l1-1-0.dll"/>
<file name="api-ms-win-mm-misc-l1-1-1.dll"/>
<file name="api-ms-win-mm-mme-l1-1-0.dll"/>
<file name="api-ms-win-mm-time-l1-1-0.dll"/>
<file name="api-ms-win-ntuser-dc-access-l1-1-0.dll"/>
<file name="api-ms-win-ntuser-rectangle-l1-1-0.dll"/>
<file name="api-ms-win-ntuser-sysparams-l1-1-0.dll"/>
<file name="api-ms-win-perf-legacy-l1-1-0.dll"/>
<file name="api-ms-win-power-base-l1-1-0.dll"/>
<file name="api-ms-win-power-setting-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-draw-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-private-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-private-l1-1-4.dll"/>
<file name="api-ms-win-rtcore-ntuser-window-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-winevent-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.dll"/>
<file name="api-ms-win-rtcore-ntuser-wmpointer-l1-1-3.dll"/>
<file name="api-ms-win-security-activedirectoryclient-l1-1-0.dll"/>
<file name="api-ms-win-security-audit-l1-1-1.dll"/>
<file name="api-ms-win-security-base-l1-1-0.dll"/>
<file name="api-ms-win-security-base-l1-2-0.dll"/>
<file name="api-ms-win-security-base-private-l1-1-1.dll"/>
<file name="api-ms-win-security-credentials-l1-1-0.dll"/>
<file name="api-ms-win-security-cryptoapi-l1-1-0.dll"/>
<file name="api-ms-win-security-grouppolicy-l1-1-0.dll"/>
<file name="api-ms-win-security-lsalookup-l1-1-0.dll"/>
<file name="api-ms-win-security-lsalookup-l1-1-1.dll"/>
<file name="api-ms-win-security-lsalookup-l2-1-0.dll"/>
<file name="api-ms-win-security-lsalookup-l2-1-1.dll"/>
<file name="api-ms-win-security-lsapolicy-l1-1-0.dll"/>
<file name="api-ms-win-security-provider-l1-1-0.dll"/>
<file name="api-ms-win-security-sddl-l1-1-0.dll"/>
<file name="api-ms-win-security-systemfunctions-l1-1-0.dll"/>
<file name="api-ms-win-service-core-l1-1-0.dll"/>
<file name="api-ms-win-service-core-l1-1-1.dll"/>
<file name="api-ms-win-service-management-l1-1-0.dll"/>
<file name="api-ms-win-service-management-l2-1-0.dll"/>
<file name="api-ms-win-service-private-l1-1-1.dll"/>
<file name="api-ms-win-service-winsvc-l1-1-0.dll"/>
<file name="api-ms-win-service-winsvc-l1-2-0.dll"/>
<file name="api-ms-win-shcore-obsolete-l1-1-0.dll"/>
<file name="api-ms-win-shcore-scaling-l1-1-1.dll"/>
<file name="api-ms-win-shcore-stream-l1-1-0.dll"/>
<file name="api-ms-win-shcore-thread-l1-1-0.dll"/>
<file name="api-ms-win-shell-shellcom-l1-1-0.dll"/>
<file name="api-ms-win-shell-shellfolders-l1-1-0.dll"/>
</assembly>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Generated from %WINE_GIT_VERSION% -->
<assemblyIdentity type="win32" name="ReactOS.Apisets" version="1.0.0.0" publicKeyToken="6595b64144ccf1df"/>
%MANIFEST_FILE_LIST%
</assembly>

View File

@@ -0,0 +1,20 @@
# This file is autogenerated by update.py
@ stub AppContainerDeriveSidFromMoniker
@ stub AppContainerFreeMemory
@ stub AppContainerLookupDisplayNameMrtReference
@ stub AppContainerLookupMoniker
@ stub AppContainerRegisterSid
@ stub AppContainerUnregisterSid
@ stub AppXFreeMemory
@ stub AppXGetApplicationData
@ stub AppXGetDevelopmentMode
@ stub AppXGetOSMaxVersionTested
@ stub AppXGetOSMinVersion
@ stub AppXGetPackageCapabilities
@ stub AppXGetPackageSid
@ stub AppXGetPackageState
@ stub AppXLookupDisplayName
@ stub AppXLookupMoniker
@ stub AppXSetPackageState

View File

@@ -0,0 +1,30 @@
# This file is autogenerated by update.py
@ stub ClosePackageInfo
@ stub FindPackagesByPackageFamily
@ stub FormatApplicationUserModelId
@ stub GetApplicationUserModelId
@ stub GetCurrentApplicationUserModelId
@ stub GetCurrentPackageFamilyName
@ stub GetCurrentPackageFullName
@ stdcall -version=0x602+ GetCurrentPackageId() kernel32.GetCurrentPackageId
@ stub GetCurrentPackageInfo
@ stub GetCurrentPackagePath
@ stub GetPackageApplicationIds
@ stub GetPackageFamilyName
@ stub GetPackageFullName
@ stub GetPackageId
@ stub GetPackageInfo
@ stub GetPackagePath
@ stub GetPackagePathByFullName
@ stub GetPackagesByPackageFamily
@ stub GetStagedPackageOrigin
@ stub GetStagedPackagePathByFullName
@ stub OpenPackageInfoByFullName
@ stub PackageFamilyNameFromFullName
@ stub PackageFamilyNameFromId
@ stub PackageFullNameFromId
@ stub PackageIdFromFullName
@ stub PackageNameAndPublisherIdFromFamilyName
@ stub ParseApplicationUserModelId

View File

@@ -0,0 +1,20 @@
# This file is autogenerated by update.py
@ stub AppPolicyGetClrCompat
@ stub AppPolicyGetCreateFileAccess
@ stub AppPolicyGetLifecycleManagement
@ stub AppPolicyGetMediaFoundationCodecLoading
@ stdcall -stub AppPolicyGetProcessTerminationMethod(long ptr)
@ stub AppPolicyGetShowDeveloperDiagnostic
@ stdcall -stub AppPolicyGetThreadInitializationType(long ptr)
@ stub AppPolicyGetWindowingModel
@ stub GetApplicationUserModelIdFromToken
@ stub GetPackageFamilyNameFromToken
@ stub GetPackageFullNameFromToken
@ stub OpenPackageInfoByFullNameForUser
@ stub VerifyApplicationUserModelId
@ stub VerifyPackageFamilyName
@ stub VerifyPackageFullName
@ stub VerifyPackageId
@ stub VerifyPackageRelativeApplicationId

View File

@@ -0,0 +1,4 @@
# This file is autogenerated by update.py
@ stub ApiSetQueryApiSetPresence

View File

@@ -0,0 +1,13 @@
# This file is autogenerated by update.py
@ stdcall BaseCheckAppcompatCache() kernel32.BaseCheckAppcompatCache
@ stub BaseCheckAppcompatCacheEx
@ stdcall BaseCleanupAppcompatCacheSupport() kernel32.BaseCleanupAppcompatCacheSupport
@ stdcall BaseDumpAppcompatCache() kernel32.BaseDumpAppcompatCache
@ stdcall BaseFlushAppcompatCache() kernel32.BaseFlushAppcompatCache
@ stub BaseFreeAppCompatDataForProcess
@ stdcall BaseInitAppcompatCacheSupport() kernel32.BaseInitAppcompatCacheSupport
@ stdcall BaseIsAppcompatInfrastructureDisabled() kernel32.BaseIsAppcompatInfrastructureDisabled
@ stub BaseReadAppCompatDataForProcess
@ stdcall BaseUpdateAppcompatCache() kernel32.BaseUpdateAppcompatCache

View File

@@ -0,0 +1,4 @@
# This file is autogenerated by update.py
@ stub LoadAppInitDlls

View File

@@ -0,0 +1,20 @@
# This file is autogenerated by update.py
@ stdcall AddAtomA() kernel32.AddAtomA
@ stdcall AddAtomW() kernel32.AddAtomW
@ stdcall DeleteAtom() kernel32.DeleteAtom
@ stdcall FindAtomA() kernel32.FindAtomA
@ stdcall FindAtomW() kernel32.FindAtomW
@ stdcall GetAtomNameA() kernel32.GetAtomNameA
@ stdcall GetAtomNameW() kernel32.GetAtomNameW
@ stdcall GlobalAddAtomA() kernel32.GlobalAddAtomA
@ stub GlobalAddAtomExA
@ stub GlobalAddAtomExW
@ stdcall GlobalAddAtomW() kernel32.GlobalAddAtomW
@ stdcall GlobalDeleteAtom() kernel32.GlobalDeleteAtom
@ stdcall GlobalFindAtomA() kernel32.GlobalFindAtomA
@ stdcall GlobalFindAtomW() kernel32.GlobalFindAtomW
@ stdcall GlobalGetAtomNameA() kernel32.GlobalGetAtomNameA
@ stdcall GlobalGetAtomNameW() kernel32.GlobalGetAtomNameW
@ stdcall InitAtomTable() kernel32.InitAtomTable

View File

@@ -0,0 +1,8 @@
# This file is autogenerated by update.py
@ stub BemCopyReference
@ stub BemCreateContractFrom
@ stub BemCreateReference
@ stub BemFreeContract
@ stub BemFreeReference

View File

@@ -0,0 +1,83 @@
# This file is autogenerated by update.py
@ stdcall CLSIDFromProgID() ole32.CLSIDFromProgID
@ stdcall CLSIDFromString() ole32.CLSIDFromString
@ stdcall CoAddRefServerProcess() ole32.CoAddRefServerProcess
@ stub CoAllowUnmarshalerCLSID
@ stdcall CoCancelCall() ole32.CoCancelCall
@ stdcall CoCopyProxy() ole32.CoCopyProxy
@ stdcall CoCreateFreeThreadedMarshaler() ole32.CoCreateFreeThreadedMarshaler
@ stdcall CoCreateGuid() ole32.CoCreateGuid
@ stdcall CoCreateInstance() ole32.CoCreateInstance
@ stdcall CoCreateInstanceEx() ole32.CoCreateInstanceEx
@ stub CoCreateInstanceFromApp
@ stub CoDecodeProxy
@ stub CoDecrementMTAUsage
@ stdcall CoDisableCallCancellation() ole32.CoDisableCallCancellation
@ stdcall -version=0x600+ CoDisconnectContext() ole32.CoDisconnectContext
@ stdcall CoDisconnectObject() ole32.CoDisconnectObject
@ stdcall CoEnableCallCancellation() ole32.CoEnableCallCancellation
@ stdcall CoFreeUnusedLibraries() ole32.CoFreeUnusedLibraries
@ stdcall CoFreeUnusedLibrariesEx() ole32.CoFreeUnusedLibrariesEx
@ stub CoGetApartmentType
@ stdcall CoGetCallContext() ole32.CoGetCallContext
@ stdcall CoGetCallerTID() ole32.CoGetCallerTID
@ stdcall CoGetCancelObject() ole32.CoGetCancelObject
@ stdcall CoGetClassObject() ole32.CoGetClassObject
@ stdcall CoGetContextToken() ole32.CoGetContextToken
@ stdcall CoGetCurrentLogicalThreadId() ole32.CoGetCurrentLogicalThreadId
@ stdcall CoGetCurrentProcess() ole32.CoGetCurrentProcess
@ stdcall CoGetDefaultContext() ole32.CoGetDefaultContext
@ stdcall CoGetInterfaceAndReleaseStream() ole32.CoGetInterfaceAndReleaseStream
@ stdcall CoGetMalloc() ole32.CoGetMalloc
@ stdcall CoGetMarshalSizeMax() ole32.CoGetMarshalSizeMax
@ stdcall CoGetObjectContext() ole32.CoGetObjectContext
@ stdcall CoGetPSClsid() ole32.CoGetPSClsid
@ stdcall CoGetStandardMarshal() ole32.CoGetStandardMarshal
@ stdcall CoGetStdMarshalEx() ole32.CoGetStdMarshalEx
@ stdcall CoGetTreatAsClass() ole32.CoGetTreatAsClass
@ stdcall CoImpersonateClient() ole32.CoImpersonateClient
@ stub CoIncrementMTAUsage
@ stdcall CoInitializeEx() ole32.CoInitializeEx
@ stdcall CoInitializeSecurity() ole32.CoInitializeSecurity
@ stub CoInvalidateRemoteMachineBindings
@ stdcall CoIsHandlerConnected() ole32.CoIsHandlerConnected
@ stdcall CoLockObjectExternal() ole32.CoLockObjectExternal
@ stdcall CoMarshalHresult() ole32.CoMarshalHresult
@ stdcall CoMarshalInterThreadInterfaceInStream() ole32.CoMarshalInterThreadInterfaceInStream
@ stdcall CoMarshalInterface() ole32.CoMarshalInterface
@ stdcall CoQueryAuthenticationServices() ole32.CoQueryAuthenticationServices
@ stdcall CoQueryClientBlanket() ole32.CoQueryClientBlanket
@ stdcall CoQueryProxyBlanket() ole32.CoQueryProxyBlanket
@ stdcall CoRegisterClassObject() ole32.CoRegisterClassObject
@ stdcall CoRegisterPSClsid() ole32.CoRegisterPSClsid
@ stdcall CoRegisterSurrogate() ole32.CoRegisterSurrogate
@ stdcall CoReleaseMarshalData() ole32.CoReleaseMarshalData
@ stdcall CoReleaseServerProcess() ole32.CoReleaseServerProcess
@ stdcall CoResumeClassObjects() ole32.CoResumeClassObjects
@ stdcall CoRevertToSelf() ole32.CoRevertToSelf
@ stdcall CoRevokeClassObject() ole32.CoRevokeClassObject
@ stub CoSetCancelObject
@ stdcall CoSetProxyBlanket() ole32.CoSetProxyBlanket
@ stdcall CoSuspendClassObjects() ole32.CoSuspendClassObjects
@ stdcall CoSwitchCallContext() ole32.CoSwitchCallContext
@ stdcall CoTaskMemAlloc() ole32.CoTaskMemAlloc
@ stdcall CoTaskMemFree() ole32.CoTaskMemFree
@ stdcall CoTaskMemRealloc() ole32.CoTaskMemRealloc
@ stub CoTestCancel
@ stdcall CoUninitialize() ole32.CoUninitialize
@ stdcall CoUnmarshalHresult() ole32.CoUnmarshalHresult
@ stdcall CoUnmarshalInterface() ole32.CoUnmarshalInterface
@ stdcall CoWaitForMultipleHandles() ole32.CoWaitForMultipleHandles
@ stub CoWaitForMultipleObjects
@ stdcall CreateStreamOnHGlobal() ole32.CreateStreamOnHGlobal
@ stdcall FreePropVariantArray() ole32.FreePropVariantArray
@ stdcall GetHGlobalFromStream() ole32.GetHGlobalFromStream
@ stdcall IIDFromString() ole32.IIDFromString
@ stdcall ProgIDFromCLSID() ole32.ProgIDFromCLSID
@ stdcall PropVariantClear() ole32.PropVariantClear
@ stdcall PropVariantCopy() ole32.PropVariantCopy
@ stdcall StringFromCLSID() ole32.StringFromCLSID
@ stdcall StringFromGUID2() ole32.StringFromGUID2
@ stdcall StringFromIID() ole32.StringFromIID

View File

@@ -0,0 +1,85 @@
# This file is autogenerated by update.py
@ stdcall CLSIDFromProgID() ole32.CLSIDFromProgID
@ stdcall CLSIDFromString() ole32.CLSIDFromString
@ stdcall CoAddRefServerProcess() ole32.CoAddRefServerProcess
@ stub CoAllowUnmarshalerCLSID
@ stdcall CoCancelCall() ole32.CoCancelCall
@ stdcall CoCopyProxy() ole32.CoCopyProxy
@ stdcall CoCreateFreeThreadedMarshaler() ole32.CoCreateFreeThreadedMarshaler
@ stdcall CoCreateGuid() ole32.CoCreateGuid
@ stdcall CoCreateInstance() ole32.CoCreateInstance
@ stdcall CoCreateInstanceEx() ole32.CoCreateInstanceEx
@ stub CoCreateInstanceFromApp
@ stub CoDecodeProxy
@ stub CoDecrementMTAUsage
@ stdcall CoDisableCallCancellation() ole32.CoDisableCallCancellation
@ stdcall -version=0x600+ CoDisconnectContext() ole32.CoDisconnectContext
@ stdcall CoDisconnectObject() ole32.CoDisconnectObject
@ stdcall CoEnableCallCancellation() ole32.CoEnableCallCancellation
@ stdcall CoFreeUnusedLibraries() ole32.CoFreeUnusedLibraries
@ stdcall CoFreeUnusedLibrariesEx() ole32.CoFreeUnusedLibrariesEx
@ stub CoGetApartmentType
@ stdcall CoGetCallContext() ole32.CoGetCallContext
@ stdcall CoGetCallerTID() ole32.CoGetCallerTID
@ stdcall CoGetCancelObject() ole32.CoGetCancelObject
@ stdcall CoGetClassObject() ole32.CoGetClassObject
@ stdcall CoGetContextToken() ole32.CoGetContextToken
@ stdcall CoGetCurrentLogicalThreadId() ole32.CoGetCurrentLogicalThreadId
@ stdcall CoGetCurrentProcess() ole32.CoGetCurrentProcess
@ stdcall CoGetDefaultContext() ole32.CoGetDefaultContext
@ stdcall CoGetInterfaceAndReleaseStream() ole32.CoGetInterfaceAndReleaseStream
@ stdcall CoGetMalloc() ole32.CoGetMalloc
@ stdcall CoGetMarshalSizeMax() ole32.CoGetMarshalSizeMax
@ stdcall CoGetObjectContext() ole32.CoGetObjectContext
@ stdcall CoGetPSClsid() ole32.CoGetPSClsid
@ stdcall CoGetStandardMarshal() ole32.CoGetStandardMarshal
@ stdcall CoGetStdMarshalEx() ole32.CoGetStdMarshalEx
@ stdcall CoGetTreatAsClass() ole32.CoGetTreatAsClass
@ stdcall CoImpersonateClient() ole32.CoImpersonateClient
@ stub CoIncrementMTAUsage
@ stdcall CoInitializeEx() ole32.CoInitializeEx
@ stdcall CoInitializeSecurity() ole32.CoInitializeSecurity
@ stub CoInvalidateRemoteMachineBindings
@ stdcall CoIsHandlerConnected() ole32.CoIsHandlerConnected
@ stdcall CoLockObjectExternal() ole32.CoLockObjectExternal
@ stdcall CoMarshalHresult() ole32.CoMarshalHresult
@ stdcall CoMarshalInterThreadInterfaceInStream() ole32.CoMarshalInterThreadInterfaceInStream
@ stdcall CoMarshalInterface() ole32.CoMarshalInterface
@ stdcall CoQueryAuthenticationServices() ole32.CoQueryAuthenticationServices
@ stdcall CoQueryClientBlanket() ole32.CoQueryClientBlanket
@ stdcall CoQueryProxyBlanket() ole32.CoQueryProxyBlanket
@ stub CoRegisterActivationFilter
@ stdcall CoRegisterClassObject() ole32.CoRegisterClassObject
@ stdcall CoRegisterPSClsid() ole32.CoRegisterPSClsid
@ stdcall CoRegisterSurrogate() ole32.CoRegisterSurrogate
@ stdcall CoReleaseMarshalData() ole32.CoReleaseMarshalData
@ stdcall CoReleaseServerProcess() ole32.CoReleaseServerProcess
@ stdcall CoResumeClassObjects() ole32.CoResumeClassObjects
@ stdcall CoRevertToSelf() ole32.CoRevertToSelf
@ stdcall CoRevokeClassObject() ole32.CoRevokeClassObject
@ stub CoSetCancelObject
@ stdcall CoSetProxyBlanket() ole32.CoSetProxyBlanket
@ stdcall CoSuspendClassObjects() ole32.CoSuspendClassObjects
@ stdcall CoSwitchCallContext() ole32.CoSwitchCallContext
@ stdcall CoTaskMemAlloc() ole32.CoTaskMemAlloc
@ stdcall CoTaskMemFree() ole32.CoTaskMemFree
@ stdcall CoTaskMemRealloc() ole32.CoTaskMemRealloc
@ stub CoTestCancel
@ stdcall CoUninitialize() ole32.CoUninitialize
@ stdcall CoUnmarshalHresult() ole32.CoUnmarshalHresult
@ stdcall CoUnmarshalInterface() ole32.CoUnmarshalInterface
@ stdcall CoWaitForMultipleHandles() ole32.CoWaitForMultipleHandles
@ stub CoWaitForMultipleObjects
@ stdcall CreateStreamOnHGlobal() ole32.CreateStreamOnHGlobal
@ stdcall FreePropVariantArray() ole32.FreePropVariantArray
@ stdcall GetHGlobalFromStream() ole32.GetHGlobalFromStream
@ stdcall IIDFromString() ole32.IIDFromString
@ stdcall ProgIDFromCLSID() ole32.ProgIDFromCLSID
@ stdcall PropVariantClear() ole32.PropVariantClear
@ stdcall PropVariantCopy() ole32.PropVariantCopy
@ stub RoGetAgileReference
@ stdcall StringFromCLSID() ole32.StringFromCLSID
@ stdcall StringFromGUID2() ole32.StringFromGUID2
@ stdcall StringFromIID() ole32.StringFromIID

View File

@@ -0,0 +1,94 @@
# This file is autogenerated by update.py
@ stub CLSIDFromOle1Class
@ stub CleanupOleStateInAllTls
@ stub CleanupTlsOleState
@ stub ClearCleanupFlag
@ stub CoCreateErrorInfo
@ stub CoCreateObjectInContext
@ stub CoDeactivateObject
@ stub CoGetActivationState
@ stub CoGetApartmentID
@ stub CoGetCallState
@ stub CoGetClassVersion
@ stub CoGetErrorInfo
@ stdcall CoGetInstanceFromFile() ole32.CoGetInstanceFromFile
@ stdcall CoGetInstanceFromIStorage() ole32.CoGetInstanceFromIStorage
@ stub CoGetModuleType
@ stub CoGetProcessIdentifier
@ stub CoGetSystemSecurityPermissions
@ stdcall CoInitializeWOW() ole32.CoInitializeWOW
@ stub CoPopServiceDomain
@ stub CoPushServiceDomain
@ stub CoReactivateObject
@ stdcall CoRegisterInitializeSpy() ole32.CoRegisterInitializeSpy
@ stdcall CoRegisterMallocSpy() ole32.CoRegisterMallocSpy
@ stdcall CoRegisterMessageFilter() ole32.CoRegisterMessageFilter
@ stdcall CoRegisterSurrogateEx() ole32.CoRegisterSurrogateEx
@ stub CoRetireServer
@ stdcall CoRevokeInitializeSpy() ole32.CoRevokeInitializeSpy
@ stdcall CoRevokeMallocSpy() ole32.CoRevokeMallocSpy
@ stub CoSetErrorInfo
@ stdcall CoUnloadingWOW() ole32.CoUnloadingWOW
@ stub CoVrfCheckThreadState
@ stub CoVrfGetThreadState
@ stub CoVrfReleaseThreadState
@ stdcall DllDebugObjectRPCHook() ole32.DllDebugObjectRPCHook
@ stdcall EnableHookObject() ole32.EnableHookObject
@ stub FreePropVariantArrayWorker
@ stub GetCatalogHelper
@ stub GetFuncDescs
@ stdcall GetHookInterface() ole32.GetHookInterface
@ stub HkOleRegisterObject
@ stub InternalAppInvokeExceptionFilter
@ stub InternalCCFreeUnused
@ stub InternalCCGetClassInformationForDde
@ stub InternalCCGetClassInformationFromKey
@ stub InternalCCSetDdeServerWindow
@ stub InternalCMLSendReceive
@ stub InternalCallAsProxyExceptionFilter
@ stub InternalCallFrameExceptionFilter
@ stub InternalCallerIsAppContainer
@ stub InternalCanMakeOutCall
@ stub InternalCoIsSurrogateProcess
@ stub InternalCoRegisterDisconnectCallback
@ stub InternalCoRegisterSurrogatedObject
@ stub InternalCoStdMarshalObject
@ stub InternalCoUnregisterDisconnectCallback
@ stub InternalCompleteObjRef
@ stub InternalCreateCAggId
@ stub InternalCreateIdentityHandler
@ stub InternalDoATClassCreate
@ stub InternalFillLocalOXIDInfo
@ stub InternalFreeObjRef
@ stub InternalGetWindowPropInterface
@ stub InternalIrotEnumRunning
@ stub InternalIrotGetObject
@ stub InternalIrotGetTimeOfLastChange
@ stub InternalIrotIsRunning
@ stub InternalIrotNoteChangeTime
@ stub InternalIrotRegister
@ stub InternalIrotRevoke
@ stub InternalIsApartmentInitialized
@ stub InternalIsProcessInitialized
@ stub InternalMarshalObjRef
@ stub InternalNotifyDDStartOrStop
@ stub InternalOleModalLoopBlockFn
@ stub InternalRegisterWindowPropInterface
@ stub InternalReleaseMarshalObjRef
@ stub InternalSTAInvoke
@ stub InternalServerExceptionFilter
@ stub InternalSetAptCallCtrlOnTlsIfRequired
@ stub InternalSetOleThunkWowPtr
@ stub InternalStubInvoke
@ stub InternalTlsAllocData
@ stub InternalUnmarshalObjRef
@ stub NdrExtStubInitialize
@ stub NdrOleDllGetClassObject
@ stub NdrOleInitializeExtension
@ stub NdrpFindInterface
@ stub ReleaseFuncDescs
@ stub SetCleanupFlag
@ stdcall UpdateDCOMSettings() ole32.UpdateDCOMSettings
@ stub UpdateProcessTracing

View File

@@ -0,0 +1,21 @@
# This file is autogenerated by update.py
@ stdcall ClearCommBreak() kernel32.ClearCommBreak
@ stdcall ClearCommError() kernel32.ClearCommError
@ stdcall EscapeCommFunction() kernel32.EscapeCommFunction
@ stdcall GetCommConfig() kernel32.GetCommConfig
@ stdcall GetCommMask() kernel32.GetCommMask
@ stdcall GetCommModemStatus() kernel32.GetCommModemStatus
@ stdcall GetCommProperties() kernel32.GetCommProperties
@ stdcall GetCommState() kernel32.GetCommState
@ stdcall GetCommTimeouts() kernel32.GetCommTimeouts
@ stdcall PurgeComm() kernel32.PurgeComm
@ stdcall SetCommBreak() kernel32.SetCommBreak
@ stdcall SetCommConfig() kernel32.SetCommConfig
@ stdcall SetCommMask() kernel32.SetCommMask
@ stdcall SetCommState() kernel32.SetCommState
@ stdcall SetCommTimeouts() kernel32.SetCommTimeouts
@ stdcall SetupComm() kernel32.SetupComm
@ stdcall TransmitCommChar() kernel32.TransmitCommChar
@ stdcall WaitCommEvent() kernel32.WaitCommEvent

View File

@@ -0,0 +1,17 @@
# This file is autogenerated by update.py
@ stdcall AllocConsole() kernel32.AllocConsole
@ stdcall GetConsoleCP() kernel32.GetConsoleCP
@ stdcall GetConsoleMode() kernel32.GetConsoleMode
@ stdcall GetConsoleOutputCP() kernel32.GetConsoleOutputCP
@ stdcall GetNumberOfConsoleInputEvents() kernel32.GetNumberOfConsoleInputEvents
@ stdcall PeekConsoleInputA() kernel32.PeekConsoleInputA
@ stdcall ReadConsoleA() kernel32.ReadConsoleA
@ stdcall ReadConsoleInputA() kernel32.ReadConsoleInputA
@ stdcall ReadConsoleInputW() kernel32.ReadConsoleInputW
@ stdcall ReadConsoleW() kernel32.ReadConsoleW
@ stdcall SetConsoleCtrlHandler() kernel32.SetConsoleCtrlHandler
@ stdcall SetConsoleMode() kernel32.SetConsoleMode
@ stdcall WriteConsoleA() kernel32.WriteConsoleA
@ stdcall WriteConsoleW() kernel32.WriteConsoleW

View File

@@ -0,0 +1,41 @@
# This file is autogenerated by update.py
@ stdcall AttachConsole() kernel32.AttachConsole
@ stdcall CreateConsoleScreenBuffer() kernel32.CreateConsoleScreenBuffer
@ stdcall FillConsoleOutputAttribute() kernel32.FillConsoleOutputAttribute
@ stdcall FillConsoleOutputCharacterA() kernel32.FillConsoleOutputCharacterA
@ stdcall FillConsoleOutputCharacterW() kernel32.FillConsoleOutputCharacterW
@ stdcall FlushConsoleInputBuffer() kernel32.FlushConsoleInputBuffer
@ stdcall FreeConsole() kernel32.FreeConsole
@ stdcall GenerateConsoleCtrlEvent() kernel32.GenerateConsoleCtrlEvent
@ stdcall GetConsoleCursorInfo() kernel32.GetConsoleCursorInfo
@ stdcall GetConsoleScreenBufferInfo() kernel32.GetConsoleScreenBufferInfo
@ stdcall -version=0x600+ GetConsoleScreenBufferInfoEx() kernel32.GetConsoleScreenBufferInfoEx
@ stdcall GetConsoleTitleW() kernel32.GetConsoleTitleW
@ stdcall GetLargestConsoleWindowSize() kernel32.GetLargestConsoleWindowSize
@ stdcall PeekConsoleInputW() kernel32.PeekConsoleInputW
@ stdcall ReadConsoleOutputA() kernel32.ReadConsoleOutputA
@ stdcall ReadConsoleOutputAttribute() kernel32.ReadConsoleOutputAttribute
@ stdcall ReadConsoleOutputCharacterA() kernel32.ReadConsoleOutputCharacterA
@ stdcall ReadConsoleOutputCharacterW() kernel32.ReadConsoleOutputCharacterW
@ stdcall ReadConsoleOutputW() kernel32.ReadConsoleOutputW
@ stdcall ScrollConsoleScreenBufferA() kernel32.ScrollConsoleScreenBufferA
@ stdcall ScrollConsoleScreenBufferW() kernel32.ScrollConsoleScreenBufferW
@ stdcall SetConsoleActiveScreenBuffer() kernel32.SetConsoleActiveScreenBuffer
@ stdcall SetConsoleCP() kernel32.SetConsoleCP
@ stdcall SetConsoleCursorInfo() kernel32.SetConsoleCursorInfo
@ stdcall SetConsoleCursorPosition() kernel32.SetConsoleCursorPosition
@ stdcall SetConsoleOutputCP() kernel32.SetConsoleOutputCP
@ stdcall -version=0x600+ SetConsoleScreenBufferInfoEx() kernel32.SetConsoleScreenBufferInfoEx
@ stdcall SetConsoleScreenBufferSize() kernel32.SetConsoleScreenBufferSize
@ stdcall SetConsoleTextAttribute() kernel32.SetConsoleTextAttribute
@ stdcall SetConsoleTitleW() kernel32.SetConsoleTitleW
@ stdcall SetConsoleWindowInfo() kernel32.SetConsoleWindowInfo
@ stdcall WriteConsoleInputA() kernel32.WriteConsoleInputA
@ stdcall WriteConsoleInputW() kernel32.WriteConsoleInputW
@ stdcall WriteConsoleOutputA() kernel32.WriteConsoleOutputA
@ stdcall WriteConsoleOutputAttribute() kernel32.WriteConsoleOutputAttribute
@ stdcall WriteConsoleOutputCharacterA() kernel32.WriteConsoleOutputCharacterA
@ stdcall WriteConsoleOutputCharacterW() kernel32.WriteConsoleOutputCharacterW
@ stdcall WriteConsoleOutputW() kernel32.WriteConsoleOutputW

View File

@@ -0,0 +1,106 @@
# This file is autogenerated by update.py
@ cdecl -arch=x86_64,arm __C_specific_handler() msvcrt.__C_specific_handler
@ stdcall __isascii() msvcrt.__isascii
@ stdcall _atoi64() msvcrt._atoi64
@ stdcall _errno() msvcrt._errno
@ stdcall -version=0x600+ -arch=i386 _except_handler4_common() msvcrt._except_handler4_common
@ stdcall -arch=i386,x86_64,arm _fltused() ntdll._fltused
@ stdcall -arch=i386 _ftol() msvcrt._ftol
@ cdecl -version=0x600+ -arch=i386 _ftol2() msvcrt._ftol2
@ cdecl -version=0x600+ -arch=i386 _ftol2_sse() msvcrt._ftol2_sse
@ stub _i64tow_s
@ stub _itow_s
@ cdecl -arch=x86_64 _local_unwind() msvcrt._local_unwind
@ stdcall -version=0x600+ -arch=i386 _local_unwind4() msvcrt._local_unwind4
@ stub _ltow_s
@ cdecl -arch=x86_64 _setjmp() msvcrt._setjmp
@ cdecl -arch=x86_64 _setjmpex() msvcrt._setjmpex
@ stub _snprintf_s
@ stub _snwprintf_s
@ stub _splitpath_s
@ stdcall _stricmp() msvcrt._stricmp
@ stub _strlwr_s
@ stdcall _strnicmp() msvcrt._strnicmp
@ stub _strupr_s
@ stub _ui64tow_s
@ stdcall _ultow() msvcrt._ultow
@ stub _ultow_s
@ stub _vsnprintf_s
@ stub _vsnwprintf_s
@ stdcall _wcsicmp() msvcrt._wcsicmp
@ stub _wcslwr_s
@ stdcall _wcsnicmp() msvcrt._wcsnicmp
@ stdcall _wcstoi64() msvcrt._wcstoi64
@ stdcall _wcstoui64() msvcrt._wcstoui64
@ stub _wcsupr_s
@ stub _wsplitpath_s
@ stdcall _wtoi() msvcrt._wtoi
@ stdcall _wtoi64() msvcrt._wtoi64
@ stdcall _wtol() msvcrt._wtol
@ stdcall atoi() msvcrt.atoi
@ stdcall atol() msvcrt.atol
@ stdcall isalnum() msvcrt.isalnum
@ stdcall isdigit() msvcrt.isdigit
@ stdcall isgraph() msvcrt.isgraph
@ stdcall islower() msvcrt.islower
@ stdcall isprint() msvcrt.isprint
@ stdcall isspace() msvcrt.isspace
@ stdcall isupper() msvcrt.isupper
@ stdcall iswalnum() msvcrt.iswalnum
@ stdcall iswascii() msvcrt.iswascii
@ stdcall iswctype() msvcrt.iswctype
@ stdcall iswdigit() msvcrt.iswdigit
@ stdcall iswgraph() msvcrt.iswgraph
@ stdcall iswprint() msvcrt.iswprint
@ stdcall iswspace() msvcrt.iswspace
@ cdecl -arch=x86_64 longjmp() msvcrt.longjmp
@ stdcall memcmp() msvcrt.memcmp
@ stdcall memcpy() msvcrt.memcpy
@ stub memcpy_s
@ stdcall memmove() msvcrt.memmove
@ stub memmove_s
@ stdcall memset() msvcrt.memset
@ stub qsort_s
@ stub sprintf_s
@ stub sscanf_s
@ stub strcat_s
@ stdcall strchr() msvcrt.strchr
@ stdcall strcmp() msvcrt.strcmp
@ stub strcpy_s
@ stdcall strcspn() msvcrt.strcspn
@ stdcall strlen() msvcrt.strlen
@ stub strncat_s
@ stdcall strncmp() msvcrt.strncmp
@ stub strncpy_s
@ stub strnlen
@ stdcall strpbrk() msvcrt.strpbrk
@ stdcall strrchr() msvcrt.strrchr
@ stdcall strstr() msvcrt.strstr
@ stub strtok_s
@ stdcall strtol() msvcrt.strtol
@ stdcall strtoul() msvcrt.strtoul
@ stub swprintf_s
@ stdcall tolower() msvcrt.tolower
@ stdcall toupper() msvcrt.toupper
@ stdcall towlower() msvcrt.towlower
@ stdcall towupper() msvcrt.towupper
@ stub vsprintf_s
@ stub vswprintf_s
@ stub wcscat_s
@ stdcall wcschr() msvcrt.wcschr
@ stdcall wcscmp() msvcrt.wcscmp
@ stub wcscpy_s
@ stdcall wcscspn() msvcrt.wcscspn
@ stdcall wcslen() msvcrt.wcslen
@ stub wcsncat_s
@ stdcall wcsncmp() msvcrt.wcsncmp
@ stub wcsncpy_s
@ stub wcsnlen
@ stdcall wcspbrk() msvcrt.wcspbrk
@ stdcall wcsrchr() msvcrt.wcsrchr
@ stdcall wcsstr() msvcrt.wcsstr
@ stub wcstok_s
@ stdcall wcstol() msvcrt.wcstol
@ stdcall wcstoul() msvcrt.wcstoul

View File

@@ -0,0 +1,21 @@
# This file is autogenerated by update.py
@ stub __dllonexit3
@ stdcall __wgetmainargs() msvcrt.__wgetmainargs
@ stdcall _amsg_exit() msvcrt._amsg_exit
@ stdcall _c_exit() msvcrt._c_exit
@ stdcall _cexit() msvcrt._cexit
@ stdcall _exit() msvcrt._exit
@ stdcall _initterm() msvcrt._initterm
@ stub _initterm_e
@ stub _invalid_parameter
@ stdcall _onexit() msvcrt._onexit
@ stdcall _purecall() msvcrt._purecall
@ stdcall _time64() msvcrt._time64
@ extern -stub atexit msvcrt.atexit # the -stub is a HACK to fix VS < 2017 build!
@ stdcall exit() msvcrt.exit
@ stub hgets
@ stub hwprintf
@ stdcall time() msvcrt.time
@ stdcall wprintf() msvcrt.wprintf

View File

@@ -0,0 +1,7 @@
# This file is autogenerated by update.py
@ stdcall GetDateFormatA() kernel32.GetDateFormatA
@ stdcall GetDateFormatW() kernel32.GetDateFormatW
@ stdcall GetTimeFormatA() kernel32.GetTimeFormatA
@ stdcall GetTimeFormatW() kernel32.GetTimeFormatW

View File

@@ -0,0 +1,9 @@
# This file is autogenerated by update.py
@ stdcall GetDateFormatA() kernel32.GetDateFormatA
@ stdcall -version=0x600+ GetDateFormatEx() kernel32.GetDateFormatEx
@ stdcall GetDateFormatW() kernel32.GetDateFormatW
@ stdcall GetTimeFormatA() kernel32.GetTimeFormatA
@ stdcall -version=0x600+ GetTimeFormatEx() kernel32.GetTimeFormatEx
@ stdcall GetTimeFormatW() kernel32.GetTimeFormatW

View File

@@ -0,0 +1,7 @@
# This file is autogenerated by update.py
@ stdcall DebugBreak() kernel32.DebugBreak
@ stdcall IsDebuggerPresent() kernel32.IsDebuggerPresent
@ stdcall OutputDebugStringA() kernel32.OutputDebugStringA
@ stdcall OutputDebugStringW() kernel32.OutputDebugStringW

Some files were not shown because too many files have changed in this diff Show More