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