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