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