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