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 typedef struct APPLICATION_INFO
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)
71 typedef BOOL(CALLBACK
*AVAILENUMPROC
)(PAPPLICATION_INFO Info
, LPCWSTR szFolderPath
);
73 struct CAvailableApplicationInfo
: public APPLICATION_INFO
75 ATL::CStringW szInstalledVersion
;
76 CAvailableApplicationInfo(const ATL::CStringW
& sFileNameParam
);
78 // Load all info from the file
79 VOID
RefreshAppInfo();
80 BOOL
HasLanguageInfo() const;
81 BOOL
HasNativeLanguage() const;
82 BOOL
HasEnglishLanguage() const;
83 BOOL
IsInstalled() const;
84 BOOL
HasInstalledVersion() const;
85 BOOL
HasUpdate() const;
88 VOID
SetLastWriteTime(FILETIME
* ftTime
);
91 BOOL m_IsInstalled
= FALSE
;
92 BOOL m_HasLanguageInfo
= FALSE
;
93 BOOL m_HasInstalledVersion
= FALSE
;
94 CConfigParser m_Parser
;
96 inline BOOL
GetString(LPCWSTR lpKeyName
, ATL::CStringW
& ReturnedString
);
98 // Lazily load general info from the file
99 VOID
RetrieveGeneralInfo();
100 VOID
RetrieveInstalledStatus();
101 VOID
RetrieveInstalledVersion();
102 VOID
RetrieveLanguages();
103 VOID
RetrieveLicenseType();
104 inline BOOL
FindInLanguages(LCID what
) const;
109 ATL::CAtlList
<CAvailableApplicationInfo
*> m_InfoList
;
110 ATL::CStringW m_szPath
;
111 ATL::CStringW m_szCabPath
;
112 ATL::CStringW m_szAppsPath
;
113 ATL::CStringW m_szSearchPath
;
117 VOID
FreeCachedEntries();
118 BOOL
DeleteCurrentAppsDB();
120 BOOL
EnumAvailableApplications(INT EnumType
, AVAILENUMPROC lpEnumProc
);
121 const PAPPLICATION_INFO
FindInfo(const ATL::CStringW
& szAppName
);
122 ATL::CSimpleArray
<PAPPLICATION_INFO
> FindInfoList(const ATL::CSimpleArray
<ATL::CStringW
> &arrAppsNames
);
123 const ATL::CStringW
& GetFolderPath();
124 const ATL::CStringW
& GetAppPath();
125 const ATL::CStringW
& GetCabPath();
126 const LPCWSTR
GetFolderPathString();
127 const LPCWSTR
GetAppPathString();
128 const LPCWSTR
GetCabPathString();