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