diff --git a/Src/Lib/DownloadHelper.cpp b/Src/Lib/DownloadHelper.cpp index aa65757..76408d6 100644 --- a/Src/Lib/DownloadHelper.cpp +++ b/Src/Lib/DownloadHelper.cpp @@ -4,7 +4,6 @@ #include #include "resource.h" -#include "..\Setup\UpdateBin\resource.h" #include "DownloadHelper.h" #include "Settings.h" #include "SettingsUIHelper.h" @@ -371,60 +370,6 @@ static DWORD WINAPI ThreadVersionCheck( void *param ) data.bNewVersion=(data.newVersion>curVersion); data.bIgnoreVersion=(data.bNewVersion && data.newVersion<=remindedVersion); } - { - wchar_t languages[100]={0}; - CString language2=GetSettingString(L"Language"); - if (!language2.IsEmpty()) - { - Strcpy(languages,_countof(languages)-1,language2); - } - else - { - ULONG size=0; - ULONG len=_countof(languages); - GetUserPreferredUILanguages(MUI_LANGUAGE_NAME,&size,languages,&len); - } - - bool bNewLanguage=false; - for (wchar_t *lang=languages;*lang;lang+=Strlen(lang)+1) - { - if (_wcsicmp(lang,L"en")==0 || _wcsnicmp(lang,L"en-",3)==0) - break; // English - DWORD dllVersion=0, dllBuild=0; - HINSTANCE resInstance=LoadTranslationDll(lang); - if (resInstance) - { - dllVersion=GetVersionEx(resInstance,&dllBuild); - FreeLibrary(resInstance); - } - - DWORD newVersion=0, newBuild=0; - for (std::vector::const_iterator it=data.languages.begin();it!=data.languages.end();++it) - { - if (_wcsicmp(it->language,lang)==0) - { - newVersion=it->version; - newBuild=it->build; - break; - } - } - if (newVersion==0) - continue; - - if (newVersion>dllVersion || (newVersion==dllVersion && newBuild>dllBuild)) - { - // a new DLL for this language exists - data.bNewLanguage=true; - data.newLanguage=lang; - data.encodedLangVersion=(newVersion&0xFFFF0000)|((newVersion&0xFF)<<8)|(newBuild&0xFF); - DWORD remindedVersion; - if (regKey.QueryDWORDValue(L"RemindedLangVersion",remindedVersion)!=ERROR_SUCCESS) - remindedVersion=0; - data.bIgnoreLanguage=(data.encodedLangVersion<=remindedVersion); - } - break; - } - } data.bValid=true; if (params.check==CHECK_UPDATE) @@ -433,7 +378,7 @@ static DWORD WINAPI ThreadVersionCheck( void *param ) g_bCheckingVersion=false; return 1; } - if ((data.bNewVersion && !data.bIgnoreVersion) || (data.bNewLanguage && !data.bIgnoreLanguage)) + if (data.bNewVersion && !data.bIgnoreVersion) params.callback(data); g_bCheckingVersion=false; return 0; @@ -576,39 +521,6 @@ static CString LoadStringEx( HMODULE hModule, int stringId, int langId ) return res; } -static BOOL CALLBACK EnumStringLanguages( HMODULE hModule, LPCTSTR lpszType, LPCTSTR lpszName, WORD wIDLanguage, LONG_PTR lParam ) -{ - VersionData &data=*(VersionData*)lParam; - CString url=LoadStringEx(hModule,IDS_LNG_URL,wIDLanguage); - if (url.IsEmpty()) return TRUE; - CString ver=LoadStringEx(hModule,IDS_LNG_VERSION,wIDLanguage); - if (ver.IsEmpty()) return TRUE; - CString crc=LoadStringEx(hModule,IDS_LNG_CRC,wIDLanguage); - if (crc.IsEmpty()) return TRUE; - - LanguageVersionData langData; - langData.bBasic=(ver[ver.GetLength()-1]=='*'); - - int v1, v2, v3, v4; - if (swscanf_s(ver,L"%d.%d.%d.%d",&v1,&v2,&v3,&v4)==4) - { - wchar_t buf[100]; - if (GetLocaleInfo(wIDLanguage,LOCALE_SNAME,buf,_countof(buf))) - { - langData.languageId=wIDLanguage; - langData.language=buf; - langData.version=(v1<<24)|(v2<<16)|v3; - langData.build=v4; - langData.url=url; - wchar_t *q; - langData.hash=wcstoul(crc,&q,16); - data.languages.push_back(langData); - } - } - - return TRUE; -} - static bool VerifyDigitalCertificate( const wchar_t *fname, const wchar_t *signer ) { // verify the certificate @@ -710,38 +622,24 @@ static bool VerifyDigitalCertificate( const wchar_t *fname, const wchar_t *signe void VersionData::Clear( void ) { bValid=false; - newVersion=encodedLangVersion=0; + newVersion=0; downloadUrl.Empty(); downloadSigner.Empty(); news.Empty(); - updateLink.Empty(); - languageLink.Empty(); - altUrl.Empty(); - bNewVersion=bIgnoreVersion=bNewLanguage=bIgnoreLanguage=false; - newLanguage.Empty(); - for (std::vector::iterator it=languages.begin();it!=languages.end();++it) - if (it->bitmap) - DeleteObject(it->bitmap); - languages.clear(); + updateLink="https://github.com/Open-Shell/Open-Shell-Menu/releases"; + bNewVersion=bIgnoreVersion=false; } void VersionData::Swap( VersionData &data ) { std::swap(bValid,data.bValid); std::swap(newVersion,data.newVersion); - std::swap(encodedLangVersion,data.encodedLangVersion); std::swap(downloadUrl,data.downloadUrl); std::swap(downloadSigner,data.downloadSigner); std::swap(news,data.news); std::swap(updateLink,data.updateLink); - std::swap(languageLink,data.languageLink); - std::swap(altUrl,data.altUrl); std::swap(bNewVersion,data.bNewVersion); std::swap(bIgnoreVersion,data.bIgnoreVersion); - std::swap(bNewLanguage,data.bNewLanguage); - std::swap(bIgnoreLanguage,data.bIgnoreLanguage); - std::swap(newLanguage,data.newLanguage); - std::swap(languages,data.languages); } std::vector DownloadUrl(const wchar_t* url) @@ -850,69 +748,6 @@ VersionData::TLoadResult VersionData::Load(bool official) } } -VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags ) -{ - Clear(); - if (!VerifyDigitalCertificate(fname,L"Ivaylo Beltchev")) - return LOAD_BAD_FILE; - - HMODULE hModule=LoadLibraryEx(fname,NULL,LOAD_LIBRARY_AS_DATAFILE|LOAD_LIBRARY_AS_IMAGE_RESOURCE); - if (!hModule) return LOAD_BAD_FILE; - - if (GetVersionEx(hModule)!=GetVersionEx(g_Instance)) - { - FreeLibrary(hModule); - return LOAD_BAD_VERSION; - } - - wchar_t defLang[100]=L""; - { - CRegKey regKeyLng; - if (regKeyLng.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS) - { - ULONG size=_countof(defLang); - if (regKeyLng.QueryStringValue(L"DefaultLanguage",defLang,&size)!=ERROR_SUCCESS) - defLang[0]=0; - } - } - - const int DEFAULT_LANGUAGE=0x409; - - int defLangId; - if (!defLang[0] || !GetLocaleInfoEx(defLang,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&defLangId,4)) - defLangId=DEFAULT_LANGUAGE; - - downloadUrl=LoadStringEx(hModule,IDS_INSTALL_URL,defLangId); - // these are always in en-US - downloadSigner=LoadStringEx(hModule,IDS_INSTALL_SIGNER,DEFAULT_LANGUAGE); - CString strVer=LoadStringEx(hModule,IDS_VERSION,defLangId); - if (strVer.IsEmpty()) - strVer=LoadStringEx(hModule,IDS_VERSION,DEFAULT_LANGUAGE); - updateLink=LoadStringEx(hModule,IDS_UPDATE_LINK,DEFAULT_LANGUAGE); - languageLink=LoadStringEx(hModule,IDS_LANGUAGE_LINK,DEFAULT_LANGUAGE); - altUrl=LoadStringEx(hModule,IDS_ALT_URL,DEFAULT_LANGUAGE); - - int v1, v2, v3; - if (!downloadUrl.IsEmpty() && swscanf_s(strVer,L"%d.%d.%d",&v1,&v2,&v3)==3) - { - newVersion=(v1<<24)|(v2<<16)|v3; - news=LoadStringEx(hModule,IDS_NEWS,defLangId); - if (news.IsEmpty()) - news=LoadStringEx(hModule,IDS_NEWS,DEFAULT_LANGUAGE); - - EnumResourceLanguages(hModule,RT_STRING,MAKEINTRESOURCE((IDS_LNG_URL>>4)+1),EnumStringLanguages,(LONG_PTR)this); - for (std::vector::iterator it=languages.begin();it!=languages.end();++it) - it->bitmap=(HBITMAP)LoadImage(hModule,MAKEINTRESOURCE(it->languageId),IMAGE_BITMAP,22,27,LR_CREATEDIBSECTION); - } - - FreeLibrary(hModule); - - if (newVersion && !downloadUrl.IsEmpty() && !news.IsEmpty()) - return LOAD_OK; - Clear(); - return LOAD_ERROR; -} - struct DownloadFileParams { // input @@ -989,82 +824,6 @@ static DWORD WINAPI ThreadDownloadFile( void *param ) return 0; } -DWORD DownloadLanguageDll( HWND owner, TSettingsComponent component, const LanguageVersionData &data, CString &error ) -{ - // download file - wchar_t path[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell\\Languages"; - DoEnvironmentSubst(path,_countof(path)); - SHCreateDirectory(NULL,path); - wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s.dll",data.language); - - CProgressDlg progress; - progress.Create(owner,LoadStringEx(IDS_PROGRESS_TITLE_DOWNLOAD)); - - DownloadFileParams params; - params.url=data.url; - params.signer=NULL; - params.hash=data.hash; - params.path=path; - params.fname=fname; - params.progress=&progress; - params.bAcceptCached=true; - params.component=component; - - HANDLE hThread=CreateThread(NULL,0,ThreadDownloadFile,¶ms,0,NULL); - - while (1) - { - DWORD wait=MsgWaitForMultipleObjects(1,&hThread,FALSE,INFINITE,QS_ALLINPUT); - if (wait!=WAIT_OBJECT_0+1) - break; - MSG msg; - while (PeekMessage(&msg,0,0,0,PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - progress.DestroyWindow(); - CloseHandle(hThread); - - if (params.downloadRes==DOWNLOAD_CANCEL) - return 2; - if (params.downloadRes==DOWNLOAD_INTERNET) - { - error=LoadStringEx(IDS_INTERNET_FAIL); - return 0; - } - else if (params.downloadRes==DOWNLOAD_START) - { - error=LoadStringEx(IDS_INITIATE_FAIL); - return 0; - } - else if (params.downloadRes==DOWNLOAD_FAIL) - { - error=LoadStringEx(IDS_LANG_DOWNLOAD_FAIL); - return 0; - } - - if (params.saveRes) - { - wchar_t msg[256]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,params.saveRes,0,msg,_countof(msg),NULL); - error.Format(LoadStringEx(IDS_LANG_SAVE_FAIL),params.fname); - error+="\r\n"; - error+=msg; - return 0; - } - - if (!params.valid) - { - error=LoadStringEx(IDS_LANG_DOWNLOAD_FAIL); - return 0; - } - - return 1; -} - DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_t *url, const wchar_t *signer, CString &fname, CString &error ) { CComString pPath; diff --git a/Src/Lib/DownloadHelper.h b/Src/Lib/DownloadHelper.h index 20d5d02..12e8bec 100644 --- a/Src/Lib/DownloadHelper.h +++ b/Src/Lib/DownloadHelper.h @@ -15,37 +15,16 @@ enum TVersionCheck 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 = false; DWORD newVersion = 0; - DWORD encodedLangVersion = 0; CString downloadUrl; CString downloadSigner; CString news; CString updateLink; - CString languageLink; - CString altUrl; bool bNewVersion = false; bool bIgnoreVersion = false; - bool bNewLanguage = false; - bool bIgnoreLanguage = false; - CString newLanguage; - std::vector languages; ~VersionData( void ) { Clear(); } void Clear( void ); @@ -60,7 +39,6 @@ struct VersionData }; TLoadResult Load(bool official); - TLoadResult Load( const wchar_t *fname, bool bLoadFlags ); private: void operator=( const VersionData& ); }; @@ -69,5 +47,4 @@ 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 ); diff --git a/Src/Lib/LanguageSettingsHelper.cpp b/Src/Lib/LanguageSettingsHelper.cpp index ad35b04..a9c4c63 100644 --- a/Src/Lib/LanguageSettingsHelper.cpp +++ b/Src/Lib/LanguageSettingsHelper.cpp @@ -68,17 +68,13 @@ public: MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog ) MESSAGE_HANDLER( WM_DESTROY, OnDestroy ) MESSAGE_HANDLER( WM_SIZE, OnSize ) - COMMAND_ID_HANDLER( IDC_BUTTONCHECK, OnCheckUpdates ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, LVN_ITEMCHANGED, OnSelChange ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, LVN_ITEMCHANGING, OnSelChanging ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, NM_CUSTOMDRAW, OnCustomDraw ) - NOTIFY_HANDLER( IDC_LINKDOWNLOAD, NM_CLICK, OnDownload ) END_MSG_MAP() BEGIN_RESIZE_MAP RESIZE_CONTROL(IDC_LISTLANGUAGE,MOVE_SIZE_X|MOVE_SIZE_Y) - RESIZE_CONTROL(IDC_BUTTONCHECK,MOVE_MOVE_Y) - RESIZE_CONTROL(IDC_LINKDOWNLOAD,MOVE_SIZE_X|MOVE_MOVE_Y) END_RESIZE_MAP void SetGroup( CSetting *pGroup ); @@ -92,11 +88,9 @@ protected: LRESULT OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); - LRESULT OnCheckUpdates( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); LRESULT OnSelChanging( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); LRESULT OnCustomDraw( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); - LRESULT OnDownload( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); private: CSetting *m_pSetting; @@ -114,17 +108,12 @@ private: bool operator<( const LangInfo &info ) { return _wcsicmp(name,info.name)<0; } }; std::vector m_LanguageIDs; // the order matches the items in the listbox - static VersionData s_VersionData; - static void NewVersionCallback( VersionData &data ); void UpdateFlags( void ); - void UpdateLink( const wchar_t *language ); void AddFlag( const wchar_t *langName, int langId, HBITMAP bmp ); }; -VersionData CLanguageSettingsDlg::s_VersionData; - void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP bmp ) { int idx=1; @@ -156,39 +145,6 @@ void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP void CLanguageSettingsDlg::UpdateFlags( void ) { - // add flags from s_VersionData - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (it->bitmap) - { - BITMAPINFO bi={0}; - bi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); - bi.bmiHeader.biWidth=m_bLargeFlags?32:24; - bi.bmiHeader.biHeight=m_bLargeFlags?16:11; - bi.bmiHeader.biPlanes=1; - bi.bmiHeader.biBitCount=32; - - HDC hdc=CreateCompatibleDC(NULL); - HBITMAP bmp=CreateDIBSection(hdc,&bi,DIB_RGB_COLORS,NULL,NULL,0); - HGDIOBJ bmp0=SelectObject(hdc,bmp); - HDC hsrc=CreateCompatibleDC(hdc); - HGDIOBJ bmp02=SelectObject(hsrc,it->bitmap); - SetDCBrushColor(hdc,0xFF00FF); - RECT rc={0,0,bi.bmiHeader.biWidth,bi.bmiHeader.biHeight}; - FillRect(hdc,&rc,(HBRUSH)GetStockObject(DC_BRUSH)); - if (m_bLargeFlags) - BitBlt(hdc,3,0,22,16,hsrc,0,11,SRCCOPY); - else - BitBlt(hdc,2,0,16,11,hsrc,0,0,SRCCOPY); - SelectObject(hsrc,bmp02); - DeleteDC(hsrc); - SelectObject(hdc,bmp0); - DeleteDC(hdc); - AddFlag(it->language,it->languageId,bmp); - DeleteObject(bmp); - } - } - // add flags from dlls for (int pass=0;pass<2;pass++) { @@ -288,7 +244,6 @@ LRESULT CLanguageSettingsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lPa ListView_SetExtendedListViewStyleEx(list,LVS_EX_DOUBLEBUFFER,LVS_EX_DOUBLEBUFFER); LVCOLUMN column={LVCF_WIDTH,0,rc.right-rc.left}; ListView_InsertColumn(list,0,&column); - SetDlgItemText(IDC_LINKDOWNLOAD,L""); m_LanguageIDs.resize(_countof(g_LanguageIDs)+1); { @@ -331,11 +286,6 @@ LRESULT CLanguageSettingsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lPa ListView_InsertItem(list,&item); } - // parse update.ver in data and add all flags - wchar_t path[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell\\update.ver"; - DoEnvironmentSubst(path,_countof(path)); - s_VersionData.bValid=(s_VersionData.Load(path,true)==VersionData::LOAD_OK); - UpdateFlags(); m_Tooltip.Create(TOOLTIPS_CLASS,m_hWnd,NULL,NULL,WS_POPUP|TTS_NOPREFIX); @@ -359,40 +309,6 @@ LRESULT CLanguageSettingsDlg::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, B return 0; } -void CLanguageSettingsDlg::NewVersionCallback( VersionData &data ) -{ - s_VersionData.Swap(data); -} - -LRESULT CLanguageSettingsDlg::OnCheckUpdates( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ) -{ - DWORD res=CheckForNewVersion(m_hWnd,m_Component,CHECK_UPDATE,NewVersionCallback); - if (res==2) return 0; - if (res) - { - UpdateFlags(); - CString language=GetSettingString(L"Language"); - CWindow list=GetDlgItem(IDC_LISTLANGUAGE); - for (int idx=0;idx<(int)m_LanguageIDs.size();idx++) - { - const wchar_t *name=idx>0?m_LanguageIDs[idx].name.GetString():L""; - if (_wcsicmp(language,name)==0) - { - ListView_SetItemState(list,idx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); - ListView_EnsureVisible(list,idx,FALSE); - break; - } - } - UpdateLink(language); - } - else - { - s_VersionData.Clear(); - SetDlgItemText(IDC_LINKDOWNLOAD,LoadStringEx(IDS_LANGUAGE_FAIL)); - } - return 0; -} - LRESULT CLanguageSettingsDlg::OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) { // set setting @@ -411,7 +327,6 @@ LRESULT CLanguageSettingsDlg::OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHand m_pSetting->flags|=CSetting::FLAG_DEFAULT; else m_pSetting->flags&=~CSetting::FLAG_DEFAULT; - UpdateLink(name); return 0; } @@ -448,41 +363,6 @@ static HRESULT CALLBACK TaskDialogCallbackProc( HWND hwnd, UINT uNotification, W return S_OK; } -LRESULT CLanguageSettingsDlg::OnDownload( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) -{ - CString language=GetSettingString(L"Language"); - if (language.IsEmpty()) - language=m_LanguageIDs[0].name; - - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (_wcsicmp(it->language,language)==0) - { - CString error; - DWORD res=DownloadLanguageDll(m_hWnd,m_Component,*it,error); - if (res==2) - return 0; - if (res) - MessageBox(LoadStringEx(it->bBasic?IDS_LANGUAGE_SUCCESS2:IDS_LANGUAGE_SUCCESS),LoadStringEx(IDS_UPDATE_TITLE),MB_OK|(it->bBasic?MB_ICONWARNING:MB_ICONINFORMATION)); - else - { - if (!s_VersionData.languageLink.IsEmpty()) - error+=L" "+LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+s_VersionData.languageLink; - TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON}; - CString title=LoadStringEx(IDS_UPDATE_TITLE); - task.pszWindowTitle=title; - task.pszContent=error; - task.hMainIcon=LoadIcon(NULL,IDI_ERROR); - task.pfCallback=TaskDialogCallbackProc; - TaskDialogIndirect(&task,NULL,NULL,NULL); - } - UpdateLink(language); - break; - } - } - return 0; -} - void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) { m_bLocked=false; @@ -504,7 +384,6 @@ void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) break; } } - UpdateLink(m_pSetting->value.bstrVal); m_bLocked=m_pSetting->IsLocked(); TOOLINFO tool={sizeof(tool),0,m_hWnd,'CLSH'}; @@ -517,52 +396,6 @@ void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) ListView_SetBkColor(list,GetSysColor(m_bLocked?COLOR_BTNFACE:COLOR_WINDOW)); } -void CLanguageSettingsDlg::UpdateLink( const wchar_t *language ) -{ - TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,'CLSH'}; - tool.uId=(UINT_PTR)GetDlgItem(IDC_LINKDOWNLOAD).m_hWnd; - m_Tooltip.SendMessage(TTM_DELTOOL,0,(LPARAM)&tool); - - if (!s_VersionData.bValid) - { - SetDlgItemText(IDC_LINKDOWNLOAD,L""); - return; - } - if (!*language) - language=m_LanguageIDs[0].name; - - wchar_t text[1024]; - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (_wcsicmp(it->language,language)==0) - { - DWORD dllVersion=0, dllBuild=0; - HINSTANCE resInstance=LoadTranslationDll(language); - if (resInstance) - { - dllVersion=GetVersionEx(resInstance,&dllBuild); - FreeLibrary(resInstance); - } - if (it->version>dllVersion || (it->version==dllVersion && it->build>dllBuild)) - { - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_DOWNLOAD),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); - - tool.lpszText=(LPWSTR)(LPCWSTR)it->url; - m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); - } - else - { - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_UPDATED),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); - } - return; - } - } - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_MISSING),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); -} - class CLanguageSettingsPanel: public ISettingsPanel { public: diff --git a/Src/Lib/Lib.rc b/Src/Lib/Lib.rc index 479584a..d34dbaf 100644 --- a/Src/Lib/Lib.rc +++ b/Src/Lib/Lib.rc @@ -98,8 +98,6 @@ FONT 9, "Segoe UI", 400, 0, 0x0 BEGIN CONTROL "",IDC_LISTLANGUAGE,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,18,302,99 LTEXT "Select a language for the user interface:",IDC_STATICHINT,7,7,131,8 - PUSHBUTTON "&Check for Updates",IDC_BUTTONCHECK,7,123,75,14 - CONTROL "download link goes here",IDC_LINKDOWNLOAD,"SysLink",WS_TABSTOP,85,126,224,10 END IDD_CUSTOMTREE DIALOGEX 0, 0, 365, 183 @@ -279,20 +277,12 @@ BEGIN IDS_SETTING_SEARCH "Search Results" IDS_WEBSITE_TIP "Visit Open-Shell on the web - https://open-shell.github.io/Open-Shell-Menu" IDS_LOCATE_SETTING "Locate setting" - IDS_LANGUAGE_UPDATED "The language %s is up to date." - IDS_LANGUAGE_MISSING "Update for language %s is not available." - IDS_LANGUAGE_DOWNLOAD "New update for language %s is available. Click here to install it." - IDS_LANGUAGE_SUCCESS "The language file was installed successfully.\nYou need to log off and back on for the update to take effect." - IDS_LANGUAGE_SUCCESS2 "The language file was installed successfully.\nYou need to log off and back on for the update to take effect.\n\nNote: This update provides only basic translations. It supports only the main text found in the start menu and in Explorer. The settings will not be translated." - IDS_LANGUAGE_FAIL "Failed to check for updates." IDS_INTERNET_FAIL "Failed to connect to the Internet." END STRINGTABLE BEGIN IDS_INITIATE_FAIL "Failed to initiate the download." - IDS_LANG_DOWNLOAD_FAIL "Failed to download the language file." - IDS_LANG_SAVE_FAIL "Failed to save language file '%s'." IDS_UPDATE_TITLE "Open-Shell Update" IDS_INST_DOWNLOAD_FAIL "Failed to download the new version." IDS_INST_SAVE_FAIL "Failed to save file '%s'." @@ -308,11 +298,6 @@ BEGIN IDS_UNSAVED_TITLE "Unsaved changes" END -STRINGTABLE -BEGIN - IDS_VERSION_URL "http://www.classicshell.net/files/updates/update_" -END - #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/OpenShell.sln b/Src/OpenShell.sln index f29cef0..192313d 100644 --- a/Src/OpenShell.sln +++ b/Src/OpenShell.sln @@ -54,8 +54,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win8", "Skins\Win8\Win8.vcx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StartMenuHelper", "StartMenu\StartMenuHelper\StartMenuHelper.vcxproj", "{A42C6159-ACA8-46D1-A0FB-19C398B137D5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UpdateBin", "Setup\UpdateBin\UpdateBin.vcxproj", "{F92A5473-F9E0-412F-923C-6632A66D13C1}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Utility", "Setup\Utility\Utility.vcxproj", "{DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Midnight7", "Skins\Midnight7\Midnight7.vcxproj", "{7BD26CB3-5280-48FD-9A86-C13E321018D5}" @@ -320,13 +318,6 @@ Global {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|Win32.Build.0 = Setup|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|x64.ActiveCfg = Setup|x64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|x64.Build.0 = Setup|x64 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Debug|Win32.ActiveCfg = update_4.3.1|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Debug|x64.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|Win32.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|Win32.Build.0 = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|x64.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Setup|Win32.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Setup|x64.ActiveCfg = update_4.3.0|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|Win32.ActiveCfg = Debug|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|Win32.Build.0 = Debug|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|x64.ActiveCfg = Debug|x64 @@ -434,7 +425,6 @@ Global {31C016FB-9EA1-4AF5-987A-37210C04DA06} = {409484D8-C0DB-4991-AF03-124128EDEF98} {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089} = {409484D8-C0DB-4991-AF03-124128EDEF98} {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94} = {409484D8-C0DB-4991-AF03-124128EDEF98} - {F92A5473-F9E0-412F-923C-6632A66D13C1} = {B695E1F6-785D-45CB-BCE0-0E9635DFC1DE} {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF} = {B695E1F6-785D-45CB-BCE0-0E9635DFC1DE} {7BD26CB3-5280-48FD-9A86-C13E321018D5} = {409484D8-C0DB-4991-AF03-124128EDEF98} {598AB4AC-008E-4501-90B3-C5213834C1DA} = {409484D8-C0DB-4991-AF03-124128EDEF98} diff --git a/Src/Setup/UpdateBin/Flags/gd-GB.bmp b/Src/Setup/UpdateBin/Flags/gd-GB.bmp deleted file mode 100644 index a3cabea..0000000 Binary files a/Src/Setup/UpdateBin/Flags/gd-GB.bmp and /dev/null differ diff --git a/Src/Setup/UpdateBin/UpdateBin.rc b/Src/Setup/UpdateBin/UpdateBin.rc deleted file mode 100644 index 3849c02..0000000 Binary files a/Src/Setup/UpdateBin/UpdateBin.rc and /dev/null differ diff --git a/Src/Setup/UpdateBin/UpdateBin.vcxproj b/Src/Setup/UpdateBin/UpdateBin.vcxproj deleted file mode 100644 index a31400c..0000000 --- a/Src/Setup/UpdateBin/UpdateBin.vcxproj +++ /dev/null @@ -1,506 +0,0 @@ - - - - - update_4.1.0 - Win32 - - - update_4.2.0 - Win32 - - - update_4.2.1 - Win32 - - - update_4.2.2 - Win32 - - - update_4.2.3 - Win32 - - - update_4.2.4 - Win32 - - - update_4.2.5 - Win32 - - - update_4.2.6 - Win32 - - - update_4.2.7 - Win32 - - - update_4.3.0 - Win32 - - - update_4.3.1 - Win32 - - - - {F92A5473-F9E0-412F-923C-6632A66D13C1} - UpdateBin - Win32Proj - 10.0 - - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - DynamicLibrary - v143 - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - {dae66c9b-05dc-4ace-97da-2547b490bbff} - false - - - - - - \ No newline at end of file diff --git a/Src/Setup/UpdateBin/resource.h b/Src/Setup/UpdateBin/resource.h deleted file mode 100644 index 06d0a79..0000000 --- a/Src/Setup/UpdateBin/resource.h +++ /dev/null @@ -1,10 +0,0 @@ -#define IDS_VERSION 16 -#define IDS_NEWS 17 -#define IDS_INSTALL_URL 18 -#define IDS_INSTALL_SIGNER 19 -#define IDS_LNG_URL 20 -#define IDS_LNG_VERSION 21 -#define IDS_LNG_CRC 22 -#define IDS_UPDATE_LINK 23 -#define IDS_LANGUAGE_LINK 24 -#define IDS_ALT_URL 25 diff --git a/Src/Setup/UpdateBin/update_4.1.0.txt b/Src/Setup/UpdateBin/update_4.1.0.txt deleted file mode 100644 index 6c4ba5a..0000000 Binary files a/Src/Setup/UpdateBin/update_4.1.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.0.txt b/Src/Setup/UpdateBin/update_4.2.0.txt deleted file mode 100644 index 3c5e5b8..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.1.txt b/Src/Setup/UpdateBin/update_4.2.1.txt deleted file mode 100644 index 906eb85..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.1.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.2.txt b/Src/Setup/UpdateBin/update_4.2.2.txt deleted file mode 100644 index 2b6311e..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.2.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.3.txt b/Src/Setup/UpdateBin/update_4.2.3.txt deleted file mode 100644 index ead837f..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.3.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.4.txt b/Src/Setup/UpdateBin/update_4.2.4.txt deleted file mode 100644 index d8974cb..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.4.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.5.txt b/Src/Setup/UpdateBin/update_4.2.5.txt deleted file mode 100644 index a82fa45..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.5.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.6.txt b/Src/Setup/UpdateBin/update_4.2.6.txt deleted file mode 100644 index 5523b9d..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.6.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.7.txt b/Src/Setup/UpdateBin/update_4.2.7.txt deleted file mode 100644 index b674d78..0000000 Binary files a/Src/Setup/UpdateBin/update_4.2.7.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.3.0.txt b/Src/Setup/UpdateBin/update_4.3.0.txt deleted file mode 100644 index 4270010..0000000 Binary files a/Src/Setup/UpdateBin/update_4.3.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.3.1.txt b/Src/Setup/UpdateBin/update_4.3.1.txt deleted file mode 100644 index c75f89e..0000000 Binary files a/Src/Setup/UpdateBin/update_4.3.1.txt and /dev/null differ diff --git a/Src/Setup/Utility/Utility.cpp b/Src/Setup/Utility/Utility.cpp index 0035949..59894c9 100644 --- a/Src/Setup/Utility/Utility.cpp +++ b/Src/Setup/Utility/Utility.cpp @@ -13,7 +13,6 @@ #include "FNVHash.h" #include "SettingsParser.h" #include "resource.h" -#include "..\UpdateBin\resource.h" #include "ResourceHelper.h" #include #include "SaveLogFile.h" @@ -412,256 +411,6 @@ qqq: /////////////////////////////////////////////////////////////////////////////// -struct LanguageData -{ - std::map strings; - CString bitmap; -}; - -int GenerateUpdateFile( wchar_t *const *params, int count ) -{ - if (count<3) return 3; - - std::vector buf; - LoadFile(params[1],buf); - if (buf.empty()) return 1; - buf.push_back(0); - buf.push_back(0); - - wchar_t token[256]; - - std::map languages; - const int DEFAULT_LANGUAGE=0x409; - - const wchar_t *str0=(wchar_t*)&buf[0]; - if (*str0==0xFEFF) str0++; - const wchar_t *str; - - // old (current) version - str=wcsstr(str0,L"{OLD_VER}"); - if (!str) return 1; - GetToken(str+9,token,_countof(token),L"\r\n"); - int v1, v2, v3; - swscanf_s(token,L"%d.%d.%d",&v1,&v2,&v3); - - // new version - str=wcsstr(str0,L"{NEW_VER}"); - if (!str) return 1; - GetToken(str+9,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_VERSION]=token; - - // signer - str=wcsstr(str0,L"{SIGNER}"); - if (!str) return 1; - GetToken(str+8,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_INSTALL_SIGNER]=token; - - // update - str=wcsstr(str0,L"{UPDATE}"); - if (!str) return 1; - GetToken(str+8,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_UPDATE_LINK]=token; - - // languages - str=wcsstr(str0,L"{LANGUAGES}"); - if (!str) return 1; - GetToken(str+11,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_LANGUAGE_LINK]=token; - - // language folder - str=wcsstr(str0,L"{LANGFOLDER}"); - if (!str) return 1; - wchar_t langFolder[_MAX_PATH]; - GetToken(str+12,langFolder,_countof(langFolder),L"\r\n"); - - // alt url - str=wcsstr(str0,L"{ALT}"); - if (str) - { - GetToken(str+5,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_ALT_URL]=token; - } - - // news - str=wcsstr(str0,L"{NEWS}"); - if (!str) return 1; - languages[DEFAULT_LANGUAGE].strings[IDS_NEWS]=str+6; - - // look for {INST: - str=str0; - bool res=true; - while (1) - { - str=wcsstr(str,L"{INST: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].strings[IDS_INSTALL_URL]=token; - // languages[language].strings[IDS_VERSION]=...; // TODO: allow per-language version of the installer - } - - if (!res) return 1; - - str=str0; - while (1) - { - str=wcsstr(str,L"{LANG: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int len=Strlen(token); - bool bBasic=(len>0 && token[len-1]=='*'); - if (bBasic) token[len-1]=0; - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - - wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s\\%s.dll",langFolder,token); -/* if (GetFileAttributes(fname)==INVALID_FILE_ATTRIBUTES) - { - fname[0]=0; - wchar_t find[_MAX_PATH]; - Sprintf(find,_countof(find),L"%s\\*.*",langFolder); - WIN32_FIND_DATA data; - HANDLE h=FindFirstFile(find,&data); - while (h!=INVALID_HANDLE_VALUE) - { - if ((data.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) && data.cFileName[0]!='.') - { - Sprintf(fname,_countof(fname),L"%s\\%s\\%s.dll",langFolder,data.cFileName,token); - if (GetFileAttributes(fname)!=INVALID_FILE_ATTRIBUTES) - { - FindClose(h); - break; - } - } - if (!FindNextFile(h,&data)) - { - FindClose(h); - break; - } - } - }*/ - if (!fname[0]) break; - - unsigned long hash=0; - wchar_t version[100]; - - hash=CalcFileFNV(fname); - if (!hash) break; - - DWORD dllBuild; - DWORD dllVer=GetFileVersion(fname,&dllBuild); - if (!dllVer) break; - if (dllVer>(DWORD)((v1<<24)|(v2<<16)|v3)) break; - - Sprintf(version,_countof(version),L"%d.%d.%d.%d%s",dllVer>>24,(dllVer>>16)&255,dllVer&65535,dllBuild,bBasic?L"*":L""); - - Sprintf(token,_countof(token),L"%08X",hash); - languages[language].strings[IDS_LNG_CRC]=token; - - languages[language].strings[IDS_LNG_VERSION]=version; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].strings[IDS_LNG_URL]=token; - } - - if (!res) return 1; - - // look for {FLAG: - str=str0; - while (1) - { - str=wcsstr(str,L"{FLAG: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].bitmap=token; - } - - if (!res) return 1; - - FILE *f=NULL; - if (_wfopen_s(&f,params[2],L"wb") || !f) - { - return 1; - } - fwprintf(f,L"\xFEFF"); - for (std::map::const_iterator it=languages.begin();it!=languages.end();++it) - { - fwprintf(f,L"/////////////////////////////////////////////////////////////////////////////\r\n"); - GetLocaleInfo(it->first,LOCALE_SLANGUAGE,token,_countof(token)); - fwprintf(f,L"// %s\r\n\r\n",token); - fwprintf(f,L"LANGUAGE 0x%02X, 0x%X\r\n",it->first&0x3FF,it->first>>10); - fwprintf(f,L"\r\nSTRINGTABLE\r\nBEGIN\r\n"); - for (std::map::const_iterator it2=it->second.strings.begin();it2!=it->second.strings.end();++it2) - { - CString str=it2->second; - str.Replace(L"\r\n",L"\\r\\n"); - str.Replace(L"\"",L"\"\""); - fwprintf(f,L"%4d \"%s\"\r\n",it2->first,(const wchar_t*)str); - } - fwprintf(f,L"END\r\n\r\n"); - - if (it->first==DEFAULT_LANGUAGE) - { - fwprintf(f,L"1 VERSIONINFO\r\n"); - fwprintf(f,L" FILEVERSION %d,%d,%d,0\r\n",v1,v2,v3); - fwprintf(f,L" PRODUCTVERSION %d,%d,%d,0\r\n",v1,v2,v3); - fwprintf(f,L" FILEFLAGSMASK 0x17L\r\n"); - fwprintf(f,L" FILEFLAGS 0x0L\r\n"); - fwprintf(f,L" FILEOS 0x4L\r\n"); - fwprintf(f,L" FILETYPE 0x1L\r\n"); - fwprintf(f,L" FILESUBTYPE 0x0L\r\n"); - fwprintf(f,L"BEGIN\r\n"); - fwprintf(f,L"\tBLOCK \"StringFileInfo\"\r\n"); - fwprintf(f,L"\tBEGIN\r\n"); - fwprintf(f,L"\t\tBLOCK \"040904b0\"\r\n"); - fwprintf(f,L"\t\tBEGIN\r\n"); - fwprintf(f,L"\t\t\tVALUE \"CompanyName\", \"OpenShell\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"FileDescription\", \"Update information\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"FileVersion\", \"%d, %d, %d, 0\"\r\n",v1,v2,v3); - fwprintf(f,L"\t\t\tVALUE \"InternalName\", \"Update\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"LegalCopyright\", \"Copyright (C) 2017-2018, The Open-Shell Team\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"OriginalFilename\", \"update.ver\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"ProductName\", \"Open-Shell\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"ProductVersion\", \"%d, %d, %d, 0\"\r\n",v1,v2,v3); - fwprintf(f,L"\t\tEND\r\n"); - fwprintf(f,L"\tEND\r\n"); - fwprintf(f,L"\tBLOCK \"VarFileInfo\"\r\n"); - fwprintf(f,L"\tBEGIN\r\n"); - fwprintf(f,L"\t\tVALUE \"Translation\", 0x409, 1200\r\n"); - fwprintf(f,L"\tEND\r\n"); - fwprintf(f,L"END\r\n\r\n"); - - for (std::map::const_iterator it3=languages.begin();it3!=languages.end();++it3) - { - if (!it3->second.bitmap.IsEmpty()) - fwprintf(f,L"%d BITMAP \"%s\"\r\n",it3->first,(const wchar_t*)it3->second.bitmap); - } - fwprintf(f,L"\r\n"); - } - } - fclose(f); - return 0; -} - -/////////////////////////////////////////////////////////////////////////////// - static void UnsescapeString( wchar_t *string ) { wchar_t *dst=string; @@ -1097,7 +846,6 @@ static HRESULT CALLBACK TaskDialogCallback( HWND hwnd, UINT uNotification, WPARA // extract // extracts the string table, the dialog text, and the L10N text from a DLL and stores it in a CSV // extract en-us.dll // extracts the string table, the dialog text, and the L10N text from two DLL and stores it in a CSV // import // replaces the string table in the DLL with the text from the CSV -// update // generates a resource file for UpdateBin.dll by calculating the DLL hashes int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow ) { @@ -1176,11 +924,6 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC return ImportStrings(params,count); } - if (_wcsicmp(params[0],L"update")==0) - { - return GenerateUpdateFile(params,count); - } - if (_wcsicmp(params[0],L"colors")==0) { ShowMetroColorViewer(); diff --git a/Src/Update/Update.cpp b/Src/Update/Update.cpp index d7324a8..c6c5226 100644 --- a/Src/Update/Update.cpp +++ b/Src/Update/Update.cpp @@ -103,7 +103,6 @@ public: void Run( void ); void UpdateData( void ); - bool HasNewLanguage( void ) { return (m_Data.bNewLanguage && !m_Data.bIgnoreLanguage) && !(m_Data.bNewVersion && !m_Data.bIgnoreVersion); } protected: // Handler prototypes: @@ -204,7 +203,7 @@ LRESULT CUpdateDlg::OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bH LRESULT CUpdateDlg::OnColorStatic( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { - if ((m_Data.bNewVersion || m_Data.bNewLanguage) && lParam==(LPARAM)GetDlgItem(IDC_STATICLATEST).m_hWnd) + if (m_Data.bNewVersion && lParam==(LPARAM)GetDlgItem(IDC_STATICLATEST).m_hWnd) { HDC hdc=(HDC)wParam; SetTextColor(hdc,0xFF); @@ -288,37 +287,6 @@ LRESULT CUpdateDlg::OnDownload( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& } } } - else if (m_Data.bNewLanguage) - { - for (std::vector::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it) - { - if (_wcsicmp(m_Data.newLanguage,it->language)==0) - { - CString error; - DWORD res=DownloadLanguageDll(m_hWnd,COMPONENT_UPDATE,*it,error); - if (res==2) - return 0; - if (res) - { - MessageBox(LoadStringEx(it->bBasic?IDS_LANGUAGE_SUCCESS2:IDS_LANGUAGE_SUCCESS),LoadStringEx(IDS_UPDATE_TITLE),MB_OK|(it->bBasic?MB_ICONWARNING:MB_ICONINFORMATION)); - SetDlgItemText(IDC_STATICLATEST,L""); - } - else - { - error+=LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+m_Data.languageLink; - TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON}; - CString title=LoadStringEx(IDS_UPDATE_TITLE); - task.pszWindowTitle=title; - task.pszContent=error; - task.hMainIcon=LoadIcon(NULL,IDI_ERROR); - task.pfCallback=TaskDialogCallbackProc; - TaskDialogIndirect(&task,NULL,NULL,NULL); - } - return 0; - } - } - Assert(0); // NEWLanguage is not in the list - } return 0; } @@ -332,11 +300,6 @@ LRESULT CUpdateDlg::OnDontRemind( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL m_Data.bIgnoreVersion=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED); regKey.SetDWORDValue(L"RemindedVersion",m_Data.bIgnoreVersion?m_Data.newVersion:0); } - else if (m_Data.bNewLanguage) - { - m_Data.bIgnoreLanguage=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED); - regKey.SetDWORDValue(L"RemindedLangVersion",m_Data.bIgnoreLanguage?m_Data.encodedLangVersion:0); - } return 0; } @@ -378,28 +341,6 @@ void CUpdateDlg::UpdateUI( void ) tool.lpszText=(LPWSTR)(LPCWSTR)m_Data.downloadUrl; m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); } - else if (m_Data.bNewLanguage) - { - SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_LANG_OUTOFDATE)); - SetDlgItemText(IDC_EDITTEXT,L""); - GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_HIDE); - GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_SHOW); - bool check=true; - if (g_Settings[SETTING_UPDATE].value.vt==VT_I4) - check=g_Settings[SETTING_UPDATE].value.intVal!=0; - GetDlgItem(IDC_CHECKDONT).ShowWindow(check?SW_SHOW:SW_HIDE); - CheckDlgButton(IDC_CHECKDONT,m_Data.bIgnoreLanguage?BST_CHECKED:BST_UNCHECKED); - TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)GetDlgItem(IDC_BUTTONDOWNLOAD).m_hWnd}; - for (std::vector::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it) - { - if (_wcsicmp(m_Data.newLanguage,it->language)==0) - { - tool.lpszText=(LPWSTR)(LPCWSTR)it->url; - break; - } - } - m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); - } else { SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_UPDATED)); @@ -550,7 +491,7 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC Sleep(sleep); auto title = LoadStringEx(IDS_UPDATE_TITLE); - auto message = LoadStringEx(g_UpdateDlg.HasNewLanguage() ? IDS_LANG_NEWVERSION : IDS_NEWVERSION); + auto message = LoadStringEx(IDS_NEWVERSION); if (toasts) { diff --git a/Src/Update/Update.rc b/Src/Update/Update.rc index 382ed11..4f91f02 100644 --- a/Src/Update/Update.rc +++ b/Src/Update/Update.rc @@ -183,8 +183,6 @@ BEGIN IDS_OUTOFDATE "There is a new version of Open-Shell" IDS_NEWVERSION "There is a new version of Open-Shell.\nClick here to see what's new or to change the reminder settings." IDS_UPDATE_FAIL "Failed to check for new version" - IDS_LANG_OUTOFDATE "There is a new language file for this version of Open-Shell" - IDS_LANG_NEWVERSION "There is a new language file for this version of Open-Shell.\nClick here to install it or to change the reminder settings." END #endif // English (U.S.) resources