📄 update.c
字号:
#include "includes.h"
int copyFile(char * source,char * dest);
//文件下载程序
void main (void)
{
char FTPSvrIP[16];
char filename[12],downfile[12],runfile[16],localfile[30];
char LoginID[20],LoginPassword[20];
char FTPDir[64];
char showmsg[64];
char newversion[10],oldversion[10],filepackage[12],filevar[6];
int filenum=0,i=0;
FILE *fp;
//清楚屏幕
clrscr();
printf("System update......\n");
printf("checking......\n");
//等待5秒中
sleep(5);
//服务器 登陆 信息
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "FTPSvrIP", 0, FTPSvrIP) )
strcpy(FTPSvrIP, "0.0.0.0" );
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "loginUser", 0, LoginID) )
strcpy(LoginID, "update" );
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "Password", 0,LoginPassword) )
strcpy(LoginPassword, "update" );
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "upFile", 0,filename) )
strcpy(filename, "upFile.ini" );
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "version", 0,oldversion) )
strcpy(oldversion, "1.0" );
if( ReadIni.GetField( UPDATE_FILE_NAME, "[UPDATE]", "FTPDir", 0,FTPDir) )
strcpy(FTPDir, "" );
printf("checking...sucess\n");
//初始网络
printf("init net......\n");
InitCommunication(CONFIG_FILE_NAME);
printf("init net...sucess\n");
//从服务器读升级文件
printf("download ini......\n");
if(!FTP_getput(FTPSvrIP,filename,0,FTPDir,LoginID,LoginPassword))
{
//读升级文件的版本信息
printf("download ini...sucess\n");
if( ReadIni.GetField( filename, "[UPDATE]", "version", 0,newversion) )
strcpy(newversion, oldversion );
//服务器版本和本地版本比较
if(strcmp(newversion,oldversion)>0)
{
//读本次升级的文件数
if( ReadIni.GetField( filename, "[UPDATE]", "filenum", 0,filenum) )
filenum=0;
//本次版本段,如:[1.0.0]
sprintf(filepackage,"[%s]",newversion);
//循环下载文件
for( i=0;i<filenum;i++)
{
sprintf(filevar,"file%d",i + 1);
if(!ReadIni.GetField( filename, filepackage, filevar, 0,downfile) )
{
sprintf(showmsg,"download %s file...\n",downfile);
printf(showmsg);
if(FTP_getput(FTPSvrIP,downfile,1,FTPDir,LoginID,LoginPassword))
{
sprintf(showmsg,"download %s file...fail\n",downfile);
printf(showmsg);
break;
}
sprintf(showmsg,"download %s file...sucess\n",downfile);
printf(showmsg);
}
}
}else{
//当版本不需要升级的时候,恢复正常运行程序
fp=fopen(START_RUN_EXE,"wt");
if(fp!=NULL) {
fputs(RUN_EXE_NAME,fp);
fclose(fp);
}
remove(filename);
//断开网络
TermCommunication();
SysReboot();
}
//文件下载成功
if(i==filenum&&filenum>0)
{
printf("setuping......\n");
//循环拷贝文件
for( i=0;i<filenum;i++)
{
sprintf(filevar,"file%d",i + 1);
if(!ReadIni.GetField( filename, filepackage, filevar, 0,downfile) )
{
sprintf(runfile,"..\\%s",downfile);
if (copyFile(downfile,runfile)!=0) break;
remove(downfile);
}
}
//文件拷贝成功
if(i==filenum&&filenum>0)
{
printf("setuping...sucess\n");
//恢复正常运行程序
fp=fopen(START_RUN_EXE,"wt");
if(fp!=NULL) {
fputs(RUN_EXE_NAME,fp);
fclose(fp);
}
}else{
printf("setuping...fail\n");
}
}
}else{
printf("download ini...fail\n");
}
remove(filename);
//断开网络
TermCommunication();
SysReboot();
}
//复制文件
int copyFile(char * source,char * dest)
{
FILE *fp1,*fp2;
char ch;
fp1=fopen(source,"rb");
if(fp1!=NULL)
{
fp2=fopen(dest,"wb");
if(fp2!=NULL)
{
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch,fp2);
ch=fgetc(fp1);
}
fclose(fp2);
fclose(fp1);
return 0;
}
fclose(fp1);
return -2;
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -