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