5 #include <atlsimpcoll.h>
9 /* EnumType flags for EnumAvailableApplications */
10 enum AvailableCategories
28 ENUM_AVAILABLE_MIN
= ENUM_ALL_AVAILABLE
,
29 ENUM_AVAILABLE_MAX
= ENUM_CAT_OTHER
32 inline BOOL
IsAvailableEnum(INT x
)
34 return (x
>= ENUM_AVAILABLE_MIN
&& x
<= ENUM_AVAILABLE_MAX
);
37 typedef enum LICENSE_TYPE
47 struct CAvailableApplicationInfo
50 LICENSE_TYPE LicenseType
;
52 ATL::CStringW szRegName
;
53 ATL::CStringW szVersion
;
54 ATL::CStringW szLicense
;
57 ATL::CStringW szUrlSite
;
58 ATL::CStringW szUrlDownload
;
59 ATL::CStringW szCDPath
;
60 ATL::CSimpleArray
<LCID
> Languages
;
62 // Caching mechanism related entries
63 ATL::CStringW sFileName
;
64 FILETIME ftCacheStamp
;
66 // Optional integrity checks (SHA-1 digests are 160 bit = 40 characters in hex string form)
68 ATL::CStringW szInstalledVersion
;
70 CAvailableApplicationInfo(const ATL::CStringW
& sFileNameParam
);
72 // Load all info from the file
73 VOID
RefreshAppInfo();
74 BOOL
HasLanguageInfo() const;
75 BOOL
HasNativeLanguage() const;
76 BOOL
HasEnglishLanguage() const;
77 BOOL
IsInstalled() const;
78 BOOL
HasInstalledVersion() const;
79 BOOL
HasUpdate() const;
82 VOID
SetLastWriteTime(FILETIME
* ftTime
);
85 BOOL m_IsInstalled
= FALSE
;
86 BOOL m_HasLanguageInfo
= FALSE
;
87 BOOL m_HasInstalledVersion
= FALSE
;
88 CConfigParser m_Parser
;
90 inline BOOL
GetString(LPCWSTR lpKeyName
, ATL::CStringW
& ReturnedString
);
92 // Lazily load general info from the file
93 VOID
RetrieveGeneralInfo();
94 VOID
RetrieveInstalledStatus();
95 VOID
RetrieveInstalledVersion();
96 VOID
RetrieveLanguages();
97 VOID
RetrieveLicenseType();
98 inline BOOL
FindInLanguages(LCID what
) const;
101 typedef BOOL(CALLBACK
*AVAILENUMPROC
)(CAvailableApplicationInfo
*Info
, LPCWSTR szFolderPath
);
105 ATL::CAtlList
<CAvailableApplicationInfo
*> m_InfoList
;
106 static ATL::CStringW m_szPath
;
107 static ATL::CStringW m_szCabPath
;
108 static ATL::CStringW m_szAppsPath
;
109 static ATL::CStringW m_szSearchPath
;
111 static BOOL
InitializeStaticStrings();
116 static BOOL
UpdateAppsDB();
117 static BOOL
ForceUpdateAppsDB();
119 VOID
FreeCachedEntries();
120 static VOID
DeleteCurrentAppsDB();
121 BOOL
EnumAvailableApplications(INT EnumType
, AVAILENUMPROC lpEnumProc
);
122 CAvailableApplicationInfo
* FindInfo(const ATL::CStringW
& szAppName
);
123 ATL::CSimpleArray
<CAvailableApplicationInfo
*> FindInfoList(const ATL::CSimpleArray
<ATL::CStringW
> &arrAppsNames
);
124 const ATL::CStringW
& GetFolderPath();
125 const ATL::CStringW
& GetAppPath();
126 const ATL::CStringW
& GetCabPath();
127 const LPCWSTR
GetFolderPathString();
128 const LPCWSTR
GetAppPathString();
129 const LPCWSTR
GetCabPathString();