mirror of
https://github.com/reactos/reactos.git
synced 2025-06-27 16:59:51 +00:00
[RAPPS] cmdline enhancement (#3087)
* [RAPPS] now command-line option supports begin with both / and - * [RAPPS] Add help command with /? * [RAPPS] add /find command * [RAPPS] add /info option * [RAPPS] add copyright and contact e-mail
This commit is contained in:
parent
997650d424
commit
7a11c65561
35 changed files with 612 additions and 90 deletions
|
@ -4,6 +4,7 @@ set_cpp(WITH_RUNTIME)
|
||||||
|
|
||||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
|
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
|
||||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/cryptlib)
|
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/cryptlib)
|
||||||
|
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
|
||||||
include_directories(include)
|
include_directories(include)
|
||||||
|
|
||||||
list(APPEND SOURCE
|
list(APPEND SOURCE
|
||||||
|
@ -42,8 +43,8 @@ add_definitions(
|
||||||
file(GLOB_RECURSE rapps_rc_deps res/*.*)
|
file(GLOB_RECURSE rapps_rc_deps res/*.*)
|
||||||
add_rc_deps(rapps.rc ${rapps_rc_deps})
|
add_rc_deps(rapps.rc ${rapps_rc_deps})
|
||||||
add_executable(rapps ${SOURCE} rapps.rc)
|
add_executable(rapps ${SOURCE} rapps.rc)
|
||||||
set_module_type(rapps win32gui UNICODE)
|
set_module_type(rapps win32cui UNICODE)
|
||||||
target_link_libraries(rapps uuid wine)
|
target_link_libraries(rapps conutils ${PSEH_LIB} uuid wine)
|
||||||
add_importlibs(rapps advapi32 comctl32 gdi32 wininet user32 shell32 shlwapi ole32 setupapi gdiplus msvcrt kernel32 ntdll)
|
add_importlibs(rapps advapi32 comctl32 gdi32 wininet user32 shell32 shlwapi ole32 setupapi gdiplus msvcrt kernel32 ntdll)
|
||||||
add_pch(rapps include/rapps.h SOURCE)
|
add_pch(rapps include/rapps.h SOURCE)
|
||||||
add_dependencies(rapps rappsmsg)
|
add_dependencies(rapps rappsmsg)
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "appview.h"
|
#include "appview.h"
|
||||||
|
#include "winmain.h"
|
||||||
#include <shlobj_undoc.h>
|
#include <shlobj_undoc.h>
|
||||||
#include <shlguid_undoc.h>
|
#include <shlguid_undoc.h>
|
||||||
|
|
||||||
|
@ -51,7 +52,7 @@ HTREEITEM CSideTreeView::AddItem(HTREEITEM hParent, ATL::CStringW &Text, INT Ima
|
||||||
HTREEITEM CSideTreeView::AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex)
|
HTREEITEM CSideTreeView::AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex)
|
||||||
{
|
{
|
||||||
ATL::CStringW szText;
|
ATL::CStringW szText;
|
||||||
INT Index;
|
INT Index = 0;
|
||||||
HICON hIcon;
|
HICON hIcon;
|
||||||
|
|
||||||
hIcon = (HICON)LoadImageW(hInst,
|
hIcon = (HICON)LoadImageW(hInst,
|
||||||
|
@ -613,14 +614,6 @@ VOID CMainWindow::OnCommand(WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CMainWindow::SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
|
|
||||||
{
|
|
||||||
if (!*szNeedle)
|
|
||||||
return TRUE;
|
|
||||||
/* TODO: Improve pattern search beyond a simple case-insensitive substring search. */
|
|
||||||
return StrStrIW(szHaystack, szNeedle) != NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CALLBACK CMainWindow::EnumInstalledAppProc(CInstalledApplicationInfo *Info)
|
BOOL CALLBACK CMainWindow::EnumInstalledAppProc(CInstalledApplicationInfo *Info)
|
||||||
{
|
{
|
||||||
if (!SearchPatternMatch(Info->szDisplayName.GetString(), szSearchPattern))
|
if (!SearchPatternMatch(Info->szDisplayName.GetString(), szSearchPattern))
|
||||||
|
@ -723,7 +716,7 @@ ATL::CWndClassInfo &CMainWindow::GetWndClassInfo()
|
||||||
LoadCursorW(NULL, IDC_ARROW),
|
LoadCursorW(NULL, IDC_ARROW),
|
||||||
(HBRUSH)(COLOR_BTNFACE + 1),
|
(HBRUSH)(COLOR_BTNFACE + 1),
|
||||||
MAKEINTRESOURCEW(IDR_MAINMENU),
|
MAKEINTRESOURCEW(IDR_MAINMENU),
|
||||||
L"RAppsWnd",
|
szWindowClass,
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
|
NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
|
||||||
|
@ -861,7 +854,7 @@ void CMainWindow::HandleTabOrder(int direction)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOID ShowMainWindow(INT nShowCmd)
|
VOID MainWindowLoop(INT nShowCmd)
|
||||||
{
|
{
|
||||||
HACCEL KeyBrd;
|
HACCEL KeyBrd;
|
||||||
MSG Msg;
|
MSG Msg;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
VOID CreateSettingsDlg(HWND hwnd);
|
VOID CreateSettingsDlg(HWND hwnd);
|
||||||
|
|
||||||
//Main window
|
//Main window
|
||||||
VOID ShowMainWindow(INT nShowCmd);
|
VOID MainWindowLoop(INT nShowCmd);
|
||||||
|
|
||||||
// Download dialogs
|
// Download dialogs
|
||||||
VOID DownloadApplicationsDB(LPCWSTR lpUrl, BOOL IsOfficial);
|
VOID DownloadApplicationsDB(LPCWSTR lpUrl, BOOL IsOfficial);
|
||||||
|
|
|
@ -98,8 +98,6 @@ private:
|
||||||
|
|
||||||
VOID OnCommand(WPARAM wParam, LPARAM lParam);
|
VOID OnCommand(WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle);
|
|
||||||
|
|
||||||
BOOL CALLBACK EnumInstalledAppProc(CInstalledApplicationInfo *Info);
|
BOOL CALLBACK EnumInstalledAppProc(CInstalledApplicationInfo *Info);
|
||||||
|
|
||||||
BOOL CALLBACK EnumAvailableAppProc(CAvailableApplicationInfo *Info, BOOL bInitialCheckState);
|
BOOL CALLBACK EnumAvailableAppProc(CAvailableApplicationInfo *Info, BOOL bInitialCheckState);
|
||||||
|
@ -134,4 +132,4 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
VOID ShowMainWindow(INT nShowCmd);
|
VOID MainWindowLoop(INT nShowCmd);
|
||||||
|
|
|
@ -56,3 +56,5 @@ BOOL IsSystem64Bit();
|
||||||
INT GetSystemColorDepth();
|
INT GetSystemColorDepth();
|
||||||
|
|
||||||
void UnixTimeToFileTime(DWORD dwUnixTime, LPFILETIME pFileTime);
|
void UnixTimeToFileTime(DWORD dwUnixTime, LPFILETIME pFileTime);
|
||||||
|
|
||||||
|
BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle);
|
||||||
|
|
|
@ -218,6 +218,16 @@
|
||||||
#define IDS_DL_DIALOG_DB_DOWNLOAD_DISP 951
|
#define IDS_DL_DIALOG_DB_DOWNLOAD_DISP 951
|
||||||
#define IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP 952
|
#define IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP 952
|
||||||
|
|
||||||
|
/* Command-line related strings */
|
||||||
|
#define IDS_CMD_USAGE 953
|
||||||
|
#define IDS_CMD_NEED_PACKAGE_NAME 954
|
||||||
|
#define IDS_CMD_NEED_FILE_NAME 955
|
||||||
|
#define IDS_CMD_NEED_PARAMS 956
|
||||||
|
#define IDS_CMD_INVALID_OPTION 957
|
||||||
|
#define IDS_CMD_FIND_RESULT_FOR 958
|
||||||
|
#define IDS_CMD_PACKAGE_NOT_FOUND 959
|
||||||
|
#define IDS_CMD_PACKAGE_INFO 960
|
||||||
|
|
||||||
/* Accelerators */
|
/* Accelerators */
|
||||||
#define HOTKEYS 715
|
#define HOTKEYS 715
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define CMD_KEY_INSTALL L"/INSTALL"
|
#define CMD_KEY_INSTALL L"INSTALL"
|
||||||
#define CMD_KEY_SETUP L"/SETUP"
|
#define CMD_KEY_SETUP L"SETUP"
|
||||||
|
#define CMD_KEY_FIND L"FIND"
|
||||||
|
#define CMD_KEY_INFO L"INFO"
|
||||||
|
#define CMD_KEY_HELP L"?"
|
||||||
|
|
||||||
// return TRUE if the SETUP key was valid
|
const WCHAR UsageString[] = L"RAPPS [/" CMD_KEY_HELP "] [/" CMD_KEY_INSTALL " packagename] [/" CMD_KEY_SETUP " filename]";
|
||||||
BOOL UseCmdParameters(LPWSTR lpCmdLine);
|
|
||||||
|
BOOL ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow);
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#include <windef.h>
|
#include <windef.h>
|
||||||
#include <wininet.h>
|
#include <wininet.h>
|
||||||
|
|
||||||
|
extern LPCWSTR szWindowClass;
|
||||||
|
|
||||||
//TODO: Separate main and settings related definitions
|
//TODO: Separate main and settings related definitions
|
||||||
struct SETTINGS_INFO
|
struct SETTINGS_INFO
|
||||||
{
|
{
|
||||||
|
|
|
@ -255,3 +255,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -256,3 +256,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Datenbank-Aktualisierung…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Datenbank-Aktualisierung…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -254,3 +254,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizando listado…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizando listado…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Actualizando listado… (Origen no oficial)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Actualizando listado… (Origen no oficial)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -259,3 +259,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Andmebaasi uuendamine…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Andmebaasi uuendamine…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Mise à jour de la base de données…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Mise à jour de la base de données…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Mise à jour de la base de données… (Non officielle)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Mise à jour de la base de données… (Non officielle)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -257,3 +257,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "מעדכן את מסד הנתונים..."
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "מעדכן את מסד הנתונים..."
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Memperbarui database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Memperbarui database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aggiornamento Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aggiornamento Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "データベースを更新中..."
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "データベースを更新中..."
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -259,3 +259,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aktualizowanie bazy programów…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Aktualizowanie bazy programów…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -253,3 +253,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -253,3 +253,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizar base de dados…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizar base de dados…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "A actualizar Base de dados… (Fonte não oficial)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "A actualizar Base de dados… (Fonte não oficial)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -260,3 +260,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizare baza de date…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Actualizare baza de date…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -251,3 +251,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Обновление базы данных…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Обновление базы данных…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -256,3 +256,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -255,3 +255,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -258,3 +258,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Updating Database…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -253,3 +253,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Veri Tabanı güncelleniyor…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Veri Tabanı güncelleniyor…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -259,3 +259,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Оновлення списку програм…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "Оновлення списку програм…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "Updating Database… (Unofficial source)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -254,3 +254,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "正在更新数据库…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "正在更新数据库…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "正在更新数据库… (非官方源)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "正在更新数据库… (非官方源)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -253,3 +253,15 @@ BEGIN
|
||||||
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "更新資料庫…"
|
IDS_DL_DIALOG_DB_DOWNLOAD_DISP "更新資料庫…"
|
||||||
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "正在更新資料庫… (非官方源)"
|
IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP "正在更新資料庫… (非官方源)"
|
||||||
END
|
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"
|
||||||
|
END
|
||||||
|
|
|
@ -522,3 +522,11 @@ void UnixTimeToFileTime(DWORD dwUnixTime, LPFILETIME pFileTime)
|
||||||
pFileTime->dwLowDateTime = (DWORD)ll;
|
pFileTime->dwLowDateTime = (DWORD)ll;
|
||||||
pFileTime->dwHighDateTime = ll >> 32;
|
pFileTime->dwHighDateTime = ll >> 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
|
||||||
|
{
|
||||||
|
if (!*szNeedle)
|
||||||
|
return TRUE;
|
||||||
|
/* TODO: Improve pattern search beyond a simple case-insensitive substring search. */
|
||||||
|
return StrStrIW(szHaystack, szNeedle) != NULL;
|
||||||
|
}
|
||||||
|
|
|
@ -3,37 +3,81 @@
|
||||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||||
* PURPOSE: Functions to parse command-line flags and process them
|
* PURPOSE: Functions to parse command-line flags and process them
|
||||||
* COPYRIGHT: Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
|
* COPYRIGHT: Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
|
||||||
|
* Copyright 2020 He Yang (1160386205@qq.com)
|
||||||
*/
|
*/
|
||||||
#include "rapps.h"
|
#include "rapps.h"
|
||||||
|
|
||||||
#include "unattended.h"
|
#include "unattended.h"
|
||||||
|
|
||||||
|
#include "winmain.h"
|
||||||
|
|
||||||
#include <setupapi.h>
|
#include <setupapi.h>
|
||||||
|
|
||||||
#define MIN_ARGS 3
|
#include <conutils.h>
|
||||||
|
|
||||||
BOOL UseCmdParameters(LPWSTR lpCmdLine)
|
BOOL MatchCmdOption(LPWSTR argvOption, LPCWSTR szOptToMacth)
|
||||||
{
|
{
|
||||||
INT argc;
|
WCHAR FirstCharList[] = { L'-', L'/' };
|
||||||
LPWSTR* argv = CommandLineToArgvW(lpCmdLine, &argc);
|
|
||||||
|
|
||||||
if (!argv || argc < MIN_ARGS)
|
for (UINT i = 0; i < _countof(FirstCharList); i++)
|
||||||
{
|
{
|
||||||
|
if (argvOption[0] == FirstCharList[i])
|
||||||
|
{
|
||||||
|
if (StrCmpIW(argvOption + 1, szOptToMacth) == 0)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL HandleInstallCommand(LPWSTR szCommand, int argcLeft, LPWSTR * argvLeft)
|
||||||
|
{
|
||||||
|
if (argcLeft == 0)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_NEED_PACKAGE_NAME, szCommand);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
FreeConsole();
|
||||||
|
|
||||||
|
ATL::CSimpleArray<ATL::CStringW> PkgNameList;
|
||||||
|
|
||||||
|
for (int i = 0; i < argcLeft; i++)
|
||||||
|
{
|
||||||
|
PkgNameList.Add(argvLeft[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
CAvailableApps apps;
|
||||||
|
apps.UpdateAppsDB();
|
||||||
|
apps.Enum(ENUM_ALL_AVAILABLE, NULL, NULL);
|
||||||
|
|
||||||
|
ATL::CSimpleArray<CAvailableApplicationInfo> arrAppInfo = apps.FindAppsByPkgNameList(PkgNameList);
|
||||||
|
if (arrAppInfo.GetSize() > 0)
|
||||||
|
{
|
||||||
|
DownloadListOfApplications(arrAppInfo, TRUE);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL HandleSetupCommand(LPWSTR szCommand, int argcLeft, LPWSTR * argvLeft)
|
||||||
|
{
|
||||||
|
if (argcLeft != 1)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_NEED_FILE_NAME, szCommand);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ATL::CSimpleArray<ATL::CStringW> PkgNameList;
|
ATL::CSimpleArray<ATL::CStringW> PkgNameList;
|
||||||
if (!StrCmpIW(argv[1], CMD_KEY_INSTALL))
|
HINF InfHandle = SetupOpenInfFileW(argvLeft[0], NULL, INF_STYLE_WIN4, NULL);
|
||||||
{
|
|
||||||
for (INT i = 2; i < argc; ++i)
|
|
||||||
{
|
|
||||||
PkgNameList.Add(argv[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (!StrCmpIW(argv[1], CMD_KEY_SETUP))
|
|
||||||
{
|
|
||||||
HINF InfHandle = SetupOpenInfFileW(argv[2], NULL, INF_STYLE_WIN4, NULL);
|
|
||||||
if (InfHandle == INVALID_HANDLE_VALUE)
|
if (InfHandle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -52,11 +96,6 @@ BOOL UseCmdParameters(LPWSTR lpCmdLine)
|
||||||
} while (SetupFindNextLine(&Context, &Context));
|
} while (SetupFindNextLine(&Context, &Context));
|
||||||
}
|
}
|
||||||
SetupCloseInfFile(InfHandle);
|
SetupCloseInfFile(InfHandle);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CAvailableApps apps;
|
CAvailableApps apps;
|
||||||
apps.UpdateAppsDB();
|
apps.UpdateAppsDB();
|
||||||
|
@ -68,6 +107,199 @@ BOOL UseCmdParameters(LPWSTR lpCmdLine)
|
||||||
DownloadListOfApplications(arrAppInfo, TRUE);
|
DownloadListOfApplications(arrAppInfo, TRUE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CALLBACK CmdFindAppEnum(CAvailableApplicationInfo *Info, BOOL bInitialCheckState, PVOID param)
|
||||||
|
{
|
||||||
|
LPCWSTR lpszSearch = (LPCWSTR)param;
|
||||||
|
if (!SearchPatternMatch(Info->m_szName.GetString(), lpszSearch) &&
|
||||||
|
!SearchPatternMatch(Info->m_szDesc.GetString(), lpszSearch))
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"%s (%s)\n", (LPCWSTR)(Info->m_szName), (LPCWSTR)(Info->m_szPkgName));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL HandleFindCommand(LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
|
||||||
|
{
|
||||||
|
if (argcLeft < 1)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_NEED_PARAMS, szCommand);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CAvailableApps apps;
|
||||||
|
apps.UpdateAppsDB();
|
||||||
|
|
||||||
|
for (int i = 0; i < argcLeft; i++)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_FIND_RESULT_FOR, argvLeft[i]);
|
||||||
|
apps.Enum(ENUM_ALL_AVAILABLE, CmdFindAppEnum, argvLeft[i]);
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL HandleInfoCommand(LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
|
||||||
|
{
|
||||||
|
if (argcLeft < 1)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_NEED_PARAMS, szCommand);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CAvailableApps apps;
|
||||||
|
apps.UpdateAppsDB();
|
||||||
|
apps.Enum(ENUM_ALL_AVAILABLE, NULL, NULL);
|
||||||
|
|
||||||
|
for (int i = 0; i < argcLeft; i++)
|
||||||
|
{
|
||||||
|
CAvailableApplicationInfo *AppInfo = apps.FindAppByPkgName(argvLeft[i]);
|
||||||
|
if (!AppInfo)
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_PACKAGE_NOT_FOUND, argvLeft[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConResMsgPrintf(StdOut, NULL, IDS_CMD_PACKAGE_INFO, argvLeft[i]);
|
||||||
|
// TODO: code about extracting information from CAvailableApplicationInfo (in appview.cpp, class CAppRichEdit)
|
||||||
|
// is in a mess. It should be refactored, and should not placed in class CAppRichEdit.
|
||||||
|
// and the code here should reused that code after refactor.
|
||||||
|
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szName);
|
||||||
|
|
||||||
|
if (AppInfo->m_szVersion)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_VERSION);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo->m_szLicense)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_LICENSE);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szLicense);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo->m_szSize)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_SIZE);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo->m_szUrlSite)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_URLSITE);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szUrlSite);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo->m_szDesc)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_DESCRIPTION);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szDesc);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo->m_szUrlDownload)
|
||||||
|
{
|
||||||
|
ConResPrintf(StdOut, IDS_AINFO_URLDOWNLOAD);
|
||||||
|
ConPuts(StdOut, (LPWSTR)(LPCWSTR)AppInfo->m_szUrlDownload);
|
||||||
|
}
|
||||||
|
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"\n");
|
||||||
|
}
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"\n");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL HandleHelpCommand(LPWSTR szCommand, int argcLeft, LPWSTR * argvLeft)
|
||||||
|
{
|
||||||
|
if (argcLeft != 0)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"\n");
|
||||||
|
ConResPuts(StdOut, IDS_APPTITLE);
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"\n\n");
|
||||||
|
|
||||||
|
ConResPuts(StdOut, IDS_CMD_USAGE);
|
||||||
|
ConPrintf(StdOut, (LPWSTR)L"%ls\n", UsageString);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
|
||||||
|
{
|
||||||
|
INT argc;
|
||||||
|
LPWSTR *argv = CommandLineToArgvW(lpCmdLine, &argc);
|
||||||
|
|
||||||
|
if (!argv)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc == 1) // RAPPS is launched without options
|
||||||
|
{
|
||||||
|
// Close the console, and open MainWindow
|
||||||
|
FreeConsole();
|
||||||
|
|
||||||
|
|
||||||
|
// Check for if rapps MainWindow is already launched in another process
|
||||||
|
HANDLE hMutex;
|
||||||
|
|
||||||
|
hMutex = CreateMutexW(NULL, FALSE, szWindowClass);
|
||||||
|
if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
|
||||||
|
{
|
||||||
|
/* If already started, it is found its window */
|
||||||
|
HWND hWindow = FindWindowW(szWindowClass, NULL);
|
||||||
|
|
||||||
|
/* Activate window */
|
||||||
|
ShowWindow(hWindow, SW_SHOWNORMAL);
|
||||||
|
SetForegroundWindow(hWindow);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch)
|
||||||
|
CAvailableApps::ForceUpdateAppsDB();
|
||||||
|
|
||||||
|
MainWindowLoop(nCmdShow);
|
||||||
|
|
||||||
|
if (hMutex)
|
||||||
|
CloseHandle(hMutex);
|
||||||
|
}
|
||||||
|
else if (MatchCmdOption(argv[1], CMD_KEY_INSTALL))
|
||||||
|
{
|
||||||
|
return HandleInstallCommand(argv[1], argc - 2, argv + 2);
|
||||||
|
}
|
||||||
|
else if (MatchCmdOption(argv[1], CMD_KEY_SETUP))
|
||||||
|
{
|
||||||
|
return HandleSetupCommand(argv[1], argc - 2, argv + 2);
|
||||||
|
}
|
||||||
|
else if (MatchCmdOption(argv[1], CMD_KEY_FIND))
|
||||||
|
{
|
||||||
|
return HandleFindCommand(argv[1], argc - 2, argv + 2);
|
||||||
|
}
|
||||||
|
else if (MatchCmdOption(argv[1], CMD_KEY_INFO))
|
||||||
|
{
|
||||||
|
return HandleInfoCommand(argv[1], argc - 2, argv + 2);
|
||||||
|
}
|
||||||
|
else if (MatchCmdOption(argv[1], CMD_KEY_HELP))
|
||||||
|
{
|
||||||
|
return HandleHelpCommand(argv[1], argc - 2, argv + 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// unrecognized/invalid options
|
||||||
|
ConResPuts(StdOut, IDS_CMD_INVALID_OPTION);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
|
|
||||||
#include <gdiplus.h>
|
#include <gdiplus.h>
|
||||||
|
|
||||||
|
#include <conutils.h>
|
||||||
|
|
||||||
|
LPCWSTR szWindowClass = L"ROSAPPMGR";
|
||||||
|
|
||||||
HWND hMainWnd;
|
HWND hMainWnd;
|
||||||
HINSTANCE hInst;
|
HINSTANCE hInst;
|
||||||
SETTINGS_INFO SettingsInfo;
|
SETTINGS_INFO SettingsInfo;
|
||||||
|
@ -139,13 +143,13 @@ VOID SaveSettings(HWND hwnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, INT nShowCmd)
|
int wmain(int argc, wchar_t *argv[])
|
||||||
{
|
{
|
||||||
LPCWSTR szWindowClass = L"ROSAPPMGR";
|
ConInitStdStreams(); // Initialize the Console Standard Streams
|
||||||
HANDLE hMutex;
|
|
||||||
BOOL bIsFirstLaunch;
|
BOOL bIsFirstLaunch;
|
||||||
|
|
||||||
InitializeAtlModule(hInstance, TRUE);
|
InitializeAtlModule(GetModuleHandle(NULL), TRUE);
|
||||||
InitializeGDIPlus(TRUE);
|
InitializeGDIPlus(TRUE);
|
||||||
|
|
||||||
if (GetUserDefaultUILanguage() == MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT))
|
if (GetUserDefaultUILanguage() == MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT))
|
||||||
|
@ -153,19 +157,8 @@ INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||||
SetProcessDefaultLayout(LAYOUT_RTL);
|
SetProcessDefaultLayout(LAYOUT_RTL);
|
||||||
}
|
}
|
||||||
|
|
||||||
hInst = hInstance;
|
hInst = GetModuleHandle(NULL);
|
||||||
|
|
||||||
hMutex = CreateMutexW(NULL, FALSE, szWindowClass);
|
|
||||||
if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
|
|
||||||
{
|
|
||||||
/* If already started, it is found its window */
|
|
||||||
HWND hWindow = FindWindowW(szWindowClass, NULL);
|
|
||||||
|
|
||||||
/* Activate window */
|
|
||||||
ShowWindow(hWindow, SW_SHOWNORMAL);
|
|
||||||
SetForegroundWindow(hWindow);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
bIsFirstLaunch = !LoadSettings();
|
bIsFirstLaunch = !LoadSettings();
|
||||||
if (bIsFirstLaunch)
|
if (bIsFirstLaunch)
|
||||||
{
|
{
|
||||||
|
@ -175,20 +168,11 @@ INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||||
InitLogs();
|
InitLogs();
|
||||||
InitCommonControls();
|
InitCommonControls();
|
||||||
|
|
||||||
// skip window creation if there were some keys
|
// parse cmd-line and perform the corresponding operation
|
||||||
if (!UseCmdParameters(GetCommandLineW()))
|
BOOL bSuccess = ParseCmdAndExecute(GetCommandLineW(), bIsFirstLaunch, SW_SHOWNORMAL);
|
||||||
{
|
|
||||||
if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch)
|
|
||||||
CAvailableApps::ForceUpdateAppsDB();
|
|
||||||
|
|
||||||
ShowMainWindow(nShowCmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hMutex)
|
|
||||||
CloseHandle(hMutex);
|
|
||||||
|
|
||||||
InitializeGDIPlus(FALSE);
|
InitializeGDIPlus(FALSE);
|
||||||
InitializeAtlModule(hInstance, FALSE);
|
InitializeAtlModule(GetModuleHandle(NULL), FALSE);
|
||||||
|
|
||||||
return 0;
|
return bSuccess ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue