9 #define WIN32_NO_STATUS
11 #define COM_NO_WINDOWS_H
27 #include <ndk/rtlfuncs.h>
29 #include <atlsimpcoll.h>
35 #ifdef USE_CERT_PINNING
36 #define CERT_ISSUER_INFO "BE\r\nGlobalSign nv-sa\r\nGlobalSign Domain Validation CA - SHA256 - G2"
37 #define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org"
40 #define APPLICATION_DATABASE_URL L"https://svn.reactos.org/packages/rappmgr.cab"
43 #define MAX_STR_LEN 256
44 #define LISTVIEW_ICON_SIZE 24
45 #define TREEVIEW_ICON_SIZE 24
47 /* EnumType flags for EnumInstalledApplications */
48 #define ENUM_ALL_COMPONENTS 30
49 #define ENUM_APPLICATIONS 31
50 #define ENUM_UPDATES 32
51 /* EnumType flags for EnumAvailableApplications */
52 #define ENUM_ALL_AVAILABLE 0
53 #define ENUM_CAT_AUDIO 1
54 #define ENUM_CAT_VIDEO 2
55 #define ENUM_CAT_GRAPHICS 3
56 #define ENUM_CAT_GAMES 4
57 #define ENUM_CAT_INTERNET 5
58 #define ENUM_CAT_OFFICE 6
59 #define ENUM_CAT_DEVEL 7
60 #define ENUM_CAT_EDU 8
61 #define ENUM_CAT_ENGINEER 9
62 #define ENUM_CAT_FINANCE 10
63 #define ENUM_CAT_SCIENCE 11
64 #define ENUM_CAT_TOOLS 12
65 #define ENUM_CAT_DRIVERS 13
66 #define ENUM_CAT_LIBS 14
67 #define ENUM_CAT_OTHER 15
69 #define ENUM_INSTALLED_MIN ENUM_ALL_COMPONENTS
70 #define ENUM_INSTALLED_MAX ENUM_UPDATES
71 #define ENUM_AVAILABLE_MIN ENUM_ALL_AVAILABLE
72 #define ENUM_AVAILABLE_MAX ENUM_CAT_OTHER
74 #define IS_INSTALLED_ENUM(a) (a >= ENUM_INSTALLED_MIN && a <= ENUM_INSTALLED_MAX)
75 #define IS_AVAILABLE_ENUM(a) (a >= ENUM_AVAILABLE_MIN && a <= ENUM_AVAILABLE_MAX)
85 } LICENSE_TYPE
, *PLICENSE_TYPE
;
88 VOID
ShowAboutDialog(VOID
);
94 LICENSE_TYPE LicenseType
;
96 ATL::CStringW szRegName
;
97 ATL::CStringW szVersion
;
98 ATL::CStringW szLicense
;
100 ATL::CStringW szSize
;
101 ATL::CStringW szUrlSite
;
102 ATL::CStringW szUrlDownload
;
103 ATL::CStringW szCDPath
;
104 ATL::CSimpleArray
<ATL::CStringW
> Languages
;
106 /* caching mechanism related entries */
107 ATL::CStringW sFileName
;
108 FILETIME ftCacheStamp
;
110 /* optional integrity checks (SHA-1 digests are 160 bit = 40 characters in hex string form) */
111 ATL::CStringW szSHA1
;
113 } APPLICATION_INFO
, *PAPPLICATION_INFO
;
115 extern ATL::CAtlList
<PAPPLICATION_INFO
> InfoList
;
121 ATL::CStringW szKeyName
;
123 } INSTALLED_INFO
, *PINSTALLED_INFO
;
130 WCHAR szDownloadDir
[MAX_PATH
];
140 WCHAR szProxyServer
[MAX_PATH
];
141 WCHAR szNoProxyFor
[MAX_PATH
];
143 } SETTINGS_INFO
, *PSETTINGS_INFO
;
146 typedef BOOL (CALLBACK
*AVAILENUMPROC
)(PAPPLICATION_INFO Info
, LPCWSTR szFolderPath
);
147 struct CAvailableApplicationInfo
: public APPLICATION_INFO
149 ATL::CStringW szInstalledVersion
;
151 CAvailableApplicationInfo(const ATL::CStringW
& sFileNameParam
);
153 // Load all info from the file
154 VOID
RefreshAppInfo();
158 BOOL
HasLanguageInfo() const;
159 BOOL
HasNativeLanguage() const;
160 BOOL
HasEnglishLanguage() const;
161 BOOL
IsInstalled() const;
162 BOOL
HasInstalledVersion() const;
163 BOOL
HasUpdate() const;
166 VOID
SetLastWriteTime(FILETIME
* ftTime
);
169 BOOL m_IsInstalled
= FALSE
;
170 BOOL m_HasLanguageInfo
= FALSE
;
171 BOOL m_HasInstalledVersion
= FALSE
;
173 inline BOOL
GetString(LPCWSTR lpKeyName
,
174 ATL::CStringW
& ReturnedString
);
176 // Lazily load general info from the file
177 BOOL
RetrieveGeneralInfo();
178 VOID
RetrieveInstalledStatus();
179 VOID
RetrieveInstalledVersion();
180 BOOL
RetrieveLanguages();
181 VOID
RetrieveLicenseType();
182 VOID
RetrieveCategory();
187 ATL::CAtlList
<CAvailableApplicationInfo
*> m_InfoList
;
188 ATL::CStringW m_szPath
;
189 ATL::CStringW m_szCabPath
;
190 ATL::CStringW m_szAppsPath
;
191 ATL::CStringW m_szSearchPath
;
195 VOID
FreeCachedEntries();
196 BOOL
DeleteCurrentAppsDB();
198 BOOL
EnumAvailableApplications(INT EnumType
, AVAILENUMPROC lpEnumProc
);
199 const ATL::CStringW
& GetFolderPath();
200 const ATL::CStringW
& GetAppPath();
201 const ATL::CStringW
& GetCabPath();
202 const LPCWSTR
GetFolderPathString();
203 const LPCWSTR
GetAppPathString();
204 const LPCWSTR
GetCabPathString();
208 BOOL
InstallApplication(INT Index
);
211 typedef BOOL (CALLBACK
*APPENUMPROC
)(INT ItemIndex
, ATL::CStringW
&lpName
, PINSTALLED_INFO Info
);
212 BOOL
EnumInstalledApplications(INT EnumType
, BOOL IsUserKey
, APPENUMPROC lpEnumProc
);
213 BOOL
GetApplicationString(HKEY hKey
, LPCWSTR lpKeyName
, LPWSTR szString
);
214 BOOL
GetApplicationString(HKEY hKey
, LPCWSTR RegName
, ATL::CStringW
& String
);
216 BOOL
ShowInstalledAppInfo(INT Index
);
217 BOOL
UninstallApplication(INT Index
, BOOL bModify
);
218 VOID
RemoveAppFromRegistry(INT Index
);
220 BOOL
GetInstalledVersion(ATL::CStringW
* pszVersion
, const ATL::CStringW
& szRegName
);
223 extern HWND hMainWnd
;
224 extern HINSTANCE hInst
;
225 extern INT SelectedEnumType
;
226 extern SETTINGS_INFO SettingsInfo
;
227 VOID
SaveSettings(HWND hwnd
);
228 VOID
FillDefaultSettings(PSETTINGS_INFO pSettingsInfo
);
231 BOOL
DownloadApplication(INT Index
);
232 VOID
DownloadApplicationsDB(LPCWSTR lpUrl
);
235 INT
GetSystemColorDepth(VOID
);
236 int GetWindowWidth(HWND hwnd
);
237 int GetWindowHeight(HWND hwnd
);
238 int GetClientWindowWidth(HWND hwnd
);
239 int GetClientWindowHeight(HWND hwnd
);
240 VOID
CopyTextToClipboard(LPCWSTR lpszText
);
241 VOID
SetWelcomeText(VOID
);
242 VOID
ShowPopupMenu(HWND hwnd
, UINT MenuID
, UINT DefaultItem
);
243 BOOL
StartProcess(ATL::CStringW
& Path
, BOOL Wait
);
244 BOOL
StartProcess(LPWSTR lpPath
, BOOL Wait
);
245 BOOL
GetStorageDirectory(ATL::CStringW
&lpDirectory
);
246 BOOL
ExtractFilesFromCab(LPCWSTR lpCabName
, LPCWSTR lpOutputPath
);
249 BOOL
WriteLogMessage(WORD wType
, DWORD dwEventID
, LPCWSTR lpMsg
);
251 UINT
ParserGetString(const ATL::CStringW
& KeyName
, const ATL::CStringW
& FileName
, ATL::CStringW
& ReturnedString
);
252 UINT
ParserGetInt(const ATL::CStringW
& KeyName
, const ATL::CStringW
& FileName
);
254 /* settingsdlg.cpp */
255 VOID
CreateSettingsDlg(HWND hwnd
);
258 HWND
CreateMainWindow();
259 DWORD_PTR
ListViewGetlParam(INT item
);
260 INT
ListViewAddItem(INT ItemIndex
, INT IconIndex
, LPWSTR lpName
, LPARAM lParam
);
261 VOID
SetStatusBarText(LPCWSTR szText
);
262 VOID
NewRichEditText(LPCWSTR szText
, DWORD flags
);
263 VOID
InsertRichEditText(LPCWSTR szText
, DWORD flags
);
265 VOID
SetStatusBarText(const ATL::CStringW
& szText
);
266 INT
ListViewAddItem(INT ItemIndex
, INT IconIndex
, ATL::CStringW
& Name
, LPARAM lParam
);
267 VOID
NewRichEditText(const ATL::CStringW
& szText
, DWORD flags
);
268 VOID
InsertRichEditText(const ATL::CStringW
& szText
, DWORD flags
);
269 CAvailableApps
* GetAvailableApps();
270 extern HWND hListView
;
271 extern ATL::CStringW szSearchPattern
;
274 BOOL
VerifyInteg(LPCWSTR lpSHA1Hash
, LPCWSTR lpFileName
);
276 //extern HWND hTreeView;
277 //BOOL CreateTreeView(HWND hwnd);
278 //HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);
280 #endif /* _RAPPS_H */