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