/*
- * PROJECT: ReactOS Applications Manager
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: base/applications/rapps/installed.cpp
- * PURPOSE: Functions for working with installed applications
- * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
- * Alexander Shaposhnikov (chaez.san@gmail.com)
+ * PROJECT: ReactOS Applications Manager
+ * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * FILE: base/applications/rapps/installed.cpp
+ * PURPOSE: Functions for working with installed applications
+ * COPYRIGHT: Copyright 2009 Dmitry Chapyshev (dmitry@reactos.org)
+ * Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
*/
-
#include "rapps.h"
-BOOL
-GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, ATL::CStringW& String)
+#include "installed.h"
+
+#include "gui.h"
+#include "misc.h"
+
+BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, ATL::CStringW& String)
{
BOOL result = GetApplicationString(hKey, lpKeyName, String.GetBuffer(MAX_PATH));
String.ReleaseBuffer();
return result;
}
-BOOL
-GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString)
+BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString)
{
DWORD dwSize = MAX_PATH * sizeof(WCHAR);
return FALSE;
}
-BOOL
-GetInstalledVersion_WowUser(_Out_opt_ ATL::CStringW* szVersionResult, _In_z_ const ATL::CStringW& RegName, _In_ BOOL IsUserKey, _In_ REGSAM keyWow)
-{
- HKEY hKey;
- BOOL bHasSucceded = FALSE;
- ATL::CStringW szVersion;
- ATL::CStringW szPath = L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + RegName;
-
- if (RegOpenKeyExW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
- szPath.GetString(), 0, keyWow | KEY_READ,
- &hKey) == ERROR_SUCCESS)
- {
- if (szVersionResult)
- {
- DWORD dwSize = MAX_PATH * sizeof(WCHAR);
- DWORD dwType = REG_SZ;
- if (RegQueryValueExW(hKey,
- L"DisplayVersion",
- NULL,
- &dwType,
- (LPBYTE) szVersion.GetBuffer(MAX_PATH),
- &dwSize) == ERROR_SUCCESS)
- {
- szVersion.ReleaseBuffer();
- *szVersionResult = szVersion;
- bHasSucceded = TRUE;
- }
- else
- {
- szVersion.ReleaseBuffer();
- }
- }
- else
- {
- bHasSucceded = TRUE;
- szVersion.ReleaseBuffer();
- }
-
- }
-
- RegCloseKey(hKey);
- return bHasSucceded;
-}
-
-
-BOOL
-UninstallApplication(INT Index, BOOL bModify)
+BOOL UninstallApplication(INT Index, BOOL bModify)
{
LPCWSTR szModify = L"ModifyPath";
LPCWSTR szUninstall = L"UninstallString";
WCHAR szAppName[MAX_STR_LEN];
DWORD dwType, dwSize;
INT ItemIndex;
- LVITEM Item;
+ LVITEMW Item;
HKEY hKey;
PINSTALLED_INFO ItemInfo;
- if (!IS_INSTALLED_ENUM(SelectedEnumType))
+ if (!IsInstalledEnum(SelectedEnumType))
return FALSE;
if (Index == -1)
return StartProcess(szPath, TRUE);
}
-
-BOOL
-ShowInstalledAppInfo(INT Index)
+BOOL ShowInstalledAppInfo(INT Index)
{
ATL::CStringW szText;
ATL::CStringW szInfo;
#define GET_INFO(a, b, c, d) \
if (GetApplicationString(Info->hSubKey, a, szInfo)) \
{ \
- szText.LoadStringW(hInst, b); \
+ szText.LoadStringW(b); \
InsertRichEditText(szText, c); \
InsertRichEditText(szInfo, d); \
} \
return TRUE;
}
-
-VOID
-RemoveAppFromRegistry(INT Index)
+VOID RemoveAppFromRegistry(INT Index)
{
PINSTALLED_INFO Info;
WCHAR szFullName[MAX_PATH] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
ATL::CStringW szMsgText, szMsgTitle;
- INT ItemIndex = SendMessage(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
+ INT ItemIndex = SendMessageW(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
- if (!IS_INSTALLED_ENUM(SelectedEnumType))
+ if (!IsInstalledEnum(SelectedEnumType))
return;
Info = (PINSTALLED_INFO) ListViewGetlParam(Index);
if (!Info || !Info->hSubKey || (ItemIndex == -1)) return;
- if (!szMsgText.LoadStringW(hInst, IDS_APP_REG_REMOVE) ||
- !szMsgTitle.LoadStringW(hInst, IDS_INFORMATION))
+ if (!szMsgText.LoadStringW(IDS_APP_REG_REMOVE) ||
+ !szMsgTitle.LoadStringW(IDS_INFORMATION))
return;
if (MessageBoxW(hMainWnd, szMsgText, szMsgTitle, MB_YESNO | MB_ICONQUESTION) == IDYES)
{
- ATL::CStringW::CopyChars(szFullName,
- MAX_PATH,
- Info->szKeyName.GetString(),
+ ATL::CStringW::CopyChars(szFullName,
+ MAX_PATH,
+ Info->szKeyName.GetString(),
MAX_PATH - wcslen(szFullName));
if (RegDeleteKeyW(Info->hRootKey, szFullName) == ERROR_SUCCESS)
return;
}
- if (!szMsgText.LoadStringW(hInst, IDS_UNABLE_TO_REMOVE))
+ if (!szMsgText.LoadStringW(IDS_UNABLE_TO_REMOVE))
return;
MessageBoxW(hMainWnd, szMsgText.GetString(), NULL, MB_OK | MB_ICONERROR);
}
}
-
-BOOL
-EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc)
+BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc)
{
DWORD dwSize = MAX_PATH, dwType, dwValue;
BOOL bIsSystemComponent, bIsUpdate;
&dwSize) == ERROR_SUCCESS)
{
szDisplayName.ReleaseBuffer();
- if (EnumType < ENUM_ALL_COMPONENTS || EnumType > ENUM_UPDATES)
- EnumType = ENUM_ALL_COMPONENTS;
+ if (EnumType < ENUM_ALL_INSTALLED || EnumType > ENUM_UPDATES)
+ EnumType = ENUM_ALL_INSTALLED;
if (!bIsSystemComponent)
{
- if ((EnumType == ENUM_ALL_COMPONENTS) || /* All components */
- ((EnumType == ENUM_APPLICATIONS) && (!bIsUpdate)) || /* Applications only */
+ if ((EnumType == ENUM_ALL_INSTALLED) || /* All components */
+ ((EnumType == ENUM_INSTALLED_APPLICATIONS) && (!bIsUpdate)) || /* Applications only */
((EnumType == ENUM_UPDATES) && (bIsUpdate))) /* Updates only */
{
if (!lpEnumProc(ItemIndex, szDisplayName, &Info))