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