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