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