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