// Classic Shell (c) 2009-2016, Ivo Beltchev // Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author #pragma once #include enum TVersionCheck { CHECK_AUTO, CHECK_AUTO_WAIT, CHECK_UPDATE, }; enum TSettingsComponent; struct LanguageVersionData { CString language; CString url; DWORD version; DWORD build; DWORD hash; bool bBasic; WORD languageId; HBITMAP bitmap; LanguageVersionData( void ) { bBasic=false; bitmap=NULL; } }; struct VersionData { bool bValid; DWORD newVersion; DWORD encodedLangVersion; CString downloadUrl; CString downloadSigner; CString news; CString updateLink; CString languageLink; CString altUrl; bool bNewVersion; bool bIgnoreVersion; bool bNewLanguage; bool bIgnoreLanguage; CString newLanguage; std::vector languages; ~VersionData( void ) { Clear(); } void Clear( void ); void Swap( VersionData &data ); enum TLoadResult { LOAD_OK, LOAD_ERROR, // the file is missing some data LOAD_BAD_VERSION, // the version is wrong LOAD_BAD_FILE, // the file is corrupted }; TLoadResult Load( const wchar_t *fname, bool bLoadFlags ); private: void operator=( const VersionData& ); }; typedef void (*tNewVersionCallback)( VersionData &data ); // 0 - fail, 1 - success, 2 - cancel DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionCheck check, tNewVersionCallback callback ); DWORD DownloadLanguageDll( HWND owner, TSettingsComponent component, const LanguageVersionData &data, CString &error ); DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_t *url, const wchar_t *signer, CString &fname, CString &error );