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