/ \& h5 `% C; Y; a
- / RevApp.cpp : Defines the class behaviors for the application.& ~- G2 t9 y m0 ^, W$ {
- //
" }. ~5 b. s7 v& O4 ^! @' R
) Y1 G7 _; R- ~1 \2 M; N2 a2 @+ `- #include "stdafx.h"+ x/ t/ d+ `( w! ?# S! T9 u
|5 G! B, O. j6 M; W# ~. Q9 B0 t- //#define UNICODE
/ f* w q0 t& U& ]4 Y - //#include <gdiplus.h>" a, ]% t8 G! |* @
- //using namespace Gdiplus;
b J% n! X4 N1 z3 a2 }
( i. z1 E4 C$ f0 `7 j- #include "RevApp.h") ^! k; o% w) ?$ g
- #include "RevAppDlg.h"' |( w* K3 Q G2 q4 j) ]# j, N
- , ~5 E& O! A" t# Y) O' _. m
- #pragma warning(disable:4786)* l+ L; N9 @0 ~ G7 _9 p! a& V" e2 N7 P
- #include <map>
/ ~2 M% u7 G7 Q( ~8 U$ R8 x2 k - #include <list>
: q r9 K+ w. S, j - #include <direct.h>4 |& D. k. {9 g4 j1 Q
" h$ }0 E+ j: ?, y4 L- #ifdef _DEBUG
& E% [, j9 S+ Y& \2 Z- O$ E. | - #define new DEBUG_NEW2 b3 r. _: @* x8 D$ J
- #undef THIS_FILE9 N4 u* u6 y. K
- static char THIS_FILE[] = __FILE__;
# C8 g2 x& l) `, } - #endif' F$ n9 a! F* ?$ A" P( T, g3 k
- #include "SkinResDef.h"
2 f7 z7 v5 a! J; l0 [ - #include "ChangeBG.h"
" W# e, H1 T* l7 L' r# {+ j2 x - #include "AFXINET.H"
9 f! [+ I' Q- Z: T3 P! k/ g
* T$ T/ e9 O: G3 P' H& \" g( }* }- #define TRADITIONAL_CHINESE 0. _' r5 C1 M) T$ J
- #define SIMPLIFY_CHINESE 1
4 h$ p9 F6 L0 ^, w! u9 Q' D! v1 E - #define ENGLISH 20 a \( @: u/ M; S W
- int m_iLanguage = ENGLISH;
1 E G# m6 V/ ^2 H% B, u S - /////////////////////////////////////////////////////////////////////////////' _! W |$ B; c; T
- // CRevAppApp
; k; [* _4 i3 V! v0 t8 @8 ?* u - ! o/ V8 p9 b$ S |- Q8 w: t) v
- BEGIN_MESSAGE_MAP(CRevAppApp, CWinApp)3 F" g- r) |- D8 v5 \2 E
- //{{AFX_MSG_MAP(CRevAppApp)
0 P% |1 {3 W; Z6 v3 G, s4 @* } - // NOTE - the ClassWizard will add and remove mapping macros here." s3 B" N( C$ \
- // DO NOT EDIT what you see in these blocks of generated code!
: _" I8 A9 d" a$ z; l- r' ~( l ? - //}}AFX_MSG1 ]: \5 k& y, m, ]3 g
- //ON_COMMAND(ID_HELP, CWinApp::OnHelp)! m( O& N+ Q# t) u3 E
- END_MESSAGE_MAP()
6 E, x3 s" W. b4 Y
9 y/ I; D( U+ R3 z, K3 m0 P- /////////////////////////////////////////////////////////////////////////////
9 c& a; D2 ?' s L$ A9 P v - // CRevAppApp construction. { B6 r4 q9 M1 D( O$ \& a
- ) z1 ]- L# a5 P+ R4 s
- CRevAppApp::CRevAppApp(): G* U2 {8 h! M+ w" |$ s- D
- {2 g6 u: S2 J+ F$ p- A% w- ]
- // TODO: add construction code here,& T9 p0 b' ~3 P6 J* ]7 B2 }
- // Place all significant initialization in InitInstance
, _5 Q. m+ l9 j, ?, N- j - bDisplayIsBig5=FALSE;
% T E7 K# q* p - bRestartUpdater=FALSE;) \, j, v; U( L8 a3 Q6 n9 T( G2 i
- bFinishUpdated=FALSE;/ F% v1 ~/ }, U k* e
- if(GetACP()==950) bDisplayIsBig5=TRUE;
# R& p$ p7 b( m Y: J! v - InitChangeDataBig52GBKS();" e8 G$ ], k0 K1 w- y2 e
- InitChangeDataGBKS2Big5();1 ~% Q: r- M, j+ A
- //, V0 @5 O3 w" Q, I3 m$ K h( y
- bClickRunExe = FALSE;
1 a) Q6 M( {6 ?, m - //
2 Z: D+ F! ~! r5 a - }
5 r: } x+ T' |: @
f, r. }9 q! l: m: f0 U8 h/ q- CRevAppApp::~CRevAppApp()
) d: H! h5 W; ?! i( Z - {& g2 {6 R: L" ^
- // TODO: add construction code here,
" \; }5 g$ N3 p' \! f* i! h - // Place all significant initialization in InitInstance
( Y4 X# J F9 _3 u - EndChangeData();
; f- y, D0 ^9 t1 H! H$ v& }; U - }
8 ?7 j+ B4 Z( Q9 M
8 N2 y8 G* h8 H; k- /////////////////////////////////////////////////////////////////////////////7 [# i9 I9 f9 O* X# @; c& k
- // The one and only CRevAppApp object* u1 a2 [' V: z$ M- d7 u# p* U r, W" L. P8 n
+ g3 D# g& v% S* W9 ^- CRevAppApp theApp;1 x$ R/ T# Z3 g
0 T: ~) b7 ~; k- char *CRevAppApp::ReadFileNames(FILE *fp,char *szFileName)
$ l x/ e; l+ \8 f; N - {
; V+ H4 E% h( o7 I' i% a" c - int iEOF=0;. o2 [& i. A9 ^
- char szTempName[MAX_PATH];
7 Z* }7 Z# G8 @; G - *szFileName=0;/ Q4 c6 z8 T. `
- iEOF=fscanf(fp,"%s",szTempName);( m% ~5 E: @- {- K* ^- T
- if(strlen(szTempName)>=1&&szTempName[0]=='(')& W: ], j w6 t1 J
- {' F/ f& r$ S, ?- i
- strcpy(szFileName,&szTempName[1]);
. ~! g/ x) O, X3 t' v - while(!strchr(szTempName,')')&&iEOF!=EOF)
% G) g/ |! J' j% a7 M6 k9 N% x- g - {% z2 m b" D% \- c" ]& i. ?
- iEOF=fscanf(fp,"%s",szTempName);
% `+ [; J. V" e4 I, G - strcat(szFileName," ");
4 y1 Z% h7 `0 s - strcat(szFileName,szTempName);
" ~& w4 O2 w. L9 m$ S" Z$ i - }
8 g9 [6 p) C( f' h9 ?0 T - if(strlen(szFileName)>=1)& o- M" G4 q4 J
- {
$ v* O/ b* W F8 }6 b: @% G - szFileName[strlen(szFileName)-1]=0;) g" S7 m: H1 \8 U% m* @+ P
- }
& g0 k5 Z' s# S h ? - }8 ]: l. n1 a. {3 b& q
- return szFileName;
9 t( x7 b8 I! W6 ] - }+ C% i' L0 \8 }9 ^+ b* J0 B
- 9 z! s+ x$ J8 J4 H& N7 o9 R
- bool CRevAppApp::LoadLogFile(char *filename,std::list<CString>& UpdateList,std::map<CString,LPUPDATEFILE>& UpdateFile); Q( r- K, g. d2 O4 n* n' \
- {
+ i# c' T. G2 a8 s3 _ - FILE *fp;3 L N2 w5 p. O9 y7 U; o! s, w: O
- char *key=NULL;
+ s/ c/ E& W- v4 p - char version[MAX_PATH];
; w2 C' {% ]1 d- M; K$ n - LPUPDATEFILE file,olds;3 e. m* y6 ?) J4 x1 h1 a8 o
- std::map<CString,LPUPDATEFILE>::iterator p;- w$ y; s# y% \; I" b
) Z% M L( F# n: ^8 k5 {- UpdateList.clear();
Z+ p( u g& p) N0 z8 G W% @ - UpdateFile.clear();
4 ?7 f2 I1 q; Y# I - if(GetFileAttributes(filename)==-1) return false;
) n$ Z. z5 [! R, p - if(!(fp=fopen(filename,"r"))) return false;% g! W( r% G. {, r# j; k& V0 g
- fscanf(fp,"%s",version);
0 H" i9 _' h1 r z/ ~6 k' q. k7 k/ Q - if(stricmp(version,"Bloodyf")) { fclose(fp); return false; }
. ?7 h/ s: A/ }! y9 r( ~$ O - while(fscanf(fp,"%s",version)!=EOF)
: d" q0 R% J9 t, W& s- q - {
; l$ u4 p7 u2 H- g, w$ F. ? - file=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));
1 Y& _/ M4 e3 G - fscanf(fp,"%s",file->path);# Z+ `7 t q5 Y$ M5 R
- ReadFileNames(fp,file->file);
8 j, o V% ^7 ~/ x/ Y! n; x - strcpy(file->full,".");
0 Q8 q4 o# Z* n% S. S - strcat(file->full,file->path);0 R/ J4 b+ }4 r# l9 P
- strcat(file->full,file->file);; N, Q1 x' H$ c: u( @2 A
- if((p=UpdateFile.find(file->full))==UpdateFile.end())6 }0 S, M+ X U3 q8 }2 h: e
- {
! ~: t# H' x+ y1 [- V - file->vers=(float)atof(version);
1 y- [4 q- A4 d5 b - UpdateList.push_back(file->full);1 u8 q b9 |& ?, g
- UpdateFile.insert(std::map<CString,LPUPDATEFILE>::value_type(file->full,file));
' S+ Z5 N5 E+ o" y7 z( C5 } - }
; d( [" S) u" x2 @/ V# |, w5 ? - else% M5 G5 I, w. F8 L$ Y
- {
9 Q* z- D# G: S5 P, e - olds=(*p).second;/ h( x7 B3 y t3 M
- if(olds->vers<(float)atof(version)), g& W5 ~' w/ s) M( h- w
- {
( b5 B& b% I" z* V- c- j3 w$ N - olds->vers=(float)atof(version);
2 r) B8 c/ R0 v2 i - }5 ^9 M: L1 y0 ?. E( O& W+ V' a
- free(file);7 `3 h' l2 p3 `, z
- }
4 z( V. g" v i - }5 q; R& p0 m/ l- z+ z2 S9 P( D5 v
- fclose(fp);) S) u6 f2 v+ \3 E
- return true;
# \- f+ ^4 C M, M - }! y1 M M0 x: a" r" E
) B$ W0 l9 a; `) a- DWORD CRevAppApp::GetPathFromFullPath(TCHAR *szPath,TCHAR *szFullPath)% J8 }: b" y3 s" Z8 Z8 D0 L7 a
- {4 ~" h/ }% D/ e8 e7 [
- TCHAR szFull[MAX_PATH];
, r. L- N' W8 @, k' H6 y - TCHAR *token,*inter;1 @( j7 }) _6 D, p- e- ? N
- *szPath=0;
! |1 K- b" M l) S - strcpy(szFull,szFullPath);" Q5 t/ m; L! N6 d
- token=strtok(szFull,"\\/");9 Z* Z' K E, p; v& R# |: B) W7 j6 A+ j
- inter=token;4 U$ i. T9 l( \; `
- while(token=strtok(NULL,"\\/"))
2 B, p( d$ d" f, R$ D6 ]- [ - {- A; ]' L. ?* C: n1 K* w& j# k
- strcat(szPath,inter);. C' L0 r' d2 z
- strcat(szPath,"\");5 @* U, s$ c3 g0 g0 ^: K0 |( p
- inter=token;& d) p |5 o$ X
- }" Z7 A" A2 t5 B" R1 ~# f* F1 g
- return strlen(szPath);/ F$ V2 J* E% @
- }
; E' `" _" }9 r0 B& ^6 Q/ q
, ~6 k. @& C5 g1 s9 X- void CRevAppApp::ForceCopyFile(LPCTSTR Source,LPCTSTR Target,BOOL Erase)2 B7 e7 }1 D. R3 R3 R3 G# }/ j
- {# Y4 b9 H9 T) u% X, R2 R
- DWORD attrib=GetFileAttributes(Target);8 {6 m) X2 d& L; @0 b; l( x& ^
- if(attrib!=-1)
, u+ W( b& E0 M+ [. I: \ - {
% ? o5 `* U" O- M8 d+ o# g5 V& F2 Z - if((attrib&FILE_ATTRIBUTE_HIDDEN)||(attrib&FILE_ATTRIBUTE_READONLY))
. I5 J2 a" T' u% L - {
! C( P" Q H. m - attrib&=~(FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY);1 [3 S% m1 @6 r/ C* A4 ?: u
- SetFileAttributes(Target,attrib);
. m* `# b+ v" D( e' G: p - }$ K5 j* n6 _$ ]! H5 |+ H
- }. U% H2 `( K7 s6 {5 ?
- CopyFile(Source,Target,Erase);
- W8 C; t; d& {* f8 ~( o - }8 C5 [; `) h* H4 m1 A
- 7 L3 C n/ j; ^0 m3 B
- void CRevAppApp::Fprintf(char *FileName,char *message, ...)8 _$ n! e, z$ H* p/ W- U* @/ y$ W( |
- {
/ H5 S# L5 X! J1 P: ~ ~4 w - FILE *fp;
1 a& Z. {" `1 Y - char szBuffer[8192];2 f3 b; a0 w2 ^ h& H6 S
- va_list argptr;) Q( y! @* }; U* o1 W$ ?
3 @4 y7 K+ B( i! n+ O0 u- va_start(argptr,message);
8 t3 E0 |9 u1 q - vsprintf(szBuffer,message,argptr);
, I% K; V" A- A1 F3 y - va_end(argptr);
; C/ z- ^( A$ ]- ~% t5 C6 w - fp=fopen(FileName,"a");$ @9 ~, ~" |! A' y+ T" P
- if(fp)
0 @; P- s E. _6 L - {
/ ?2 Q _# v u1 P4 b - fprintf(fp,szBuffer);
# w6 L# a! [+ e - fclose(fp);
; v) ^. _* g9 p( C- H* | - _flushall();, J! v; X T% l8 o0 Q9 a+ `. f
- }/ |% @2 U$ I/ ^( t+ g
- }
1 Z7 ~: m1 W2 T ^. | - & f3 O3 r. Y; W0 ~! K
- BOOL CRevAppApp::Fclearf(char *FileName), a( G3 j M/ ?! ?5 S
- {
$ S s1 d4 t; |3 e5 V+ i0 [ - FILE *fp;
# o% _* }0 F# t! T1 z" K0 [( \$ N4 D - DWORD attrib;
% \ I- _( \" i& ]1 G% n - attrib=GetFileAttributes(FileName);/ k& l. J; q+ O& R+ A% V
- if(attrib!=-1). n4 @6 m( T3 u4 L5 I
- {
7 v, R0 S! p [' H - attrib&=~(FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);
8 q# ?8 T l" h" \" Y8 b - if(!SetFileAttributes(FileName,attrib))4 \+ n9 z7 ~, P' ?. m9 v
- {
" D+ v9 A9 _5 ?4 q" Z; V: g$ n - return FALSE;
* @. |+ S9 q( u2 ~ - }
/ b; y7 r" v+ O1 m! _3 [ - } V7 ~; W/ V8 k( G3 j
- fp=fopen(FileName,"wb");- J1 a0 c. }, v% G1 O' d) N
- if(fp)
, E: Q2 ^5 J* w! \, V - {
) b L6 G2 R! M. L9 Y9 b% n- o& g - fclose(fp);' Z% Q' ?, H% ^$ ]
- }+ M# {- ]4 y! _5 U% m% v2 c
- return TRUE;
* x% W7 c7 A* F g( Y0 _& R - }
2 z7 k0 g7 f8 u3 p! O( f" D
) ~6 b' {. P) x4 I- BOOL CRevAppApp::UpdateLocalVersion(void)
. c# H l7 t- |# }9 h M/ ` - {8 s- M; U7 R. T
- char filename[MAX_PATH];, k, o. r' l" F0 @
- LPUPDATEFILE file,olds;
+ h- ]: } N5 S: E# x - std::map<int,CString>::iterator i;
8 H4 E2 ^% L/ }1 F - std::map<CString,LPUPDATEFILE>::iterator p;+ U/ q' h0 a0 b: P, m( M" Q( Q
- std::list<CString>::iterator l;
" Y3 n& B) A. [$ E; X- k9 A2 e
) H8 n: A6 ~* s! [9 T- if(bFirstUpdate)+ E2 k# s5 j; y$ T6 f+ S
- {. X; _+ M* T2 m' i' _! ]
- dwCurrFile=0;
$ D5 X2 p( E7 Z/ z1 F& ? - bFirstUpdate=FALSE;; @1 a! A* ]) G; u( j
- if((i=UpdateLocal.find(dwCurrFile))!=UpdateLocal.end())
4 m) a& z$ `! a4 u* Y; z5 B/ z - {
1 v+ P, h) {4 h; x1 G) V/ S" Q( X: l - dwTotalFiles=UpdateLocal.size();
. K. \! K' A9 ^ F. m' Y - dwDownLoaded=0;4 N7 d8 a6 x: E" y# F/ U
- bSilentStep=FALSE;
/ G6 a0 j2 I4 s6 r8 i3 l" O - bCompressed=TRUE;
0 y4 o, A) p' |9 R2 x - strExtLocal.Empty();6 p. {& \ V! d( H! Y
- strFullName=(*i).second;
' o. @# ^9 P. Q% B - dwProgramState=AP_CONNECT;* w3 x- {1 ^- ?3 c
- return TRUE;
- [2 j5 q7 a/ F3 B4 ` - }5 p& @8 @* t7 N8 k2 W
- }
5 f& ]$ K4 k* D" c/ J8 Z& O - else if(bRestartUpdater==FALSE)* c+ E" w. B$ e" x$ d9 \
- {
: \. }" n$ H& P7 Y# b - if((p=UpdateFile2.find(strFullName))!=UpdateFile2.end())
2 Z1 Q8 L% e3 s$ b1 q$ `: u - {, L1 V! ^- s8 P' B
- file=(*p).second;" E5 K2 D; d$ t, j9 V" l F5 ^
- if((p=UpdateFile1.find(strFullName))!=UpdateFile1.end())
1 ]6 ^9 B) Q* H# O3 q - {* m( w' p& m+ i% [. l9 k
- olds=(*p).second;
- ?! i0 T5 s4 n) q# Z# B% Z0 x - olds->vers=file->vers;" u8 G5 X4 ~; \, I
- }
$ S Y* Y8 q/ B( V. P - else
- M: }* |/ P9 j# m/ Z - {* k/ u7 p E( ?% X
- olds=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));3 y1 q; [; f7 c. z5 t/ D
- memcpy(olds,file,sizeof(UPDATEFILE));4 H% q8 R$ o( }2 s
- UpdateFile1.insert(std::map<CString,LPUPDATEFILE>::value_type(olds->full,olds));
% K6 ]4 h6 z; B - }
2 w. R4 g1 |/ ^* p; T% `3 e$ [ - if(GetFileAttributes(".\\update.tmp")==-1) Fprintf(".\\update.tmp","Bloodyf\n");+ p+ a! H. ^; z( c
- sprintf(filename,"(%s)",file->file);# e! N0 p( L/ z5 N
- Fprintf(".\\update.tmp","%4.3f %-48s %-24s\n",file->vers,file->path,filename);6 b+ b: ^: _$ B, l6 J
- if(!stricmp(file->file,"csupdate.exe")) { bRestartUpdater=TRUE; return FALSE; }
: ~3 q) d' u: t$ }% { - }6 ^ Z. l) P' U2 k3 e* j
- dwCurrFile++;
: A# e) L' C. K( | - if((i=UpdateLocal.find(dwCurrFile))!=UpdateLocal.end())
3 v# N. F+ R1 e, ^, Y& K - {
' t& Q5 C5 l# @# w/ `- ?8 c+ Q! U* X - bSilentStep=FALSE;
+ k3 ~5 J: O) {7 r- G; ?6 _ - bCompressed=TRUE;$ d4 f% o$ B a0 \& U& N) E
- strExtLocal.Empty();6 @0 \. k" Q5 {* Z- T2 @9 P6 H8 Y
- strFullName=(*i).second;* g. |6 K2 a/ R( P& }, A% m
- dwProgramState=AP_CONNECT;0 D) a4 K0 G" W+ b% ~# Z
- return TRUE;
( P! F1 X6 U2 u+ W7 C i+ n - }2 W9 j$ f6 B- V w% t. p! Y
- if(!bRestartUpdater)' |, g+ K$ K( M# m3 z% j; }
- {8 M5 k0 a4 F9 c5 f, k4 I6 a2 l
- int iCurrSize,iFileSize;5 k% O/ o/ {' N& u
- iCurrSize=0;
; D% Y7 i- ^' I) T2 n; a - iFileSize=UpdateList2.size();3 ~; A, n! { u9 f
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝戈い.....");
+ |7 g4 H+ `% n$ A* B - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新资料列表回存中.....");1 P' p/ F4 B. P; z( |
- else dlg->m_ListText.AddString("saving updated files.....");! A8 y% d& `: ?
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
8 b4 A$ ?7 i+ J7 u& N! k - Fclearf(".\\update.dat");
0 T3 ~1 s8 f0 t. Z3 } - Fprintf(".\\update.dat","Bloodyf\n");3 m7 t& l. G2 i9 p0 _% ?# c- ^
- for(l=UpdateList2.begin();l!=UpdateList2.end();l++)$ u6 R2 M7 i) P% y6 m
- {
& N; Z, [$ e7 e M/ k9 N" e; y' | - if((p=UpdateFile1.find((*l)))!=UpdateFile1.end())4 l: p& w& O! I: U! O# U5 j1 O. d
- {( Z" D! Z9 X, A, I6 r% A
- file=(*p).second;
# e% O0 @5 S6 X6 ^ - sprintf(filename,"(%s)",file->file);2 w# m" r K9 y% v- k5 f
- Fprintf(".\\update.dat","%4.3f %-48s %-24s\n",file->vers,file->path,filename);3 L# C; q( S9 u0 h
- iCurrSize++;
' T% f2 e7 k! _4 U; d+ t1 }( ] - dlg->m_Process2.SetPos(100*iCurrSize/(iFileSize<=0?1:iFileSize));1 H0 z; W2 h/ C7 I+ V+ D( D8 x3 B
- }7 S% t$ W4 h) ]9 L. y9 u, n) i
- }
_2 W6 ` V. ]/ ~: z4 I - unlink(".\\update.txt");
) y6 Q! M0 \- ^+ Q/ }* ~* S - unlink(".\\update.tmp");
' Y6 ?" {! R# e8 H$ l - Fclearf(".\\checkversion.dat");, W* j7 e% m% q4 @0 C- N6 c
- Fprintf(".\\checkversion.dat","%4.3f",fCheckVersion);
! v% }% }* B7 R; M - if(UpdateLocal.size()) p* u) D7 A* k; S
- {8 D2 J. a$ T7 X& S$ A
- UpdateLocal.clear();
8 S: ~" W3 l3 u6 o' F - }3 {' m7 e5 g' H' _% O# S$ h& h% M
- if(UpdateFile3.size()), Z7 Y( z+ I# T! A+ Y, l0 |; S
- {. o9 r2 H l( u1 Q4 x+ I& w
- for(p=UpdateFile3.begin();p!=UpdateFile3.end();p++)% h0 q1 e b6 s5 T
- {
$ }) b5 u3 F6 C5 q - file=(*p).second;
, a% |& ]8 y) M! v, e$ C" `. ? - free(file);9 j& t, \4 Z3 D" f
- }+ s4 q9 L9 `. w }: i0 v- r. Z2 z$ S
- UpdateFile3.clear();+ M3 f$ n+ A; y* {7 V. n
- UpdateList3.clear();
3 U/ _, p8 B5 [+ }: c9 k0 H% | - }
4 J. b* Q6 n: b/ f, F - if(UpdateFile2.size())" J) o! c9 z( m. z! H
- {; U$ C( ?" M. j2 \2 j: ?
- for(p=UpdateFile2.begin();p!=UpdateFile2.end();p++)
/ s6 ?" a7 v( Q6 y t( j& ] - {
9 g+ F; V: B. }1 n: u) _2 ^ - file=(*p).second;! F2 v' H) M: Z# @* J4 e# z
- free(file);
. U& \) r: K+ @: j9 u - }# h3 U: |+ n2 F5 Q
- UpdateFile2.clear();
) N! j& T6 M( X$ s3 h! [ - UpdateList2.clear();
! y: v& \/ k1 t8 G6 p! C* F( c/ R - }
5 E$ o, H& [- v9 y1 q - if(UpdateFile1.size())
/ J: X6 @5 U7 q8 B - {
Q" @- g* B# `! I. M! v( b4 g - for(p=UpdateFile1.begin();p!=UpdateFile1.end();p++)- y" w' T2 P$ O/ Y# U3 u3 e
- {$ [. B1 z$ i! E3 _
- file=(*p).second;
9 d/ J' S& F$ U" m1 c; E0 v' b - free(file);
) i* }3 d3 U2 I) U. d - }' v% p- x4 \+ T, x7 g* A9 {
- UpdateFile1.clear();: O/ Z0 S2 y# d0 g# E
- UpdateList1.clear();
1 M0 |/ i1 z& ?( Q. e9 e) y. F/ L) t& c - }7 d7 L6 M' D9 C7 z. S7 W
- dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));
. k$ A- S; f2 G( Q/ d3 C- r - }# D7 t0 i7 S; U, r- R8 ]
- }4 z' x# p5 F6 A
- return FALSE;
! X: ]- j' n: n0 _ - }' T& s& I% u" @* K6 m# P' L$ Z [
: K+ P9 ^' t9 |/ I) v- void CRevAppApp::ClearAll(void)) C* Y5 P$ _( i4 D5 j$ k, V9 l
- {$ O9 l- g# ~; E9 }# Z0 \1 V
- LPUPDATEFILE file;
- J8 k7 n+ _% w$ Y. w: y" d% q - std::map<CString,LPUPDATEFILE>::iterator p;. i" z7 x6 j ^' X
: g+ l# B# _2 \( ?5 o- if(UpdateLocal.size())
% c2 A/ N1 h s! ~+ L - {
' ], |, X$ F3 U& ? - UpdateLocal.clear();6 j; H& T. a. }3 a
- }
3 X5 H* J% u# i) L0 o# S3 E - if(UpdateFile3.size())+ [9 p9 n2 Z0 m/ O
- {
. }- o# {" i( ?. U _( T - for(p=UpdateFile3.begin();p!=UpdateFile3.end();p++)
* |9 ]' Y+ f4 D t. ]! ~ - {2 }0 _0 T- V4 o* T
- file=(*p).second;
: Y. Q+ w: l/ l5 O - free(file);
, }7 K" R8 j: ~4 b. f- q3 A; d - }( c( g- ]$ x% |. p7 ]8 h
- UpdateFile3.clear();
0 G8 g) r1 @! s7 H P% P - UpdateList3.clear();' R. i6 ]/ S8 {
- }
+ k: K# H4 H7 s) C0 r9 M" F - if(UpdateFile2.size())- G/ v% R3 g) z
- {; Y6 J1 t( M- Z7 G( S A! o
- for(p=UpdateFile2.begin();p!=UpdateFile2.end();p++)
% |. V9 I2 @/ I6 O8 k7 o - {! N# P M5 ^8 x! F& B
- file=(*p).second;! J+ l! t. }$ r8 E
- free(file);
7 @& H I$ W: |% W - }
# T$ X. S3 _+ j+ Z7 W; Q' D* \: } - UpdateFile2.clear();
( e- I0 D- E7 ]4 I - UpdateList2.clear();3 z+ s; f. G3 n
- }
/ F2 `5 |4 H- N7 Q. S5 ^) ^ - if(UpdateFile1.size()). h- {+ Y v C2 j% d( O0 Q) l
- {# |' D7 O/ [" o. ?' p- N
- for(p=UpdateFile1.begin();p!=UpdateFile1.end();p++)
; O5 I/ O1 ?8 K3 O) V2 G3 h - {/ x8 `9 g( I" T
- file=(*p).second;
3 _( i% |1 L/ D* | ~4 u - free(file);
4 W6 d$ A: |! X4 L# T3 L8 T+ Y* N$ U - }
" [1 R W2 Z/ k - UpdateFile1.clear();* i: Q5 w; N0 [ P. s) |
- UpdateList1.clear();
4 h+ j' q( a" m' Y7 y3 O, O - }/ x% Q1 j1 t$ y& z: `/ m9 Y$ K& v
- } 5 g# D" `, `9 q9 ~, }
- , ^% S6 C9 ^0 K/ R/ x8 A
- BOOL CRevAppApp::CheckLocalVersion(void)1 W9 b" W( e3 d$ q0 c& V5 h9 U
- {2 z5 ? ]* Z2 ]1 @
- int c;, ?% N: R6 u7 `% J3 M
- LPUPDATEFILE file1,file2;
7 y6 V8 C5 q8 e8 v& [5 d, U8 S - std::map<CString,LPUPDATEFILE>::iterator i,p;" M3 x3 I/ D% O H
- std::list<CString>::iterator l;8 q& s* S6 p4 {4 f( x- K* m! z
- 5 J1 t: C4 t$ E2 K7 D0 P3 f8 X
- UpdateLocal.clear();
0 S4 b# a* [3 G4 c0 R7 B - LoadLogFile(".\\update.dat",UpdateList1,UpdateFile1);
( R+ W+ ]$ y9 \7 R2 F- Y - LoadLogFile(".\\DownLoad\\update.txt",UpdateList2,UpdateFile2);
& c! M! z7 n% D" I/ C' R Q% Z - LoadLogFile(".\\update.tmp",UpdateList3,UpdateFile3);' V) m% I) H! J4 T: F: x
- // if(!UpdateList1.size()) MessageBox(GetActiveWindow(),"Cannot read update.dat file !","Error",MB_OK|MB_ICONERROR);9 @7 [' @& H+ ]5 r! M( d
- if(UpdateFile3.size())
0 l9 q: r) d- f5 z; T# D: W. ] - {
& h0 l+ g" v* T' l0 _% Y - for(i=UpdateFile3.begin();i!=UpdateFile3.end();i++)
: R6 [2 @: H' D3 }' _2 s$ n* K+ e - {- m2 R# J1 c! K
- file2=(LPUPDATEFILE)(*i).second;% F2 l) q& I8 x. J7 s( N
- if((p=UpdateFile1.find(file2->full))!=UpdateFile1.end())
) y5 l# I- ^! r3 b8 y$ p1 g - {7 c$ F) d2 ?! B2 I0 _7 E7 a3 D
- file1=(LPUPDATEFILE)(*p).second;8 L3 ?- t1 x+ x) T/ w0 Z
- file1->vers=file2->vers;
3 M6 Z m& }5 j; ~ - }- C; ]8 I l4 }2 h, W
- else C1 {9 b( |; I
- {
. H1 V# u* @8 |8 U5 w U9 l6 E - file1=(LPUPDATEFILE)malloc(sizeof(UPDATEFILE));. p) @3 _0 X+ P- J
- memcpy(file1,file2,sizeof(UPDATEFILE));3 m3 q+ \( _! n6 C8 F0 f6 [
- UpdateFile1.insert(std::map<CString,LPUPDATEFILE>::value_type(file1->full,file1));& ?3 ^! \/ m+ ]/ w+ \$ n% Z
- }
6 O% M3 S7 Z" @/ s& P: L( {- s - }% n4 @% N8 n8 M! A! w: `
- }
# {9 z5 m( d6 g2 _" ]0 k: s - for(c=0,l=UpdateList2.begin();l!=UpdateList2.end();l++)3 O; B/ f2 j; x3 Q% m. d. u
- {
9 M9 h6 S# _9 d* t% g# f - if((i=UpdateFile2.find(*l))!=UpdateFile2.end())
$ v& G$ O/ u, Z- a - {
! w' a* c z5 @$ Y" \( @ _2 R+ R+ V - file2=(LPUPDATEFILE)(*i).second;
5 N4 \& G( R- z F - if((p=UpdateFile1.find(file2->full))!=UpdateFile1.end())
! y6 H8 |( L! I; K1 M" @* @/ l - {
% j3 V. g; d$ P8 w! X! {6 N - file1=(LPUPDATEFILE)(*p).second;
8 w8 t% ?! D) z - if(file1->vers!=file2->vers)) ~% _4 ]( ~# m" O
- {2 ^. |2 ^" @* ?# b
- UpdateLocal.insert(std::map<int,CString>::value_type(c,file2->full));# ` }7 ?; J6 y l& q4 y& e
- c++;' \! u( b! W7 @
- }
! C$ l+ Q8 _0 C7 x$ s9 O m - }1 e% Q) ^6 }. T2 C) q0 U
- else8 @! }; K: d a5 \1 g- C
- {
% M) n. e9 L1 p0 E - UpdateLocal.insert(std::map<int,CString>::value_type(c,file2->full));. }0 D$ Q J' I8 n% u0 r
- c++;, _- q% ~' D2 ~
- }
: W( w5 c2 F' W - }
m, D% {7 `: y - }) i% \0 ^& Q o3 }- ~2 s4 u0 {7 q
- unlink(".\\DownLoad\\update.txt");
) L, ?3 N% P# s - if(UpdateLocal.size()) return TRUE;
/ t8 W8 Z. V: a$ l - else return FALSE;1 e" z( u: Z4 v8 Q8 U7 h& s
- }
: M" b3 M2 H, S
" r$ e# L5 U, R7 N3 p% }- #define DEFAULT_PATCH_URL "http://elysium.waei.com.cn:8080/~elysium/Alpha/"" {' E( D) d0 b( ~7 t9 h
- #define DEFAULT_REG_URL "www.wgs.com.cn"
1 E! C" U1 l: h- z) M
1 E' x/ R8 }6 L& k! z! p
: {3 Y6 c# d) W$ |6 G2 g
; N5 u; r& D9 D) D- BOOL CRevAppApp::ReadCfgFile(CString sCfgFile)
" }" ~( Z" C A+ o( X - {. i! T: g% X1 C
- DWORD dwType=AFX_INET_SERVICE_HTTP;' L8 O/ m! D# t1 i& h. @% ^; C( A
- if(GetFileAttributes((LPCTSTR)sCfgFile)!=-1)
8 I" X0 k* J! a) v' A! Y( ^ - {
! v r1 o0 I" K: d" ] H - char szLanguage[50];. R: d; T. t ]$ y; ]& ^! l' o5 h
- GetPrivateProfileString("Interface","Language","",szLanguage,50,".\\Config.ini");
( `/ a; C: E1 M" V# }$ B - if(!strnicmp("BIG",szLanguage,3)) m_iLanguage=TRADITIONAL_CHINESE;
B( e( u+ f+ | - else if(!strnicmp("GBK",szLanguage,3)) m_iLanguage=SIMPLIFY_CHINESE;
& `# o& Z) E- c( u: k" U - else m_iLanguage=ENGLISH;4 E" @+ I+ o) a" g
- char szRegister[100];, m$ `* ?2 W7 _& l
- GetPrivateProfileString("Function","RegisterURL","",szRegister,100,".\\Config.ini");& F4 F0 V5 e. c- w1 b
- strRegsName=szRegister;) ?( K/ v* _5 A
- char szPatchURL[100];4 W8 k2 x! F- i% L3 ~8 j
- GetPrivateProfileString("Function","PatchURL","",szPatchURL,100,".\\Config.ini");
5 |% b5 R; g: D- k* p - AfxParseURL(szPatchURL,dwType,strHostName,strHostPath,wPort);# c' {. e7 B9 [
- }
0 D3 o% [* v" L a* Z/ y' ^ - else
. d# e7 e. P- z9 p% q - {
" R7 h* t* U- k' \; x) {$ X - AfxParseURL(DEFAULT_PATCH_URL,dwType,strHostName,strHostPath,wPort);
+ G0 y" T7 {- l - strRegsName=DEFAULT_REG_URL;9 s) h/ s' Q' @ j
- }! c. {% H' {; R( u* F
- if(GetFileAttributes("hosts.ini")!=-1); Z; L: Z( R1 k% W/ T; ]! l
- {
) R+ S+ |- _) I5 s/ n7 _& z- ^ - char szIP[50];) Y7 x% E7 r' _: l$ D2 M, n7 e0 [
- char szDIR[300];
" p6 ~: k7 X" x% d; s' A1 f - if(0!=GetPrivateProfileString("update","ip","",szIP,16,".\\Hosts.ini"))- p" ?" _( |7 Q7 H& E2 W" o
- {# T+ n9 E+ G9 Q+ Y
- wPort=GetPrivateProfileInt("update","port",0,".\\hosts.ini");( V5 `7 Z$ R0 h$ r. H2 f
- GetPrivateProfileString("update","dir","",szDIR,300,".\\Hosts.ini");9 f! i( y1 h- q0 ^6 u2 f
- strHostName=szIP;4 @5 F/ j8 v4 g# g5 j5 Q
- strHostPath.Format("/%s",szDIR);" A& l& @2 }' V) D1 N
- }
( Q# a& ~' z+ O1 O/ L5 t0 n& W - else7 Y# g: q5 P& j" N
- {
7 I' _; Q5 j" W H W% Z - if(GetFileAttributes((LPCTSTR)sCfgFile)!=-1)+ t0 u) [: U# C1 s; h3 o! f0 v
- {* Q8 M% Y4 C6 b4 b8 ^! Z* N! @
- char szLanguage[50];
6 I4 {% k7 f! B# s u - GetPrivateProfileString("Interface","Language","",szLanguage,50,".\\Config.ini");* v. ?; J1 H0 x& O" n
- if(!strnicmp("BIG",szLanguage,3)) m_iLanguage=TRADITIONAL_CHINESE;* U2 ]7 H7 N1 @1 \1 s! i0 T
- else if(!strnicmp("GBK",szLanguage,3)) m_iLanguage=SIMPLIFY_CHINESE;# x5 f: q8 Z, P
- else m_iLanguage=ENGLISH;; g0 e7 ?6 e5 U$ A1 R, T* B
- char szRegister[100];
" T" D6 l% i8 S- @! |% j3 ]8 K& }7 _ - GetPrivateProfileString("Function","RegisterURL","",szRegister,100,".\\Config.ini");' y& E/ ]! V3 e* q8 c1 v: s
- strRegsName=szRegister;
, L' ^5 M: B5 I# ~3 c - char szPatchURL[100];
: m: m- X% v& V0 k - GetPrivateProfileString("Function","PatchURL","",szPatchURL,100,".\\Config.ini");
" A3 M" H: A- L) k! G6 C - AfxParseURL(szPatchURL,dwType,strHostName,strHostPath,wPort);
& S$ R/ _1 T' |+ l( B - }
3 N9 n+ L' p8 Z* W7 x! b6 _ - else1 }5 K$ n! W' \4 p* J. [
- {- {5 n1 h/ `+ O5 i% O
- AfxParseURL(DEFAULT_PATCH_URL,dwType,strHostName,strHostPath,wPort);
/ |2 f6 Q; e- _/ @- Y# H - strRegsName=DEFAULT_REG_URL;6 `! @0 R% M0 W/ V5 ^
- }
5 D. u" c' B3 y) W5 I( H. l; [- C - }: W" }( Q( V! O
- }
3 _$ q6 g( @" ]' i/ V - return true;8 ^. x7 t) { T/ Z0 w/ h' ]0 d' z
- }
' \0 ^5 @3 e0 R - # d- K. w/ J$ W3 X0 G* k4 k# i- M
- #include ".\ZLib\unzip.h"0 `% }5 A2 k/ X7 q% E
- extern "C" extern int do_extract(unzFile uf,int opt_extract_without_path,int opt_overwrite,char *extra_path,ZIPCALLBACK zip_callback);
2 e' _! V }1 r6 Z9 v0 f - /////////////////////////////////////////////////////////////////////////////+ N4 \; w* U0 K, \! u
- // CRevAppApp initialization3 f7 U+ J' V$ Y N! C
- ' @# s" `; n' j+ W8 N" c6 l8 C
- BOOL CRevAppApp::InitInstance(): p- z/ S7 @& I* ~
- {
- S5 O) x) D0 Y2 { - TCHAR szPath[MAX_PATH],szPathSource[MAX_PATH],szPathTarget[MAX_PATH];
, N# [/ f0 n4 J; \& ~* F3 J - ) Q- d5 ^0 C3 \, g3 n% b, b3 P
- GetModuleFileName(NULL,szPathSource,MAX_PATH);
& A; q) y( C% A6 s2 V" d - if(GetCurrentDirectory(MAX_PATH,szPath))
7 s4 I( `5 H3 V1 U0 z" s3 \3 E* Q1 K - {2 i3 Q; f4 T9 L% V. Z- f. o
- if(szPath[strlen(szPath)-1]!='\\') strcat(szPath,"\");! L+ G" F( H. i& @3 X; b5 ]2 j
- GetPathFromFullPath(szPathTarget,szPathSource);4 D% K0 I- u! q" ~% B
- if(strnicmp(szPath,szPathSource,strlen(szPathTarget)))/ V! d7 `2 `. c
- {
; I# u1 A5 E! @& L6 T, n - strcpy(szPath,szPathTarget);
6 g/ y1 Z9 O5 D3 F - SetCurrentDirectory(szPath);
! C1 b \) h9 A4 d/ l1 L - }! J( E9 B; q5 v5 k9 R5 r
- }' P5 w& u# z& H+ o# A
- #ifdef _DEBUG$ R& |; A9 i6 m2 r" ]
- if(strnicmp(&szPathSource[strlen(szPath)],"CSUpdate.exe",12))& | }5 \' i, ]2 q6 d' _' G
- #else
" ^+ e& B6 k* Y, Y/ H' w - if(!strnicmp(&szPathSource[strlen(szPath)],"CSUpdate.exe",12))% l3 p# E! A6 w9 H
- #endif4 |& S. V2 M0 B; B! T
- {
' L9 O& S8 P8 d, M - char tempFileName[MAX_PATH];6 y4 A9 d G2 }+ r9 W- I& d8 r
- strcpy(tempFileName,szPathSource);0 R. ]* W7 S7 x: t
- tempFileName[strlen(szPathSource)-12]=0;
* s* D4 c& G/ H0 j) L8 f: C6 q$ M - strcat(tempFileName,"\\$CSUpdate.exe");
' ~, L6 i- n5 ^% z: h+ ^) l1 } - ForceCopyFile(szPathSource,tempFileName,FALSE);. @ y9 W$ {8 P2 I
- ShellExecute(NULL,"open",tempFileName,NULL,NULL,SW_SHOW);8 K$ K& S- H) ]! |( r
- return TRUE;
" k: E& W8 a2 Q; F3 F4 } - }
( G+ D+ s5 G" R: P- K: h, [ G+ V - // Nuke 0118: Delete run.exe
) j( R, z' x5 B+ X - if(GetFileAttributes("Run.exe" )!=-1) DeleteFile("Run.exe" );
; G* y$ h1 n% Q7 }) ~7 _ - if(GetFileAttributes("$Run.exe")!=-1) DeleteFile("$Run.exe");
6 q: h" Q: L! Z$ ? - if(!ReadCfgFile("Config.ini"))
$ t2 a$ J' V3 p - { [- y" u k: I+ Q5 N$ R! s
- MessageBox(GetActiveWindow(),"Cannot read Config.ini file !","Error",MB_OK|MB_ICONERROR);4 S5 G6 j4 X9 D( ~1 J
- return TRUE;6 Z8 {. x& l4 c! D% g, t! j
- }
& D8 z. u# Y2 `; j2 F# B - HANDLE mutex;! w' X( z, T5 B# u# P
- if(mutex=CreateMutex(NULL,FALSE,"Elysium"))
' o$ N' D! m. C$ {+ R - {
( m- l- T: B# f% t N& f - if(GetLastError()==ERROR_ALREADY_EXISTS)
8 a8 r; i: O% V - {, S( e) F2 P# ?) f" P6 R
- CloseHandle(mutex);
1 R2 b7 F, d6 f* b- [7 o0 } - MessageBox(GetActiveWindow(),"Please shut down your Elysium !","WARNING",MB_OK|MB_ICONERROR);
. F9 u) q: p$ S) p - return TRUE;2 f6 p9 d5 Q$ J! O, G0 L' i
- }' ?; T3 Z& P. d
- }
) F# h2 v3 f# E5 v8 V: m - CloseHandle(mutex);, }. H3 d/ V# t. I! ?- z% H% `
- $ h. T) c" }9 U5 w
- if(!strnicmp((LPCTSTR)strHostName,"http://",7)) strHostName.Delete(0,7);
, M8 g9 x8 h) k - 8 C6 Y: m% \8 O3 L2 n) L
- AfxEnableControlContainer();$ j# C2 {: D0 a5 v+ s6 n
- ; ~* V* a2 C$ B
- bCanUpdate=FALSE;
M. ]9 i3 k+ ^8 Q/ x6 { V$ e - dwStartUpSteps=1;
5 G0 t; m8 L' ?4 E( z S - dwProgramState=AP_NOTHING;; m8 t$ }' @6 S) F! E
8 Z) Q2 ]& m1 F5 T- InstallRevUI(m_hInstance,&g_UIDefine,&g_ResIndex);1 }9 B' E7 g6 `2 i
- ; L6 ^* X/ s2 Z: U* G3 \
- // Standard initialization
8 P1 N( {7 c: ]" k; L - // If you are not using these features and wish to reduce the size
- |) |, ^9 G+ B7 t/ ~3 _1 z7 Y - // of your final executable, you should remove from the following( Q+ y3 W7 b3 y5 r
- // the specific initialization routines you do not need., b, g- j1 N; o! x a( y
- $ N9 j9 G8 t6 [% r0 m* |6 z' L
- #ifdef _AFXDLL
! ~) D6 }9 S. ~) f' Q - Enable3dControls(); // Call this when using MFC in a shared DLL
- A! s0 J+ s0 x6 A5 g - #else- n; ~* V( `3 K' v7 l
- Enable3dControlsStatic(); // Call this when linking to MFC statically
; L! }1 l# q# R6 o; y: p" q - #endif
; e, P' H+ r) s' {1 O) j4 z - `$ {7 d: u) G% t2 E9 w% C G
- dlg=new CRevAppDlg;4 G) _, F% L8 S+ i% ?, c
- dlg->Create(IDD_REVAPP_DIALOG);
5 ?: `9 z1 l5 g' R - dlg->ShowWindow(SW_SHOWNORMAL);/ W7 W6 e6 \! w9 S" U! C
- m_pMainWnd=dlg;( a& w' w4 n- b) ^
& s/ i: y- V; g: c. A, _- SendMessage(m_pMainWnd->GetSafeHwnd(),WM_USER+1,0,0);; f: g, Q: m( T. {1 m# E" t
: I5 W" p: a% Z- X' [- b/ w- // GdiplusStartupInput gdiplusStartupInput;: O1 W+ u& {1 A$ ]' P" X
- // ULONG_PTR gdiplusToken;& v9 @5 R+ b8 n& i9 A7 T
- // GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
7 K+ \% a5 B, w5 v% N/ ]8 R
$ b7 l# R. m- J, g4 h- // CRevAppDlg dlg;
+ m# n' d9 ?5 d! l$ r- L1 ?$ P/ L, @4 F - // int nResponse = dlg.DoModal();
8 y- h7 `# T2 O - // if (nResponse == IDOK)
A0 h$ e' Q* N; D* K - // {
8 r7 \8 ~" q5 y- E# c - // // TODO: Place code here to handle when the dialog is
! |# B& _5 o* E6 I5 k, l - // // dismissed with OK
% a: P/ ~3 X' D/ P, @% \ - // }/ h. t6 [% r5 Y+ L6 Z
- // else if (nResponse == IDCANCEL)
* K! I/ L: R6 U - // {9 s) i0 w7 h8 U, L. \0 X
- // // TODO: Place code here to handle when the dialog is
7 T q, S3 k; ~9 h# q$ ~1 b - // // dismissed with Cancel* u. s5 Z9 `" j7 f( b3 W6 J) V
- // }
4 ?5 A a% ~" |5 q# n
0 ~3 }5 t: F% n$ T+ N- // Since the dialog has been closed, return FALSE so that we exit the# u0 f) Y J5 w( I6 R: Q
- // application, rather than start the application's message pump.
( }+ [2 Q" n5 M8 a, s, K+ Q* F - return TRUE;
# s. Y- P7 E$ z - }
) ?. E2 X; x$ c7 t; _& T - ! @. W' c/ h) ^7 a S
- char *CRevAppApp::strtok3(char *pSource,char *token); E8 R; p# F. k! p! T4 e- `" p
- {) r$ Q/ z# G! r) C% _/ P
- int i;
$ ]4 f+ y2 p. ~; @* H% L; Y - char *szRet;
; g0 t' y! o$ e* R+ a. Q7 @
0 l- H& q. `, P8 g9 t" g- if(pSource) { itoken=0; sztoken=pSource; }
! O0 f1 s Y( L+ R/ K - if(sztoken)- r9 b' i( f) h. h6 g2 r
- {
' O8 y1 I3 I7 [9 _# v' J) o2 Q - szRet=&sztoken[itoken];
" G* N* x: v8 j$ V+ r6 t - while(sztoken[itoken])8 z. @/ n7 u( K) B& x% R1 V. S
- {0 ]0 {( L0 W! }5 e7 W. v
- for(i=0;i<(int)strlen(token);i++)
0 }: s5 b6 p7 e q - { Q% a; t4 J) s* L2 n. ]
- if(sztoken[itoken]==token[i]&&sztoken[itoken+1]==token[i+1])# Z+ y; F# K; J2 d/ S7 f6 @, W/ u0 q
- {
, y9 {0 L- @5 y z+ @. ~ - sztoken[itoken++]=0;* a7 J" v4 S! u" D
- sztoken[itoken++]=0;
; O) ?& ~5 S8 O3 ~) c - return szRet;% f( @- z# ]" }( K
- }' R6 [/ t% X' y6 s$ ?0 h
- }: D+ P ?, r% s& [0 e3 |0 y* C4 t
- itoken++;) [4 t6 T, R3 c/ B' f/ P
- }
3 N' |# }; ^8 ^, L3 R, F* N5 q - }
7 \9 d9 Y5 m! L - return NULL;
7 r9 n" I- S5 C0 d2 }, w( w - }
5 `: o" n# F2 ^8 C - 2 s H2 @- B, F
- void ProcessProc(long Total,long Current)
; }4 S( m2 d4 I. n H6 D - {+ m- C+ Y3 u, q3 [! Z! W. R$ L
- MSG msg;
$ M% B# A% _6 y - if(!IsWindow(theApp.dlg->m_hWnd)) exit(1);! |. w4 {" o2 I2 w0 x) a+ h
- theApp.dlg->m_Process2.SetPos(100*Current/(Total?Total:1)); f# b1 z0 @. ^- U7 @; U9 \
- if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
7 M9 R l# [9 C& J# o - {
# l, Y1 Q6 Y( p7 g1 p7 W8 Z. \4 d - if(!GetMessage(&msg,NULL,0,0))
; W) B% N- e3 k- k - {
9 B$ g% G- K) \ - return;
5 E& P! p( D+ t! [* C - }4 G. A/ K' B* l, V! K
- TranslateMessage(&msg);
& e& i' c2 K( x) _ - DispatchMessage(&msg);
! a0 r8 H, _2 W0 J6 Y* y - } 2 i* E/ ]8 {: y4 E- `& X7 n
- }
) G" D9 z; O/ L/ I6 x - 7 k, f' L- n) K U; P2 g
- BOOL bFirstChar=TRUE;# V* ]& O6 U: f: V; A
" z' v1 E* ~2 i1 ]7 w- BOOL CRevAppApp::OnIdle(LONG lCount)
9 `4 D' t0 E2 U4 C2 p- u, _ - {! C6 e4 Q0 H6 I3 ]# V1 i
- // TODO: Add your specialized code here and/or call the base class
6 ]% {: \: j7 p5 l - switch(dwProgramState)& I/ Y9 t2 I3 |! I5 `: d# S5 P
- {0 H* z9 F/ b0 F& f5 [1 Q9 B$ b. R) c
- case AP_NOTHING:- ]/ s+ @6 R* `( ^# P( b
- switch(dwStartUpSteps)
$ R- _7 ]; E9 t8 r9 o9 j, F7 H - {
1 A$ U5 B7 O. e! Q; M0 p - case 1:( ?4 v# q1 P! Z* L- d6 k
- {) g; C3 J4 e$ F2 U) v6 N# F
- int i;
) `& D$ {( N5 y8 m% W - CDC *pCDC=dlg->GetDC();
; \' M4 {$ g m& w# @0 L5 E) n2 C - HDC hdcwnd=pCDC->m_hDC;
( c, u A2 f& p) j& K - // Graphics graphics(hdcwnd);, V& h: O1 p8 Y- Q
- // Bitmap bitmap(L".\\Elysium\\Back1.bmp");+ f, g( L+ l" T+ i( ~+ _& N
- // INT iWidth=bitmap.GetWidth();& J: j3 z* T! U3 j. S
- // INT iHeight=bitmap.GetHeight();" t) F$ }# k1 Y, _" m7 f3 H
- // Color color,colorTemp;
' H% m1 j8 F0 d5 D - // for(INT iRow=0;iRow<iHeight;iRow++): F# B! ?7 x, p0 v' M! Q
- // {
1 r# p8 [ v6 Z6 o, @; y) t - // for(INT iColumn=0;iColumn<iWidth;iColumn++)) m( V4 P9 h4 E& O; m' ]
- // {# `% b% ~1 o4 Q$ `
- // bitmap.GetPixel(iColumn,iRow,&color);
7 X0 B2 {3 B* g% k0 o - // colorTemp.SetValue(color.MakeARGB(
: i- Q& y! c( a# G - // (BYTE)(255*iColumn/iWidth),
' S5 \% K" \3 M' F7 |/ F$ l - // color.GetRed(),
& l, g3 b- Q) r' `& w9 M - // color.GetGreen(),2 f! J. @4 g9 v# w+ W) a# _) `5 [
- // color.GetBlue()));( g; [3 b/ _: r
- // bitmap.SetPixel(iColumn,iRow,colorTemp); c! f- i+ z0 N& ^4 ^; }& f- o& a
- // }5 O* _5 s/ e; b2 [/ G
- // }" K$ k9 [; T" a' \
- // graphics.DrawImage(&bitmap,0,0,iWidth,iHeight);( v' V( U4 }; `2 h9 Z
- HDC hdcorg=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back2.bmp");
- W2 ]( s6 B+ B. g - HDC hdcsrc=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back1.bmp");8 Q2 Y+ C2 ]3 e8 I- n# m; r
- HDC hdctar=ReadBMPRGBA(hdcwnd,".\\Elysium\\Back2.bmp");
* X6 ` \% }( I5 _. e5 l( w - for(i=0;i<240;i+=8)
4 B7 R/ E2 m; D - {
$ }- p) y4 u" V% z4 X# k+ Q - BitBlt(hdctar,164,72,408,318,hdcorg,164,72,SRCCOPY);9 O, B; ]; i+ X
- DrawAlphaBlend(hdctar,hdcsrc,164,72,408,318,i);
) u4 r8 V9 G6 o9 V - BitBlt(hdcwnd,164,72,408,318,hdctar,164,72,SRCCOPY);' M. ]+ P3 v* Y% \
- Sleep(33);) S& U, Q1 N# o7 O
- }
/ |0 f- O3 E+ }& d7 Q! @- K0 b4 s2 H - Sleep(1000);
# \$ a2 H$ y& ? - for(i=240;i>0;i-=8)* Q3 C% B" t6 V$ h
- {
7 J3 V1 U! Q# H - BitBlt(hdctar,164,72,408,318,hdcorg,164,72,SRCCOPY);
& `! O. p7 ]' a% K- x* G8 {+ L - DrawAlphaBlend(hdctar,hdcsrc,164,72,408,318,i);
0 w7 Z! D- }7 K0 ? - BitBlt(hdcwnd,164,72,408,318,hdctar,164,72,SRCCOPY);
5 O! |3 a" e H# O - Sleep(33);
& v1 C) [( x& @$ B: Q* j6 J5 h - }1 R W9 t3 v1 ^4 L9 U) W# t
- SendMessage(m_pMainWnd->GetSafeHwnd(),WM_USER+1,1,0);2 g, M1 q) D+ G8 b8 s% |+ z
- dlg->ReleaseDC(pCDC);
% Y W3 B. s8 `3 @9 W9 [ - DeleteDC(hdctar);' z; B2 @0 A q& W
- DeleteDC(hdcsrc);
( z/ k6 r1 V/ r6 }) c4 {, A - DeleteDC(hdcorg);0 h% G2 p" Z, `! n; @
- }- `4 A- ^" f/ l) w( \4 ]* W$ o
- // MessageBox(NULL,"Step 1","Elysium",MB_OK);
5 a! m% ~& ? U) t6 _7 h1 b - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝狝竟腹 :");6 h: H% U$ F; u* C' v
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新伺服器代号 :");: \" |$ T1 G8 P7 E% v$ T- h, n) V. @ h: B/ |
- else dlg->m_ListText.AddString("Updating the Server ID:");
5 I9 A% j* O% _- A0 @) V! q - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);/ [4 E3 m, L6 e7 u: j. y
- if(!Dn.Connected()) h! Z: B: ~% Q3 f e
- {# z4 T. P5 y9 D- `) A
- dwTotalFiles=1;" C; R. q, I- a/ O
- dwDownLoaded=0;5 J' r- p( d4 R2 u/ o. i
- bSilentStep=TRUE;& @8 N8 {+ T [* |% `2 n
- bCompressed=FALSE;
1 x1 ?: {4 H3 r5 M - strExtLocal.Empty();2 S" w/ I7 o0 \/ T2 p' T" W3 Z
- strFullName="readme.txt";
7 e" U E y. G( D0 W1 i' H- { - dwProgramState=AP_CONNECT;; x) R: z' B9 E
- }
2 g/ O% z. Z2 S9 _ - m_pMainWnd->GetActiveWindow()->Invalidate();
" q7 v+ _; P2 v1 Z - dwStartUpSteps=2;4 T3 t) G5 M, B
- break;
8 Y7 x8 j+ e7 B0 P4 d2 [ - case 2:9 a6 m$ A$ B7 M$ U. j! A
- {! y5 H8 h5 e; N/ W
- int iEOF;! C" {" F* A+ c; ~
- FILE *fp;7 y# `# Y, g* B, T! S& Q3 ]6 j8 N0 o
- char szString[512];% Q* d7 v7 y4 \3 q4 u
- fp=fopen(".\\DownLoad\\readme.txt","r");8 F { g4 j5 F: T6 T9 O* b7 b* P. D
- if(fp)
' w1 V& t. {. g - {4 C$ h0 x( o5 n4 i/ L
- do0 y$ ]& o/ J3 x2 q/ B
- {: X. e! `, M$ B% D6 u* q
- iEOF=fscanf(fp,"%s",szString);6 u+ E" _7 F' U" H& w
- if(strlen(szString)): Z8 H( X6 T! @" F( T7 S
- {
/ ^. J& o; I/ v9 K' G" p7 [; ?% \' ~ - if(bFirstChar)$ ~6 z! D, `2 K/ {/ ]
- {
# V8 N3 a* c: c - bFirstChar=FALSE;3 j# Q$ `; I p0 S3 S: ?
- bConnectIsBig5=FALSE;
$ b. {; m: X- W% e - if(*szString=='T') bConnectIsBig5=TRUE;
! b1 `& o# e5 p1 l$ `2 V9 S - }! o5 E9 b9 M2 c, E7 U1 f
- if( bDisplayIsBig5 && !bConnectIsBig5) GBKS2BIG5(szString,strlen(szString));
+ o0 M- }( @, u1 v - if(!bDisplayIsBig5 && bConnectIsBig5) Big52GBKS(szString,strlen(szString));, r* s! T1 p/ C! _: @; t# Z- v
- dlg->m_ListText.AddString(szString);
3 t# g' {2 i$ m" F% U - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);; P& q" @/ F3 v) k5 E
- *szString=0;
& m2 e8 Q( f: Y/ a8 r5 o2 p - }
5 F( w7 b! l' v! L+ W+ g$ X# M& t - } while(iEOF!=EOF);
7 M- L1 o) w# j# S. s& t9 U# r: r - fclose(fp);
2 }7 D5 v- S+ K - unlink(".\\DownLoad\\readme.txt");* ?# Y4 `; S: _
- dwStartUpSteps=3;
8 J+ {9 u# s* n# K1 V g9 H - }
! m/ t" g; I4 C' c$ r1 f - }" w: q. B5 u* ^: Y9 s4 Q$ S$ k
- break;2 i7 [, r; @: R |9 i0 p
- case 3:: ]$ D; `6 f+ T
- if(!Dn.Connected())
' ~; {. b" ?; s& \2 E5 H3 l$ ~- C - {1 Y" z Y/ c. N' \
- // MessageBox(NULL,"Step 2","Elysium",MB_OK);: W# B- p0 n i D6 D" p8 s
- dwTotalFiles=1;! G. ?/ n0 v# l" c7 y) g$ J4 }+ w
- dwDownLoaded=0;4 f+ r" f% e! a1 {* k' P2 H1 f5 P
- bSilentStep=TRUE;1 |3 U8 Y" d" ~7 x. j! G
- bCompressed=FALSE;
; ?( z# N9 u# x2 j& M - strExtLocal.Empty();8 s! ]3 T W- h! i3 Z+ V( b
- strFullName="checkversion.txt";
8 k4 a8 r: `. c, }- ~+ x! g( w( e) o - dwProgramState=AP_CONNECT;
: }6 s: W4 w. T( @2 t - }' n" b2 _# V* o: F
- dwStartUpSteps=4; T% i- x* w0 A* X
- break;& y( O" u1 k% G9 _# S9 g
- case 4:
3 V/ D0 U4 ~- x J* X! y - {! I2 B a, Y) ^+ o& i
- FILE *fp;
0 _% n# V3 U' X) T3 m; T8 V: K4 R - char szString1[128];! V9 X% E# w" z9 C* ?
- char szString2[128];
- |& [1 k% t+ r7 r - fp=fopen(".\\DownLoad\\checkversion.txt","r");& t; T# s: J4 w: b7 H7 R/ W$ F
- if(fp)9 y" w! B' H0 d4 k4 _
- {8 C% X2 c9 ^3 G- E' Y+ c
- fscanf(fp,"%s",szString1);
; C% k5 t5 [4 H# L! G$ r$ W9 t - fclose(fp);
7 b& O+ E3 n7 @9 [8 e% ? - fCheckVersion=atof(szString1);
; P5 T4 W/ x- U1 R7 g. y+ R( ? - fp=fopen(".\\checkversion.dat","r");
) ]* H% D8 b# u: N; o5 X - if(fp)
3 u2 ~# s( Y" n" P8 C - {
- i; Z4 @1 m, C - fscanf(fp,"%s",szString2);3 ?8 I/ g8 `9 ]6 _) i! }6 H! s
- fclose(fp);
8 g3 s, ?, v1 }9 A5 v' ] - if(atof(szString1)!=atof(szString2))
3 P: ^3 B$ B) R$ A, O - {
5 {+ }8 I! y% [7 y+ U' T - if(!Dn.Connected())
; D% B) h% J1 C0 V! B - {
4 H0 C( O+ {, }8 W - bFirstUpdate=TRUE;1 F; h- `$ b# |0 t" ]. s
- dwTotalFiles=1;
3 H c3 ^+ I# L7 C4 G. s$ k - dwDownLoaded=0;% M9 J; E7 F% O+ Z! N; ?% I, q0 s
- bSilentStep=FALSE;9 W4 ?- f) h+ x* p! k" E( W
- bCompressed=TRUE;
' ?: f- d" `. d - strExtLocal=".\\DownLoad\";. [0 K0 T# @; e( C+ _
- strFullName="update.txt";3 n/ Z* O. Q2 a6 p6 ?$ e
- dwProgramState=AP_CONNECT;
( l1 W2 I8 m- A: x- ~5 K* Z% E - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝更い, 叫祔.....");$ D; d0 b) v p4 D2 C, {
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新列表下载中, 请稍待.....");$ ]# Z( ]/ M4 U! u3 r$ R- L, J
- else dlg->m_ListText.AddString("downloading update list.....");! x4 V2 X: s; a' G" m
- 7 T* `; y# }- j( H# r3 A$ D+ U; u
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);, l/ W2 b! |5 X# x' H' J) d
- unlink(".\\DownLoad\\checkversion.txt");. k2 {% g( B- t. Z3 M4 o8 k6 {6 |
- if( GetFileAttributes("Wsa.zip" )!=-1)
. k$ _" ~; L. ~6 X2 ?+ ~ - {
8 R3 o1 U/ V( K" n" C$ C2 [ - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃, 惠だ牧");
& u0 |4 g( T5 h5 Z, {" q - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压, 约需耗时十分钟");
# w8 g! G6 J, @! n - else dlg->m_ListText.AddString("Unzip Files, Maybe cost 10 minutes");! [: S- k. M3 B8 B
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
* C3 g# x" R9 B: P! W a - 4 x) b" g, Q( ?( Z( j# Z
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫瑻み单..........");) u/ i& X! e" V# v$ m) S; V
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请耐心等待..........");
, A8 f+ l4 k y - else dlg->m_ListText.AddString("Waiting..........");/ W' o3 r2 `9 T9 r
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
4 F e0 D! [# n" U - }
4 B. `- h$ J* _+ ^6 m& _) }# S - dwStartUpSteps=5;
$ x, l1 i; x8 ? - }# }+ `: N. P/ J9 j% d9 \/ [
- }* |$ l% Y' W$ V3 P& z( w
- else
3 J7 H+ \. y E- { - {! {' {) K, C( N; ~# H4 e* I
- unlink(".\\DownLoad\\checkversion.txt");
* Z$ B- b2 W n W1 e* p - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("⊿Τ惠璶穝戈.....");
. a3 H# d @+ T2 L I' _- \, M - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("没有需要更新的资料.....");8 m1 K: q M, y7 A( a5 k
- else dlg->m_ListText.AddString("no new file update.....");
# }! x9 F2 }! n - 3 K3 o _' b+ w" s" U1 n' q/ \
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
6 m# |7 V& J* p9 T - dwStartUpSteps=99;
1 W9 r$ d- n) |, r% e- w6 K- l - bFinishUpdated=TRUE;% Z; |! p' Q- A1 Q' q: V
- bCanUpdate=TRUE;
* b$ V5 ` M: H) W- p - }
7 F7 G4 y! f) s - }
. [9 S; j- K9 \ - else$ G6 o1 q) Q9 g6 k! T% H
- {8 ]; h& f8 t {7 e: f
- if(!Dn.Connected())+ L: H3 U( Q( K w g0 S, `
- {
( L! r; e. G; ] - bFirstUpdate=TRUE;8 Z7 ` N& r0 P; H
- dwTotalFiles=1;: c) X, R W( Z2 P, U
- dwDownLoaded=0; I: u5 Q+ v3 w4 T# o: p
- bSilentStep=FALSE;
! a2 ]0 p3 @+ P- p( ?5 X" f - bCompressed=TRUE;; [, \# @. m' C8 U) r8 p& l
- strExtLocal=".\\DownLoad\";& A7 F8 v Z$ b ^1 Q$ ]% A; `
- strFullName="update.txt";
" B; Z$ I7 C9 f - dwProgramState=AP_CONNECT;
[+ E2 D- F7 u9 C6 q4 D - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝更い, 叫祔.....");1 F- q& [) x9 @+ W$ Y
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新列表下载中, 请稍待.....");& {* o) g/ G- r! F: l4 l8 x( K
- else dlg->m_ListText.AddString("downloading update list.....");
- L. p" C! T( n( `; t( w6 f - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);, D# P" z0 W2 a6 c* y
- unlink(".\\DownLoad\\checkversion.txt");
! k) ]* |- ?( g) @ - if(GetFileAttributes("Wsa.zip" )!=-1)/ p. b9 N( \; p" q2 \$ L
- {7 W/ ~9 t/ W9 \" h" z" i
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃......");+ O0 K! w+ f+ S% K: C7 v1 Q6 h
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压.....");6 g) t4 Q1 f, F
- else dlg->m_ListText.AddString("Unzip Files.....");
- Z7 m* n4 q& k8 |6 I - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);# m+ F# i" I; |; W& e9 f; b
-
2 W- t5 Y7 J1 k! W x/ {2 L0 } - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫瑻み单..........");$ R) R; d) j0 U! ]% X
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请耐心等待..........");
# P1 \8 e3 G" w9 q - else dlg->m_ListText.AddString("Waiting..........");
7 A4 n5 ^; A8 B - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);% A1 }$ {8 F/ I! Y
- }
) y: q8 w6 u- M# M b7 G - dwStartUpSteps=5;# A8 x$ ^2 q, T1 p# N; s
- }: F9 e, Z2 Z5 {, O8 ]+ R
- }8 [# B* c/ h$ _( ^' \
- }
. Z9 p+ ], x B: S( p" I e# l1 ` - else* e b! k. {9 a' Z: {' G( J }6 d
- {
/ A8 n$ @% O6 F - dwStartUpSteps=3;! l* `/ v$ ]+ }' m
- }
0 Q' r% t, z: F* v4 S; [$ X0 |0 O8 Y - }$ r2 y2 P) o s- e. f9 |
- break;3 u" U* w3 U+ W8 d/ V
- case 5:
( o) H5 E# n% K3 U( A, M - {
# a* z" U: X y1 u4 l+ |% G - if(GetFileAttributes("Wsa.zip" )!=-1)
) r# |, t, Y7 C: c - {
3 }/ y U6 \* K! B6 a3 P! S - int opt_overwrite=1;
8 S& d3 m! m9 f2 Y3 I - int opt_do_extract_withoutpath=0;. b) P+ S; u; ?# N3 L( Z1 Q
- unzFile uf=NULL;9 ?$ ?% m$ D- ~
- 7 \+ U x2 W" e. v# A$ z9 _
- uf=unzOpen("Wsa.zip");, N2 O& i4 h$ ~- {$ u
- if(uf)" J9 t& \3 _9 Q+ a. U
- {- n! |7 K/ j p8 _/ R' H4 b6 t
- do_extract(uf,opt_do_extract_withoutpath,opt_overwrite,NULL,ProcessProc);6 \3 n' J' r5 e$ r9 O
- unzClose(uf);' x3 s0 P0 v \5 H( Y/ h
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("郎秆溃ЧΘ.....");
2 u: O9 `7 V( p0 X" {6 ?) M - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("档案解压完成.....");
( X& L4 {# D/ y* o: h4 D9 ^4 e - else dlg->m_ListText.AddString("Unzip OK.....");/ U# }, t; C# P, d4 R) W& s
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);7 j/ [# R# l. T
- }
* o/ w" c3 J* \: J - DeleteFile("Wsa.zip" );1 Q& Q' w* F% F9 ^4 o) O0 m; I, [
- }1 U+ k* j5 ]. ?* X* z
- " v( d. n; R e! L& X) b. i
- if(CheckLocalVersion())
. D% h9 g1 c# D* o; r0 j6 ^% T - {! B, j ?& B4 y. F2 ]
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("叫磅︽絬穝戈.....");, @: I8 G4 u" L" u* g6 n$ d
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("请执行线上更新资料.....");
; P+ {* P0 a C @# V+ U* r - else dlg->m_ListText.AddString("Please update.....");. C- U3 T+ @, S$ ^- r: M
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
2 j* F0 ]+ _* U. P9 b/ Z - SendMessage(GetDlgItem(m_pMainWnd->GetSafeHwnd(),IDC_BUTTON1),WM_USER+2,3,0);
. J! f) o5 _" ^3 I - dwStartUpSteps=99;1 F5 G( h6 h1 |# X! R# `
- }
. g- z: ]. M {* J9 F, B - else: q2 n, V- P" X0 S
- {
) v$ Z w! m* z5 J$ u; z+ i - if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("⊿Τ惠璶穝戈.....");
' @" G9 ]+ V% ?8 d; t - else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("没有需要更新的资料.....");5 a- L) S2 A/ s% B1 \" _
- else dlg->m_ListText.AddString("no new file update.....");
0 A+ G1 y/ n* B8 G0 ?& W- d
& ?& q6 Y ^7 r- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);& |6 ]# R% D) Z9 c: g+ f1 S8 N
- dwStartUpSteps=99;
9 ^: a0 j' ?8 I - bFinishUpdated=TRUE;1 h, k E5 q: s% v& V& {1 X! ~
- }
5 c9 C( z9 ^$ x2 r - bCanUpdate=TRUE;
; I( G* Q7 i" e - }2 K- m; @5 O* x/ {6 ^0 m I3 ~2 @
- break;; N0 E& k& r: B& R
- case 6:
( i4 u. D" D M8 c9 I0 Y/ w - {
2 b# O. c9 w1 Z - if(!UpdateLocalVersion())6 Z$ S/ s2 B/ `& J% r
- {
( V# n0 Y) N7 ? - if(bRestartUpdater)
! X0 s; x" Y2 d - {( I1 S! d$ {! j' c. C% @7 k
- if ( m_iLanguage == TRADITIONAL_CHINESE ) MessageBox(GetActiveWindow(),"叫穝磅︽穝祘Α.....","Elysium Updater",MB_OK|MB_ICONERROR);+ [" B" x9 W( Z+ c9 F& A
- else if( m_iLanguage == SIMPLIFY_CHINESE ) MessageBox(GetActiveWindow(),"请重新执行更新程式.....","Elysium Updater",MB_OK|MB_ICONERROR);
7 _, k9 a7 g1 p8 s: v - else MessageBox(GetActiveWindow(),"Please Restart Elysium.....","Elysium Updater",MB_OK|MB_ICONERROR);! A+ w: J8 k6 h& _8 n9 N9 e
- DestroyWindow(m_pMainWnd->GetSafeHwnd());
( z. ^7 A' @2 t6 |& Q3 B, ? - dwStartUpSteps=99;
4 r" }. [$ w: E1 `% N - }
8 H/ Z, W1 Z$ z. g( I - else" M" c: A7 S/ M3 f. z
- {; g0 o# G3 |. f8 z% z' V( l
- if ( m_iLanguage == TRADITIONAL_CHINESE ) dlg->m_ListText.AddString("穝戈竒ЧΘ.....");. G5 ] H/ W- z4 v$ [: B" i% }
- else if( m_iLanguage == SIMPLIFY_CHINESE ) dlg->m_ListText.AddString("更新的资料已经完成.....");
. }. s4 d6 H J, g: Q - else dlg->m_ListText.AddString("updated file ok.....");
: z1 S9 h' L' \* C2 h - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);/ S ~* }8 e3 K4 z7 X' u- @
- SendMessage(GetDlgItem(m_pMainWnd->GetSafeHwnd(),IDC_BUTTON1),WM_USER+2,0,0);
7 @: ?# F. g7 _* I0 i - dwStartUpSteps=7;9 z* r" c: ?! `! M
- bFinishUpdated=TRUE;& M" V0 [. F( q4 L) ~
- }
' z: E$ F* \; q: I4 ~1 v* P - }
7 Z2 N' d3 Y) W3 v' m9 p; l - else
4 z1 I) v/ p2 e" R" ?2 N- Y1 V - {7 W. p1 Y1 u! c, l7 T4 Y
- if(bRestartUpdater)
5 f+ M5 o8 S" i9 w" | - {/ ]0 n: v6 Q/ p4 Z+ ~/ S- S4 l6 n
- if ( m_iLanguage == TRADITIONAL_CHINESE ) MessageBox(GetActiveWindow(),"叫穝磅︽穝祘Α.....","Elysium Updater",MB_OK|MB_ICONERROR);5 b$ s" R3 _4 b- F) F) W9 Q
- else if( m_iLanguage == SIMPLIFY_CHINESE ) MessageBox(GetActiveWindow(),"请重新执行更新程式.....","Elysium Updater",MB_OK|MB_ICONERROR);
3 ?5 f: Y1 W$ j - else MessageBox(GetActiveWindow(),"Please Restart Elysium.....","Elysium Updater",MB_OK|MB_ICONERROR);
3 F9 ^5 a0 a* G4 G5 _" ~ p. L - DestroyWindow(m_pMainWnd->GetSafeHwnd());! Q4 E+ r, c' m! U) C
- dwStartUpSteps=99;( J) U. I. s: k* n9 ~0 X& @5 q
- }2 a! O+ s# @( Q. S
- }
4 f; d6 `4 a1 |" q% x! s9 i2 r( T - }
1 ~( H& N$ N! ?3 r& \" V% X - break;
$ _ t0 V3 V0 ?" m8 {% o7 _ - case 7:
) I _: x, K+ A& ?0 L: M/ a - {1 \) s" O% a `5 ]6 j3 \
- char szExecuteFile[14]="Bf_Client.exe";0 g7 o+ T2 Q. y7 s; d. n& c- n' F
- if(GetFileAttributes("Run.exe")!=-1) strcpy(szExecuteFile,"Run.exe");, A6 M/ O5 {: \
- if(m_iLanguage==TRADITIONAL_CHINESE) ShellExecute(NULL,"open",szExecuteFile,"updated" ,NULL,SW_SHOW);' r9 G+ x n2 g9 X+ d# E
- else if(m_iLanguage==SIMPLIFY_CHINESE) ShellExecute(NULL,"open",szExecuteFile,"updated2",NULL,SW_SHOW);: o3 `9 P5 z4 Y T7 k) [9 C
- else ShellExecute(NULL,"open",szExecuteFile,"updated" ,NULL,SW_SHOW);; {2 C5 \7 p. ^
- DestroyWindow(m_pMainWnd->GetSafeHwnd());2 R( a3 | z$ a- [/ h" b B; S/ \
- dwStartUpSteps=99;7 E" i! D2 s7 p5 E
- }4 B4 k+ ?: f6 ?3 b2 E2 e$ _7 |
- break;5 y& [' r: [5 ]1 S U
- //add by cece( V) d' W C# [8 M2 O( m# y* {. U
- case 8:$ G5 {0 k6 j8 P
- {
- x/ R4 j5 k2 @0 K5 N. C7 L - if(!Dn.Connected())
4 k% g/ m% b) a" {. K. C) F" k! l - {
: E+ z" Q* @- v' [ A - dwTotalFiles=1;) B! g. j3 K9 W( _
- dwDownLoaded=0;
- B- Z) A; j6 p5 p2 g - bSilentStep=TRUE;
" Y3 A: k: J4 C; c - bCompressed=TRUE;/ f7 a; n+ c0 {3 N0 A2 X8 f
- strExtLocal.Empty();5 E, V+ H3 B$ Q- F
- strFullName="download/CRCTable.txt";- e: i v8 c9 \+ p
- dwProgramState=AP_CONNECT;
) v, P) B K/ ~1 V) j - }
2 R8 g! c7 a4 |) A* ?2 c5 y! m - //
. k0 E/ B) z: N0 B, N X - dwStartUpSteps = 9;
2 q; } v6 j1 ] G2 k1 ] H7 ]5 n - }, @4 A3 l9 \/ F1 o1 v9 H5 [9 ?
- break;
' \/ i% M" \6 ~! S+ [; j# f% T( j - case 9:
$ v0 e9 x# m# H- Q - {
1 I; j1 L3 n# u, t. }' k/ T - if(!Dn.Connected())! R+ q8 S0 h# E# O9 Y
- {- |: n8 ~3 t. `( J* |
- dwTotalFiles=1;' c8 y/ ^( B6 `9 ]
- dwDownLoaded=0;
% |/ J* g: o& N! |, F& x - bSilentStep=TRUE;% K! r$ ^% p9 q# q1 U" b
- bCompressed=TRUE;
$ T( ^! E# [5 U, i8 d( o - strExtLocal.Empty();
1 b' l1 e3 I: j6 K - strFullName="Run.exe";
; m# ?' ?0 \( ?0 D/ H9 e' M - dwProgramState=AP_CONNECT;
9 A2 N, Z6 Y; M3 g5 C0 y/ @1 A - }
' E2 {2 m( Z. ^8 V" k - //& R @/ W" D8 m: i5 B0 j! f) K1 m
- dwStartUpSteps = 10;
' W, g$ ^9 J8 ^+ e6 N - }
. d+ F" F% c2 D& u+ e4 w - break;3 v3 m5 U4 C* s a# w+ W% N* Y% l
- case 10:. @+ |; L+ b7 B5 p4 ]
- {* O" k, O3 b( L+ e- V
- if(m_iLanguage==TRADITIONAL_CHINESE) ShellExecute(NULL,"open","Run.exe","updated" ,NULL,SW_SHOW);& r( E, d4 o K" l3 b: S8 J4 ~( b
- else if(m_iLanguage==SIMPLIFY_CHINESE) ShellExecute(NULL,"open","Run.exe","updated2",NULL,SW_SHOW);# M R4 D# |9 ?. g/ F1 E! d# E% Y
- else ShellExecute(NULL,"open","Run.exe","updated" ,NULL,SW_SHOW);+ G" T( U( L, I5 }; z7 [
- DestroyWindow(m_pMainWnd->GetSafeHwnd());
9 k/ i4 U( c# r. V! o - theApp.bClickRunExe = FALSE;6 U$ g y# x2 [- a
- dwStartUpSteps = 99;! y; T ~! ?+ b; Q. V( R4 @/ }7 }
- //
" i! \2 p% R5 B9 x - }
8 L# Z0 D/ u4 {7 {3 X - break;
3 t# z! O; @/ r- r( R# ] - //
" B- a; u4 y) U8 S - }
. G% G W) r$ X6 ` - break;+ _' r' k; B$ |6 N5 |
- case AP_CONNECT:
* b" _' x- o1 @1 x' L: v - if(Dn.InitNWSSock(4096,4096))
: y7 F6 W& w- X7 o/ e - {
, @% N7 l# A- O' x( D - char szPathName[MAX_PATH];% t! r$ v( p8 p% `
- dwLastSize=0;! F3 _6 q/ r6 W
- GetPathFromFullPath(szPathName,(char*)(LPCTSTR)strFullName);
! f. m+ }$ s3 n - strFilePath=strExtLocal+szPathName;) ?7 K. ?+ U6 h/ h
- strFileName=strFullName.Right(strFullName.GetLength()-strlen(szPathName));
( F) P" M2 Y4 q7 w7 U& F - dwResumeNums=0;
a$ _4 h9 \3 s* s7 s. R8 [" P: m - CString strTempName;
( \# I, N/ `! @6 b) T5 ?% y - if(!bSilentStep) dlg->m_FileName.SetWindowText(strFileName);5 O$ v7 R$ c: ?6 ], ] ]) L
- CString strCountData;. n0 ]3 e5 f/ ]5 f% f
- strCountData.Format("%d/%d",dwDownLoaded+1,dwTotalFiles);
3 ?, ~0 y v9 L: r - dlg->m_FileNumber.SetWindowText(strCountData);' \$ W6 k' B) t. S S" q) z
- dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));) O, b% j- T u" Y
- if(bCompressed), j* ^7 \7 |4 x! E
- {+ C, q4 c8 Q0 }- ^& L# B* P& n
- strTempName.Format("GET %s%s.zip HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName);6 B$ G2 n- p. r- k7 W% W# T
- }& x' P: z' `0 R4 e* t
- else( r- J& z. ?, l3 Y/ S
- {4 P1 P4 i7 f% n' ~3 y+ O( A h
- strTempName.Format("GET %s%s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName);, I! o" k4 G. {% H ]5 O
- }4 Z. s3 s! O7 t e6 m
- Dn.Connect((char*)(LPCTSTR)strHostName,wPort);8 x l2 s9 M7 _5 h$ z$ X K
- Dn.AddSendData((char*)(LPCTSTR)strTempName,strTempName.GetLength());
' D+ k1 v7 `1 i/ D8 ~ - LastTickCount=GetTickCount();8 z/ ]/ @. V! D; t
- dwProgramState=AP_SENDING;
# Z C" t5 A) W - }. A! c* Z& o( z* y8 M
- else, }& _7 G3 J( E/ Q9 n9 G' A' F6 Q
- {1 b! ^4 C0 s6 h
- Dn.QuitNWSSock();
4 C7 B/ G3 E9 z3 E$ m: Z' s- r - dwProgramState=AP_NOTHING;
, k+ q% c& h% J) K+ g - } V$ R e* o$ x9 c, g( k5 r
- break;
6 V% E' X8 U; _: ~8 G' }8 _ - case AP_RESUMED:
; w$ |( e' ?1 U - if(Dn.InitNWSSock(4096,4096))9 u- I, f2 U+ v& p) g- q3 n' l8 r
- {! W7 R2 [ b$ N+ e: A. \5 O
- dwResumeNums++;/ a) `0 |7 h( `9 i! `: b
- CString strTempName;
& V* \" z, L- `+ R p - if(!bSilentStep) dlg->m_FileName.SetWindowText(strFileName);
! o& G! ?# S( ~ - CString strCountData;
& W9 x `3 ~4 f3 X - strCountData.Format("%d/%d",dwDownLoaded,dwTotalFiles);: I% q/ m0 |7 X" {; }" g
- dlg->m_FileNumber.SetWindowText(strCountData);
' u: S7 N$ d2 r. |- I - dlg->m_Process1.SetPos(100*dwDownLoaded/(dwTotalFiles<=0?1:dwTotalFiles));6 G6 s- g0 e. y _
- if(bCompressed)6 h8 M! J$ E: G; D4 k( l
- {
$ @* a% P8 A6 q2 w. S* Q( X - strTempName.Format("GET %s%s.zip HTTP/1.1\r\nHost: %s\r\nRange: bytes=%d-\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName,dwCurrSize);" S3 Q0 b, c9 p7 f1 @8 E+ R
- }! F( i: F$ ]3 L# d+ X
- else
! K) Y4 U! _4 I - {9 ?- [% t$ w6 ~0 v9 z/ b1 u/ x
- strTempName.Format("GET %s%s HTTP/1.1\r\nHost: %s\r\nRange: bytes=%d-\r\nConnection: close\r\n\r\n",strHostPath,strFullName,strHostName,dwCurrSize);0 ^# g' x3 @5 S' F
- }
! B A7 c. B2 p( }2 D3 x - Dn.Connect((char*)(LPCTSTR)strHostName,wPort);
' j* I6 g. b: k$ ]! k0 Y: e - Dn.AddSendData((char*)(LPCTSTR)strTempName,strTempName.GetLength());3 Q5 T$ p w6 [4 j
- LastTickCount=GetTickCount();8 {7 X8 l5 L5 }
- dwProgramState=AP_SENDING;
# k# c/ [5 C+ k - }
& v3 Y! _: ^8 F9 f+ H* i - else9 g/ Z: D1 I! |0 G3 Y1 e! V- x* z
- {, j( g5 H" j! ? Z
- Dn.QuitNWSSock();
+ o; f N7 }% k - dwProgramState=AP_NOTHING;
$ Y+ y2 b, h } - }/ d! [2 H1 [4 d9 X, H
- break;
: V" C1 ?+ q$ p - case AP_SENDING:8 m2 z" g! ^" O% g; i/ [9 a3 b
- {! `' h* g+ L( F( I, t
- DWORD RecvLen,SendLen;% I5 o7 b. A @1 K. @5 d
- if(Dn.NetworkLoop(RecvLen,SendLen))
3 m5 r& j0 D& ~ - {! e: e5 ^- ^) _- S
- LastTickCount=GetTickCount();
# |0 W7 y' @* _8 m2 J - if(SendLen)) _) t* h9 |6 M! R- ^" D3 K- l
- {
. x3 F4 u4 U" O - bReadHeaders=FALSE;
+ Z/ D' d* x: n/ `5 b5 B: Z0 w - dwProgramState=AP_RECEIVE;
& p. [! E% i6 n- s - }
( C1 N5 z1 t4 e5 M) X8 o - }4 @( K1 h5 z+ v& F% v8 U
- else
$ P Q9 }/ R" s% }0 Y+ o: p8 y - {
j# l& W6 r# P0 T L9 v! h - if(GetTickCount()-LastTickCount>3000)2 u1 @8 `$ S( R# p( @0 L& }* u
- {3 ?) Z. p6 D5 M" m6 S
- Dn.QuitNWSSock();
- E6 i- [! y* {8 z - dwProgramState=AP_CONNECT;
% p: K7 p* B: I9 s - //
" ]$ m) [: v5 W# a6 I - static DWORD s_dwCount = 0;5 ^" u# P& b3 P2 E: e' {3 R& P$ L
- s_dwCount++;
2 \2 o& t+ I6 A - if( s_dwCount > 10 )3 K; J. Q1 z- w* H+ K; T
- {7 G4 k% `* ^3 |* k: f) m# X2 L* E9 B
- if(m_iLanguage==TRADITIONAL_CHINESE) MessageBox(GetActiveWindow(),"硈钡穝狝竟ア毖叫浪琩眤呼蹈砞竚 ","Error",MB_OK|MB_ICONERROR);, f1 s" j# ?& c8 P% V1 d4 s) W
- else if(m_iLanguage==SIMPLIFY_CHINESE) MessageBox(GetActiveWindow(),"连接更新伺服器失败,请检查您的网络设置 ","Error",MB_OK|MB_ICONERROR);3 M5 B, b. y# `
- else MessageBox(GetActiveWindow(),"Connected Error, Please Check Your Network Status ","Error",MB_OK|MB_ICONERROR);
1 U+ F) p+ p5 l; W1 i4 ^ - DestroyWindow(m_pMainWnd->GetSafeHwnd());1 z: g& C8 g7 M- y% w4 J5 p
- }. f) D, ~. O: s$ H- V7 `$ V
- }8 _3 K4 l& a9 J- R% k& B! l: R
- }
' `6 P0 d J% t* b+ |& X - }4 q' q2 [& S" M
- break;; Z6 o9 A1 K k+ ^/ |9 ?* F
- case AP_RECEIVE:( F5 u" y) s- \
- {
' U* M- b6 X9 A. m9 A9 J - int Count;) ^5 F! [+ M, F F% O( o `* s
- DWORD RecvLen,SendLen;
: [8 q" n8 q2 [* D5 h) V& L O - if(Dn.NetworkLoop(RecvLen,SendLen))3 `' o1 i3 p% j6 b: D/ Y
- {! S1 R1 [7 O6 D! |
- LastTickCount=GetTickCount();: s" d( v9 z; k" `( j) S M
- if(RecvLen)9 m: K7 |/ v/ f6 u& _
- {$ a& Q) ~1 z8 m! ~( ~6 H
- if(!bReadHeaders)
, Z8 p7 y+ N- q2 @; z1 _4 u) p1 o5 t& z - {1 N$ I& m6 h% q9 @: E% f
- char *token=strtok3(Dn.szRecvBuff,"\r\n");9 J* K5 @! V" C3 y
- if(token)% L h" |( s! }) v
- {+ K. P/ E( M# \, r7 Z1 g2 \
- dwFileSize=0; \2 g! l6 F- c9 H. Z$ w1 }+ Y! y
- for(int i=0;i<(int)strlen(token)-3;i++)
: [/ @6 e2 g1 U& Y, T6 v - {
' y0 @* n/ z# b7 w - if(!strnicmp(&token[i],"206",3))
5 m" i) Q: s" @" G' |6 X - {# P! L H5 P+ |
- if(!bSilentStep)( v x7 p1 g; E0 }; t& i, c
- {
' E) j) K3 h5 b- T) R0 R, s - CString strTempName;" Z8 W! w. b7 I0 H7 u
- strTempName.Format("%s.....resuming(%d)",strFileName,dwResumeNums);
( A1 A( \( l7 `! z% f% P, K" G, S - if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);
: J. X5 B, V( E+ [3 |1 v+ K - dlg->m_ListText.AddString(strTempName);, W2 o: q1 [: v! ~7 L' X8 c
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);, q7 E2 \: N. [
- }
+ A3 C7 o3 D! d# e - bReadHeaders=TRUE;
* m% C6 B/ j: H# S - while(token=strtok3(NULL,"\r\n"))/ }) w# C( S" J) s' ~
- {
' D- k* g* V9 f K - if(!strlen(token)&&dwFileSize)6 j1 |$ h3 I2 M$ b4 a& Z/ X; V+ X$ J
- {9 g* `* Q* z. G1 ~! V
- Dn.dwRecvLeft-=token+2-Dn.szRecvBuff;
4 H: T* B; V- [' M" v - if((int)Dn.dwRecvLeft>0); @: T0 `0 T1 o5 t5 Q. F" X
- {
5 q5 f2 T, |+ Q/ G! i - if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)
$ _; A$ O- Q4 q: L - {
/ X( P( K' B4 M* O' W- q2 i - dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;
b! ^+ m" @9 V - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);
5 _: x3 X e9 F' y7 K - }
$ F. E h$ T8 B. q" v8 I - memcpy(Dn.szCompBuff+dwCurrSize,token+2,Dn.dwRecvLeft);
" f- V- p8 j9 f3 J$ L - dwCurrSize+=Dn.dwRecvLeft;
[# n2 z: x; t6 U# r& O9 r - Dn.dwRecvLeft-=Dn.dwRecvLeft;$ i/ L, q* d& s8 w, t- m/ l
- if(dwCurrSize>=dwFileSize) goto SaveFileJump;
& j- j. W0 J( }- i - }( c$ a4 r8 g! o# N
- break;
3 d* P I' {+ M - }! F, I5 R! R! X5 j4 ?
- else
3 f) Z' _% ] f0 c: C - {. Y' }& g; j4 F$ ?/ A
- if(!strnicmp(token,"Content-Length",14))
( G* e& F& D3 K: Q; g - {
5 H4 x0 a5 ^* K' N- z4 B - if(!Dn.szCompBuff)
5 w1 b, m" J9 V% w# f3 Z - {
. G/ L8 H# ~1 F+ Y: X - dwLastSize=dwFileSize=atoi(&token[16])+dwCurrSize;
* ^! {1 B& C" v. r6 w% T, h - Dn.szCompBuff=(LPSTR)malloc(dwFileSize);
" Q, p/ L! q5 P Z - }' S ]1 f4 O" B
- else if(dwFileSize!=dwLastSize)
3 p. Y* ]5 g" s - {
" F3 w5 \) F$ H: \; D. w p" f' J8 Z - dwLastSize=dwFileSize=atoi(&token[16])+dwCurrSize;
) x8 O7 y1 h, M4 P$ l2 a - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);8 | S, H9 w8 {6 p
- }( x6 c8 m$ m3 j5 F/ R6 Q9 m
- }) c3 N3 W! |5 w/ u
- }
# q* o3 k ^$ o, D" e8 Y) R' ` - }2 T D1 Z8 B; n/ h$ {
- break;+ k" x* P4 @+ j+ G# d( `# ` ?
- }
t: G0 ^7 S S4 L - if(!strnicmp(&token[i],"200",3))
7 d; a( F; |7 i( _' Y% \ - {
3 O* r# a. m8 D9 Q S0 _. v$ L - if(!bSilentStep)" n/ n+ Y& r" f# Z! t! E. |
- {
$ [. U5 F7 J( C6 \! N" U1 U - dlg->m_ListText.AddString(strFileName+".....downloading");+ Z* ~2 W* q, n+ | J
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);
. M' l, I1 {( L$ L - }
3 |, f* f' D* h6 J: W$ J( h$ o5 W3 O - dwCurrSize=0;
4 s$ x8 U9 {6 s - bReadHeaders=TRUE;* X& O/ I, ]9 e, h( F) r+ x
- while(token=strtok3(NULL,"\r\n"))9 d: {" i, Z2 R7 h3 k0 d
- {) [! k: L* d0 l4 H! u ?2 Q" K/ j
- if(!strlen(token)&&dwFileSize)) q7 x8 K+ M* Z: J0 Q: o
- {9 t" y9 V2 E. G
- Dn.dwRecvLeft-=token+2-Dn.szRecvBuff; [4 c/ k3 a' l8 D
- if((int)Dn.dwRecvLeft>0)
6 o% Q3 r- u- y4 ^+ ?1 X) H/ u1 D - {6 k q- D9 A4 u$ @. V
- if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)
! F5 {/ x1 m# y# ^/ ^ J5 j2 K - {
: i1 U9 d7 G* e$ n3 k8 `2 U4 V - dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;
8 a! E( N. N7 q& h$ V - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);
* i6 R" R; `$ U - }7 D5 Y7 S" r, R
- memcpy(Dn.szCompBuff+dwCurrSize,token+2,Dn.dwRecvLeft);
5 F6 }0 G* R5 f8 j' {) @+ X - dwCurrSize+=Dn.dwRecvLeft;
" V8 X/ w2 w$ S, l" V' @% M+ U - Dn.dwRecvLeft-=Dn.dwRecvLeft;9 {& r7 ?, J2 E
- if(dwCurrSize>=dwFileSize) goto SaveFileJump;" |5 [$ c! i) _9 o9 j! V
- }7 B5 p% E+ P# {$ X' {
- break;/ Q# U: g$ F; T8 S# S7 P
- }, R$ w2 f, W& t5 G4 E: {$ |; H
- else% f; P' M1 a. i' q
- {
$ g, z- A! D. R3 ^& A - if(!strnicmp(token,"Content-Length",14))
$ h1 q* R& q" J2 f - {6 n& w) D) s$ Z, P
- if(Dn.szCompBuff) { free(Dn.szCompBuff); Dn.szCompBuff=NULL; }
' V" ]) S. p6 |. h5 B0 ` - dwLastSize=dwFileSize=atoi(&token[16]);
5 D; R( C+ ~3 C+ V6 m1 R - Dn.szCompBuff=(LPSTR)malloc(dwFileSize);5 C' F; C" O8 R" |! L* `* n
- }
, J' Y2 ^ k$ L8 C; L7 Z - }' k& Y) p7 D" a8 K/ H5 h
- }
! ~& l3 R# S. S. `) I - break;5 i2 v4 u0 m$ P4 f0 @6 C, Y
- }1 A/ U, w, e+ |1 K3 ?% a% e
- }/ j2 l4 _1 Q' T, P
- if(!bReadHeaders||!dwFileSize)
* F* e! Y0 Y2 S7 @ - {- C9 L- H, P6 y
- // Wrong Header or Reading File Size Error6 U# Q2 ?, M2 z6 v6 v( W6 x( ]1 @
- Dn.QuitNWSSock();/ R+ l) y$ |- J8 N N7 M: ]5 f9 Q
- dwProgramState=AP_NOTHING;
; v& o: T0 d8 _5 n1 A6 U, {. n - CString strTempName;
6 f! G: ]( V9 {( J1 }- c% {/ R - strTempName.Format("Navigate %s File Error !",strFullName);" V" k( y3 o! H
- MessageBox(GetActiveWindow(),strTempName,"Error",MB_OK|MB_ICONERROR);
& d; U, P9 P7 Y6 h4 o - bRestartUpdater=TRUE;
- Q0 ?' v! z. H9 E - }3 R1 j! {! x+ J* o+ P
- }
5 ~. p9 C: U) q% s& S' @3 [4 A' ? - else% ?8 D6 `1 |$ _5 Z" e3 A0 ]
- {, E+ {8 T9 H: Q" k
- // Have No Header9 G3 \- o7 q2 E L/ E: W
- Dn.QuitNWSSock();% R& _, x2 m/ `' O
- dwProgramState=AP_CONNECT;
9 ]0 ~ K {- H* }. A9 N0 ?" g - }* |" J L! `( ]+ S! K
- }- l# |4 e% T4 @3 h4 ~
- else
' x' u( A" g* n: Z - {' g5 j2 t1 ~' _& o# V8 ]0 {
- // Reading File From Web
/ r) { Y9 r* Q/ ? - if((int)Dn.dwRecvLeft>0)/ T, w! Z+ h! C6 v, W
- {
; f, l1 K3 K. a - if(dwCurrSize+Dn.dwRecvLeft>dwFileSize)
5 D# v8 A9 p$ e; q6 ?; h9 s2 J - {4 m- |$ w% U/ \/ _ }
- dwLastSize=dwFileSize=dwCurrSize+Dn.dwRecvLeft;
+ e ?* f' B5 w1 j$ I+ @! M- U& N$ |: I - Dn.szCompBuff=(LPSTR)realloc(Dn.szCompBuff,dwFileSize);
4 c2 {/ ?' T+ j - }7 B' u* C, ^& Y f- d! j
- memcpy(Dn.szCompBuff+dwCurrSize,Dn.szRecvBuff,Dn.dwRecvLeft);
& W' d j- _. U6 x& S' g9 c - dwCurrSize+=RecvLen;
; k. l2 L n5 u0 ~+ t1 o# p, b - Dn.dwRecvLeft-=RecvLen;
' T) K; D; P2 U+ h, `1 |/ e; h - }
1 `/ R% H; X4 T9 X6 G - dlg->m_Process2.SetPos(100*dwCurrSize/(dwFileSize<=0?1:dwFileSize));+ u5 b/ ~4 F7 R# k
- // int iRate = 100*dwCurrSize/(dwFileSize<=0?1:dwFileSize);
& h0 D R# T3 d! c* Q - // dlg->m_Process2.SetPos(iRate);
3 r# V- u5 ]9 M+ M" Y- h* _ - // if(iRate < 0) iRate = 0;
7 ^' I$ }* l1 E) K% _, I7 h - // if(iRate > 100) iRate = 100;
9 Z$ u; Q! k/ ]( t - // char szShow[5];$ Y$ x2 d/ a- q" G- E
- // sprintf(szShow,"%d%%",iRate);
3 g/ `* b( o/ o( e+ t8 U) C! y - // dlg->m_SingleRate.SetWindowText(szShow);
; e1 | t8 Q5 q+ j. T) ] - if(dwCurrSize>=dwFileSize) goto SaveFileJump;7 Q5 f4 B2 j1 i* X0 [0 K
- }4 H) U4 O3 b- r+ i1 k: M
- }( c: K/ b1 g2 v8 i" v4 D1 |- Q
- else if(dwCurrSize<dwFileSize)
) v# k1 ^4 s3 K- G - {2 o, f2 f+ [ ^9 Y1 d
- // Disconnection But Size Error, ~4 U7 ?8 j, m1 r' n) t9 k# [
- Dn.QuitNWSSock();* m8 ]- V8 E" F7 H
- if(dwCurrSize) dwProgramState=AP_RESUMED;
4 c; t' g) Z4 { ]+ w* |% R - else dwProgramState=AP_CONNECT;5 f& }( n0 {1 Q* k
- }, Z2 e# N8 ~" L3 J- N% E& C
- else
9 i+ o9 W+ n. H$ s4 G6 o; N - {
/ `3 k: L# c2 L& O* @* ?4 G - SaveFileJump:
/ x- H% Y% E' D7 N' W+ W q' {% G - // End of File and Disconnect
6 o6 Y! [( o" L - FILE *Fp;
( J! ^2 i- W( x7 B% t3 @ - char szTempName[MAX_PATH];
+ |7 \; A2 f! m- ^/ V - strcpy(szTempName,".\\DownLoad\");
1 k* l" [+ t C7 b+ e - strcat(szTempName,(char*)(LPCTSTR)strFileName);
4 C7 x. l3 L/ M9 |4 x - if(bCompressed) strcat(szTempName,".zip");
9 v5 @ d& w" {# W$ S - if(dwCurrSize)7 v& j* F" v6 k k
- {6 s- e# o" t5 C \
- Fp=fopen(szTempName,"wb");
6 @$ s" o: ^ E5 {5 m+ u* G+ R - if(!Fp) x M. P4 T/ p, @) n/ B; C
- {7 |8 s& J' L: F; @
- _mkdir("DownLoad");
7 \% V/ H2 Y' Z0 \8 u - Fp=fopen(szTempName,"wb");
) A0 j/ d7 K5 D9 v6 ^+ }$ w, F - }
k$ V2 X4 J9 f$ T$ l - if(Fp)
1 z' y% A6 u% H1 q* t - {
) u% e1 C% x- q3 h( x2 ~& U. r - fwrite(Dn.szCompBuff,1,dwCurrSize,Fp);- z3 M6 A; t* K5 W8 z1 e7 F* s& f* L
- fclose(Fp);
* b& N% F; F: o( Y - }0 {, q1 Z3 V: w6 S- S
- }! `3 c4 h& d/ ?0 ^6 U
- if(!bSilentStep)
) g! ~, f B: }7 ^ z' y8 V) M - {
/ D' Y& J( A5 Q# p8 a - if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);$ H. E5 J8 M# b* Q7 V# t4 d
- dlg->m_ListText.AddString(strFileName+".....saving");
6 e2 z, q$ Z) F! a - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);" d& U1 n. s7 l9 N! v/ Q$ A8 S% I
- }
J* n2 D3 \& A - if(bCompressed)4 V* l" d6 ~4 f1 i3 y% ~
- { Y, l% U, j% [$ E4 m/ i* h
- int opt_overwrite=1;
; h, N8 J4 X T - int opt_do_extract_withoutpath=0;- s( m! j+ j+ X/ _/ }
- unzFile uf=NULL;
8 `# k; ^8 y$ g, |( O - uf=unzOpen(szTempName);" V% \* D, U! x8 ?
- if(uf)
; Q$ t3 ] _* R3 n t - {6 k3 h0 E$ z* @4 P# s' @1 U
- if(!bSilentStep)! c1 o! d/ I: x. [
- {5 |8 J: h; g& L
- if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);/ S# d6 j. f m' s b
- dlg->m_ListText.AddString(strFileName+".....extracting");
; H+ U, X; \, z8 C! `- O' C - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);4 X+ P/ F% |* r( w) _' R
- }. f- w0 a( U& F% ]
- if(do_extract(uf,opt_do_extract_withoutpath,opt_overwrite,(char*)(LPCTSTR)strFilePath,NULL)==UNZ_OK). Y8 h# |$ Q$ P1 `% I
- {
& g) [+ x5 U5 L+ M$ ~ - if(!bSilentStep)$ K+ E& U2 B& y9 }" Z
- {
3 ?# p- [4 X; z$ F+ |6 f - if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);
% K" {' r" M2 r% d8 L" P" L0 N) H" h x - dlg->m_ListText.AddString(strFileName+".....done");( O+ F) z9 {! Z" h' a
- dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);$ b7 A4 S; D7 o% t5 a/ _/ u
- }
( F% T' m8 [+ I% | - dwDownLoaded++;
: F0 g: [0 O( R* Z. B - dwProgramState=AP_NOTHING;3 z9 z% k, h7 h% W$ M3 M
- }
4 }, U6 q( h3 l- j* H$ t5 K - else
( z" Y. o+ q- U! U* S! S3 W. h* x - {% t, n! S+ R: w2 j
- dwProgramState=AP_CONNECT;# o5 |' x. q% @7 Y
- }! q- F" n, A! p" c" }9 y
- unzClose(uf);
; |1 b$ b: z2 C6 X) p - }7 h0 a+ g7 d& w
- else
2 i3 `( ]! z& k1 J# i9 W& S - {
% w1 D$ q( S# w8 O2 V - dwProgramState=AP_CONNECT;
. N) m* {3 m* m - }
8 `; R5 C. B/ C7 H: b/ a - unlink(szTempName);2 ~4 U8 Q2 W" t: |+ i
- }6 F: R5 j: G$ u( @$ c
- else+ n$ k, W7 g2 t1 Z
- {+ P+ L4 P, [% a+ y ^! b# f- n
- if(!bSilentStep)
2 i b0 V7 Z$ Y4 f - {8 W9 t5 i* V) s: `; ?
- if((Count=dlg->m_ListText.GetCount())!=LB_ERR) dlg->m_ListText.DeleteString(Count-1);% [ z1 E/ o9 U0 N3 n/ s8 C
- dlg->m_ListText.AddString(strFileName+".....done");
& c) [1 ?! b( p- X1 h [. G+ R$ N - dlg->m_ListText.SetCurSel(dlg->m_ListText.GetCount()-1);3 @! k! Z0 D6 [8 S7 h
- }0 n* t9 D8 x; v P
- dwDownLoaded++;; j, w: t. E4 K6 x* e
- dwProgramState=AP_NOTHING;
7 K8 h. N2 P# {% i9 s. {' d3 S - }
4 F6 N+ {4 e) H) z2 B - Dn.QuitNWSSock();
3 w6 k0 L; i8 z3 L( v* H( g - }
" [# n, N. c/ i# o) y - }- e1 C1 S9 [: F* V9 P' {$ a$ J* y% k* H
- else+ }+ E4 e' ]5 I% a$ e: Z# i
- {
/ b# ~2 a! Z- @# N) z4 i - // Connect Timeout1 T" f# z4 P) Y/ V% \0 P
- if(GetTickCount()-LastTickCount>30000)2 N5 X( \0 k6 n9 @7 g s" \
- {
G/ C) \! i- A - Dn.QuitNWSSock();$ G( A U4 L0 _7 E! d
- if(dwCurrSize) dwProgramState=AP_RESUMED;
" w5 ] P4 y( Y' K z - else dwProgramState=AP_CONNECT;
m5 h* n! o6 g: o/ o. D - }
8 M+ R) C T/ W: u$ u$ Q - }4 L/ E- Z# j9 M' X& ^4 l4 J
- }
0 u' e( u6 t E" {" e! m' Y - break;
) O9 R% P* E# {' {, s - }
4 ^% Z9 H, K& c& f3 s4 {( X - return CWinApp::OnIdle(lCount);
$ p1 y$ `! E+ A6 k# c0 R5 t; k - }
% [- j% ]6 Y- d- R2 e
複製代碼 其实登陆器也就是这么一回事儿……
! z+ C( H$ ^# a3 Q) W8 P附件有编译教程和源码
9 z3 N: a" h& C8 J( [4 J& K+ ~
" [ Z0 C! o/ A0 Y6 ?1 R) G
0 U5 T8 C$ R! }8 t+ n; K6 z% a |