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