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