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
<LCID
> 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
;
148 // Loacale names cache
149 static ATL::CStringW m_szLocaleID
;
150 const static INT m_cchLocaleSize
= 5;
151 static ATL::CStringW m_szCachedINISectionLocale
;
152 static ATL::CStringW m_szCachedINISectionLocaleNeutral
;
154 const LPCWSTR STR_VERSION_CURRENT
= L
"CURRENT";
155 const ATL::CStringW szConfigPath
;
157 static ATL::CStringW
GetINIFullPath(const ATL::CStringW
& FileName
);
158 static VOID
CacheINILocaleLazy();
161 static const ATL::CStringW
& GetLocale();
162 static INT
CConfigParser::GetLocaleSize();
164 CConfigParser(const ATL::CStringW
& FileName
);
166 UINT
GetString(const ATL::CStringW
& KeyName
, ATL::CStringW
& ResultString
);
167 UINT
GetInt(const ATL::CStringW
& KeyName
);
170 typedef BOOL (CALLBACK
*AVAILENUMPROC
)(PAPPLICATION_INFO Info
, LPCWSTR szFolderPath
);
171 struct CAvailableApplicationInfo
: public APPLICATION_INFO
173 ATL::CStringW szInstalledVersion
;
174 CAvailableApplicationInfo(const ATL::CStringW
& sFileNameParam
);
176 // Load all info from the file
177 VOID
RefreshAppInfo();
178 BOOL
HasLanguageInfo() const;
179 BOOL
HasNativeLanguage() const;
180 BOOL
HasEnglishLanguage() const;
181 BOOL
IsInstalled() const;
182 BOOL
HasInstalledVersion() const;
183 BOOL
HasUpdate() const;
186 VOID
SetLastWriteTime(FILETIME
* ftTime
);
189 BOOL m_IsInstalled
= FALSE
;
190 BOOL m_HasLanguageInfo
= FALSE
;
191 BOOL m_HasInstalledVersion
= FALSE
;
192 CConfigParser m_Parser
;
194 inline BOOL
GetString(LPCWSTR lpKeyName
,
195 ATL::CStringW
& ReturnedString
);
197 // Lazily load general info from the file
198 VOID
RetrieveGeneralInfo();
199 VOID
RetrieveInstalledStatus();
200 VOID
RetrieveInstalledVersion();
201 VOID
RetrieveLanguages();
202 VOID
RetrieveLicenseType();
203 inline BOOL
FindInLanguages(LCID what
) const;
208 ATL::CAtlList
<CAvailableApplicationInfo
*> m_InfoList
;
209 ATL::CStringW m_szPath
;
210 ATL::CStringW m_szCabPath
;
211 ATL::CStringW m_szAppsPath
;
212 ATL::CStringW m_szSearchPath
;
216 VOID
FreeCachedEntries();
217 BOOL
DeleteCurrentAppsDB();
219 BOOL
EnumAvailableApplications(INT EnumType
, AVAILENUMPROC lpEnumProc
);
220 const ATL::CStringW
& GetFolderPath();
221 const ATL::CStringW
& GetAppPath();
222 const ATL::CStringW
& GetCabPath();
223 const LPCWSTR
GetFolderPathString();
224 const LPCWSTR
GetAppPathString();
225 const LPCWSTR
GetCabPathString();
229 BOOL
InstallApplication(INT Index
);
232 typedef BOOL (CALLBACK
*APPENUMPROC
)(INT ItemIndex
, ATL::CStringW
&lpName
, PINSTALLED_INFO Info
);
233 BOOL
EnumInstalledApplications(INT EnumType
, BOOL IsUserKey
, APPENUMPROC lpEnumProc
);
234 BOOL
GetApplicationString(HKEY hKey
, LPCWSTR lpKeyName
, LPWSTR szString
);
235 BOOL
GetApplicationString(HKEY hKey
, LPCWSTR RegName
, ATL::CStringW
& String
);
237 BOOL
ShowInstalledAppInfo(INT Index
);
238 BOOL
UninstallApplication(INT Index
, BOOL bModify
);
239 VOID
RemoveAppFromRegistry(INT Index
);
241 BOOL
GetInstalledVersion(ATL::CStringW
* pszVersion
, const ATL::CStringW
& szRegName
);
244 extern HWND hMainWnd
;
245 extern HINSTANCE hInst
;
246 extern INT SelectedEnumType
;
247 extern SETTINGS_INFO SettingsInfo
;
248 VOID
SaveSettings(HWND hwnd
);
249 VOID
FillDefaultSettings(PSETTINGS_INFO pSettingsInfo
);
252 BOOL
DownloadApplication(INT Index
);
253 VOID
DownloadApplicationsDB(LPCWSTR lpUrl
);
256 INT
GetSystemColorDepth(VOID
);
257 int GetWindowWidth(HWND hwnd
);
258 int GetWindowHeight(HWND hwnd
);
259 int GetClientWindowWidth(HWND hwnd
);
260 int GetClientWindowHeight(HWND hwnd
);
261 VOID
CopyTextToClipboard(LPCWSTR lpszText
);
262 VOID
SetWelcomeText(VOID
);
263 VOID
ShowPopupMenu(HWND hwnd
, UINT MenuID
, UINT DefaultItem
);
264 BOOL
StartProcess(ATL::CStringW
& Path
, BOOL Wait
);
265 BOOL
StartProcess(LPWSTR lpPath
, BOOL Wait
);
266 BOOL
GetStorageDirectory(ATL::CStringW
&lpDirectory
);
267 BOOL
ExtractFilesFromCab(LPCWSTR lpCabName
, LPCWSTR lpOutputPath
);
270 BOOL
WriteLogMessage(WORD wType
, DWORD dwEventID
, LPCWSTR lpMsg
);
272 /* settingsdlg.cpp */
273 VOID
CreateSettingsDlg(HWND hwnd
);
276 HWND
CreateMainWindow();
277 DWORD_PTR
ListViewGetlParam(INT item
);
278 INT
ListViewAddItem(INT ItemIndex
, INT IconIndex
, LPWSTR lpName
, LPARAM lParam
);
279 VOID
SetStatusBarText(LPCWSTR szText
);
280 VOID
NewRichEditText(LPCWSTR szText
, DWORD flags
);
281 VOID
InsertRichEditText(LPCWSTR szText
, DWORD flags
);
283 VOID
SetStatusBarText(const ATL::CStringW
& szText
);
284 INT
ListViewAddItem(INT ItemIndex
, INT IconIndex
, ATL::CStringW
& Name
, LPARAM lParam
);
285 VOID
NewRichEditText(const ATL::CStringW
& szText
, DWORD flags
);
286 VOID
InsertRichEditText(const ATL::CStringW
& szText
, DWORD flags
);
287 CAvailableApps
* GetAvailableApps();
288 extern HWND hListView
;
289 extern ATL::CStringW szSearchPattern
;
292 BOOL
VerifyInteg(LPCWSTR lpSHA1Hash
, LPCWSTR lpFileName
);
294 //extern HWND hTreeView;
295 //BOOL CreateTreeView(HWND hwnd);
296 //HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);
298 #endif /* _RAPPS_H */