ReactOS 0.4.17-dev-243-g1369312
unattended.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CMD_KEY_APPWIZ   L"APPWIZ"
 
#define CMD_KEY_GENINST   L"GENINST"
 
#define CMD_KEY_UNINSTALL   L"UNINSTALL"
 
#define CMD_KEY_INSTALL   L"INSTALL"
 
#define CMD_KEY_SETUP   L"SETUP"
 
#define CMD_KEY_FIND   L"FIND"
 
#define CMD_KEY_INFO   L"INFO"
 
#define CMD_KEY_HELP   L"?"
 
#define CMD_KEY_HELP_ALT   L"HELP"
 

Functions

BOOL ParseCmdAndExecute (LPWSTR lpCmdLine, BOOL bIsFirstLaunch, int nCmdShow)
 

Variables

const WCHAR UsageString []
 

Macro Definition Documentation

◆ CMD_KEY_APPWIZ

#define CMD_KEY_APPWIZ   L"APPWIZ"

Definition at line 3 of file unattended.h.

◆ CMD_KEY_FIND

#define CMD_KEY_FIND   L"FIND"

Definition at line 8 of file unattended.h.

◆ CMD_KEY_GENINST

#define CMD_KEY_GENINST   L"GENINST"

Definition at line 4 of file unattended.h.

◆ CMD_KEY_HELP

#define CMD_KEY_HELP   L"?"

Definition at line 10 of file unattended.h.

◆ CMD_KEY_HELP_ALT

#define CMD_KEY_HELP_ALT   L"HELP"

Definition at line 11 of file unattended.h.

◆ CMD_KEY_INFO

#define CMD_KEY_INFO   L"INFO"

Definition at line 9 of file unattended.h.

◆ CMD_KEY_INSTALL

#define CMD_KEY_INSTALL   L"INSTALL"

Definition at line 6 of file unattended.h.

◆ CMD_KEY_SETUP

#define CMD_KEY_SETUP   L"SETUP"

Definition at line 7 of file unattended.h.

◆ CMD_KEY_UNINSTALL

#define CMD_KEY_UNINSTALL   L"UNINSTALL"

Definition at line 5 of file unattended.h.

Function Documentation

◆ ParseCmdAndExecute()

BOOL ParseCmdAndExecute ( LPWSTR  lpCmdLine,
BOOL  bIsFirstLaunch,
int  nCmdShow 
)

Definition at line 345 of file unattended.cpp.

346{
347 INT argc;
348 LPWSTR *argv = CommandLineToArgvW(lpCmdLine, &argc);
349 if (!argv)
350 return FALSE;
351
353
354 BOOL bAppwizMode = (argc > 1 && MatchCmdOption(argv[1], CMD_KEY_APPWIZ));
355 if (!bAppwizMode)
356 {
358 if (SettingsInfo.bUpdateAtStart || bIsFirstLaunch)
359 db.RemoveCached();
360
361 db.UpdateAvailable();
362 }
363
364 db.UpdateInstalled();
365
366 if (argc == 1 || bAppwizMode) // RAPPS is launched without options or APPWIZ mode is requested
367 {
368 // Check whether the RAPPS MainWindow is already launched in another process
369 CStringW szWindowText(MAKEINTRESOURCEW(bAppwizMode ? IDS_APPWIZ_TITLE : IDS_APPTITLE));
370 LPCWSTR pszMutex = bAppwizMode ? L"RAPPWIZ" : MAINWINDOWMUTEX;
371
372 HANDLE hMutex = CreateMutexW(NULL, FALSE, pszMutex);
374 {
375 /* If already started, find its window */
376 HWND hWindow;
377 for (int wait = 2500, inter = 250; wait > 0; wait -= inter)
378 {
379 if ((hWindow = FindWindowW(szWindowClass, szWindowText)) != NULL)
380 break;
381 Sleep(inter);
382 }
383
384 if (hWindow)
385 {
386 /* Activate the window in the other instance */
387 ShowWindow(hWindow, SW_SHOWNA);
388 SwitchToThisWindow(hWindow, TRUE);
389 if (bAppwizMode)
391
392 if (hMutex)
394
395 return FALSE;
396 }
397 }
398 szWindowText.Empty();
399
400 CMainWindow wnd(&db, bAppwizMode);
401 MainWindowLoop(&wnd, nCmdShow);
402
403 if (hMutex)
405
406 return TRUE;
407 }
408
410 {
411 return HandleInstallCommand(&db, argv[1], argc - 2, argv + 2);
412 }
413 else if (MatchCmdOption(argv[1], CMD_KEY_SETUP))
414 {
415 return HandleSetupCommand(&db, argv[1], argc - 2, argv + 2);
416 }
418 {
419 return HandleUninstallCommand(db, argc - 2, argv + 2);
420 }
421 else if (MatchCmdOption(argv[1], CMD_KEY_GENINST))
422 {
423 return HandleGenerateInstallerCommand(db, argc - 2, argv + 2);
424 }
425
427
429 {
430 return HandleFindCommand(&db, argv[1], argc - 2, argv + 2);
431 }
432 else if (MatchCmdOption(argv[1], CMD_KEY_INFO))
433 {
434 return HandleInfoCommand(&db, argv[1], argc - 2, argv + 2);
435 }
437 {
439 return TRUE;
440 }
441 else
442 {
443 // unrecognized/invalid options
446 return FALSE;
447 }
448}
#define IDS_APPTITLE
Definition: resource.h:3
#define ID_ACTIVATE_APPWIZ
Definition: resource.h:89
#define IDS_CMD_INVALID_OPTION
Definition: resource.h:236
#define IDS_APPWIZ_TITLE
Definition: resource.h:97
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:21
Definition: appdb.h:9
static CStringW GetDefaultPath()
Definition: appdb.cpp:87
#define StdOut
Definition: conutils_noros.h:6
void ConResPuts(FILE *fp, UINT nID)
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
MonoAssembly int argc
Definition: metahost.c:107
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
VOID MainWindowLoop(CMainWindow *wnd, INT nShowCmd)
Definition: gui.cpp:899
const TCHAR szWindowClass[]
Definition: magnifier.c:28
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80
HANDLE hMutex
Definition: mutex.c:11
#define argv
Definition: mplay32.c:18
#define MAINWINDOWMUTEX
Definition: rapps.h:23
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
Definition: shell32_main.c:79
BOOL bUpdateAtStart
Definition: settings.h:8
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:726
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:525
rwlock_t lock
Definition: tcpcore.h:0
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
static BOOL HandleInfoCommand(CAppDB *db, LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:266
static BOOL HandleUninstallCommand(CAppDB &db, UINT argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:139
static BOOL MatchCmdOption(LPWSTR argvOption, LPCWSTR szOptToMacth)
Definition: unattended.cpp:16
static void InitRappsConsole()
Definition: unattended.cpp:31
static BOOL HandleFindCommand(CAppDB *db, LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:232
static VOID PrintHelpCommand()
Definition: unattended.cpp:334
static BOOL HandleInstallCommand(CAppDB *db, LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:63
static BOOL HandleGenerateInstallerCommand(CAppDB &db, UINT argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:211
static BOOL HandleSetupCommand(CAppDB *db, LPWSTR szCommand, int argcLeft, LPWSTR *argvLeft)
Definition: unattended.cpp:94
#define CMD_KEY_INFO
Definition: unattended.h:9
#define CMD_KEY_INSTALL
Definition: unattended.h:6
#define CMD_KEY_SETUP
Definition: unattended.h:7
#define CMD_KEY_HELP
Definition: unattended.h:10
#define CMD_KEY_UNINSTALL
Definition: unattended.h:5
#define CMD_KEY_HELP_ALT
Definition: unattended.h:11
#define CMD_KEY_GENINST
Definition: unattended.h:4
#define CMD_KEY_APPWIZ
Definition: unattended.h:3
#define CMD_KEY_FIND
Definition: unattended.h:8
VOID WINAPI SwitchToThisWindow(HWND hwnd, BOOL fAltTab)
Definition: window.c:82
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define WM_COMMAND
Definition: winuser.h:1768
#define SW_SHOWNA
Definition: winuser.h:789
#define PostMessage
Definition: winuser.h:5998
HWND WINAPI FindWindowW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582

Referenced by wWinMain().

Variable Documentation

◆ UsageString

const WCHAR UsageString[]
Initial value:
= L"RAPPS \
[/" CMD_KEY_HELP L"] \
[/" CMD_KEY_INSTALL L" [/S] packagename] \
[/" CMD_KEY_UNINSTALL L" packagename|displayname] \
[/" CMD_KEY_SETUP L" [/S] filename] \
[/" CMD_KEY_FIND L" string] \
[/" CMD_KEY_INFO L" packagename]"

Definition at line 14 of file unattended.h.

Referenced by PrintHelpCommand().