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