Remove old updating mechanism

We have our own updating already and don't plan to use old one.
There is no need to keep it around.
This commit is contained in:
ge0rdi
2023-06-09 17:52:18 +02:00
parent 714c98130a
commit 9f949dd99b
23 changed files with 6 additions and 1296 deletions

View File

@@ -4,7 +4,6 @@
#include <stdafx.h>
#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<LanguageVersionData>::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<LanguageVersionData>::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<char> 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<LanguageVersionData>::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,&params,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;

View File

@@ -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<LanguageVersionData> 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 );

View File

@@ -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<LangInfo> 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<LanguageVersionData>::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<LanguageVersionData>::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<LanguageVersionData>::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:

View File

@@ -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. <a>Click here to install it.</a>"
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
/////////////////////////////////////////////////////////////////////////////

View File

@@ -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}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

View File

@@ -1,506 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="update_4.1.0|Win32">
<Configuration>update_4.1.0</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.0|Win32">
<Configuration>update_4.2.0</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.1|Win32">
<Configuration>update_4.2.1</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.2|Win32">
<Configuration>update_4.2.2</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.3|Win32">
<Configuration>update_4.2.3</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.4|Win32">
<Configuration>update_4.2.4</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.5|Win32">
<Configuration>update_4.2.5</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.6|Win32">
<Configuration>update_4.2.6</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.2.7|Win32">
<Configuration>update_4.2.7</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.3.0|Win32">
<Configuration>update_4.3.0</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="update_4.3.1|Win32">
<Configuration>update_4.3.1</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F92A5473-F9E0-412F-923C-6632A66D13C1}</ProjectGuid>
<RootNamespace>UpdateBin</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'">
<PreBuildEvent>
<Command>..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\Final\$(Configuration).ver</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<NoEntryPoint>true</NoEntryPoint>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<Text Include="update_4.1.0.txt" />
<Text Include="update_4.2.0.txt" />
<Text Include="update_4.2.1.txt" />
<Text Include="update_4.2.2.txt" />
<Text Include="update_4.2.3.txt" />
<Text Include="update_4.2.4.txt" />
<Text Include="update_4.2.5.txt" />
<Text Include="update_4.2.6.txt" />
<Text Include="update_4.2.7.txt" />
<Text Include="update_4.3.0.txt" />
<Text Include="update_4.3.1.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="UpdateBin.rc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Utility\Utility.vcxproj">
<Project>{dae66c9b-05dc-4ace-97da-2547b490bbff}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -13,7 +13,6 @@
#include "FNVHash.h"
#include "SettingsParser.h"
#include "resource.h"
#include "..\UpdateBin\resource.h"
#include "ResourceHelper.h"
#include <commctrl.h>
#include "SaveLogFile.h"
@@ -412,256 +411,6 @@ qqq:
///////////////////////////////////////////////////////////////////////////////
struct LanguageData
{
std::map<int,CString> strings;
CString bitmap;
};
int GenerateUpdateFile( wchar_t *const *params, int count )
{
if (count<3) return 3;
std::vector<unsigned char> buf;
LoadFile(params[1],buf);
if (buf.empty()) return 1;
buf.push_back(0);
buf.push_back(0);
wchar_t token[256];
std::map<int,LanguageData> 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<int,LanguageData>::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<int,CString>::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<int,LanguageData>::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 <dll> <csv> // extracts the string table, the dialog text, and the L10N text from a DLL and stores it in a CSV
// extract en-us.dll <dll> <csv> // extracts the string table, the dialog text, and the L10N text from two DLL and stores it in a CSV
// import <dll> <csv> // replaces the string table in the DLL with the text from the CSV
// update <update txt> <update rc> // 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();

View File

@@ -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<LanguageVersionData>::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<LanguageVersionData>::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)
{

View File

@@ -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