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