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