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