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