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