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