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