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