[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
This commit is contained in:
Carl J. Bialorucki 2025-02-17 20:01:35 -07:00
parent 7791a36fc2
commit b5c1fdc1cc
45 changed files with 1605 additions and 1402 deletions

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);
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,10 +955,12 @@ CAppInfoDisplay::Create(HWND hwndParent)
}
VOID
CAppInfoDisplay::ShowAppInfo(CAppInfo *Info)
CAppInfoDisplay::ShowAppInfo(CAppInfo &Info, bool OnlyUpdateText)
{
if (!OnlyUpdateText)
{
CStringW ScrnshotLocation;
if (Info->RetrieveScreenshot(ScrnshotLocation))
if (Info.RetrieveScreenshot(ScrnshotLocation))
{
ScrnshotPrev->DisplayImage(ScrnshotLocation);
}
@ -935,16 +968,46 @@ CAppInfoDisplay::ShowAppInfo(CAppInfo *Info)
{
ScrnshotPrev->DisplayEmpty();
}
}
ResizeChildren();
Info->ShowAppInfo(RichEdit);
Info.ShowAppInfo(RichEdit);
}
VOID
CAppInfoDisplay::SetWelcomeText()
void
CAppInfoDisplay::SetWelcomeText(bool bAppwiz)
{
CStringW szText;
ScrnshotPrev->DisplayEmpty();
ResizeChildren();
RichEdit->SetWelcomeText();
// 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
{
szText.LoadStringW(IDS_APPWIZ_TITLE);
RichEdit->SetText(szText, CFE_BOLD);
RichEdit->InsertText(L"\n\n", 0);
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,33 +2039,42 @@ 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);
if (!m_bAppwizMode)
m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND);
m_TreeView->SelectItem(bAppwizMode ? hRootItemInstalled : hRootItemAvailable);
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;
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

@ -1907,6 +1907,8 @@ SHFreeShared(
#endif /* NO_SHLWAPI_SHARED */
INT WINAPI GetMenuPosFromID(_In_ HMENU hMenu, _In_ UINT uID);
/* SHAutoComplete flags */
#define SHACF_DEFAULT 0x00000000
#define SHACF_FILESYSTEM 0x00000001