升级程序文档.txt
Upload User: dzyhzl
Upload Date: 2019-04-29
Package Size: 56270k
Code Size: 4k
Development Platform:

C/C++

  1. 一、升级程序主流程
  2. 4、下载更新文件的信息(index.dat)
  3. 5、分析更新文件的信息
  4.     如果有需要优先更新的程序(比如升级程序本身和升级程序相关的程序、文件),则
  5.     下载这些文件,并且把这些文件和下载的文件信息写入Update.inf,
  6.     退出并调用更新这些文件的程序(UpdateSelf.DAT),
  7.     UpdateSelf.DAT在完成更新文件后,会调用升级程序继续升级,并退出自身。
  8. 6、下载文件
  9.     HTTP/FTP,支持断点续传
  10. 7、更新文件
  11.     没有冲突的文件就直接拷贝覆盖
  12.     冲突的文件,在系统重启后更新
  13.         Win2000/NT:
  14.             MoveFileEx
  15.         Win98/ME:
  16.             短文件名的文件:
  17.                 Wininit.ini 中处理"SrcFileName=DestFileName"
  18.          
  19.             长文件名的文件:
  20.                 Win98:
  21.                    如果能够创建KAVMove.EXE,则通过批处理(KAVMove.BAT)调用
  22.                    KAVMove.EXE在系统启动的时侯更新文件。
  23.                    否则在批处理(KAVMove.BAT)中调用命令行COPY和Del在系统启动的时
  24.                    侯更新文件。
  25.                    在C:\Autoexec.bat或者WinStart.bat中调用KAVMove.BAT.
  26.                    
  27.                 WinME:
  28.                    把要更新的文件的原文件和目标文件写入CopyFile.ini,在系统启动时在
  29.                    Win.ini的Run中调用程序CopyFile.EXE来完成拷贝工作.
  30.     如果没有文件需要重启系统才能更新的,升级结束后删除安装目录下多余文件。
  31.     否则在系统启动后删除多余文件。
  32.     最后,如果有文件更新后(或者是系统启动后才能更新)必须重启才能使用的,提
  33.     示用户并强行重启系统。
  34.     
  35.     -------------------------------------
  36.     如果选择的是本地升级方式,流程为:1 -- 2 -- 5 -- 7
  37.     如果是优先更新升级程序自身后继续升级,流程为:5--6--7
  38. 六、全局数据结构说明:
  39. typedef struct tagKUPDATE_DATA
  40. {
  41.     int nMainVersion;               // Local Program Version
  42.     char szParameter[MAX_PATH];     // Parameter
  43.     BOOL bUpdateSelfContinue;       // Continue after update self
  44.    
  45.     BOOL bVersionError;   // 升级数据中没有支持该版本的文件的标志
  46.     KCloseProgramMgr CloseProgramMgr; //管理被关闭的程序
  47.     
  48.     KSaveLog SaveLog; // 写日志的接口
  49.     
  50.     int nMethod;                    // Method of update 0: from internet  1: from LAN
  51.     
  52.     char szLocalPath[MAX_PATH];     // Path of update file,just index.dat path from LAN
  53.     char szHostURL[MAX_PATH];       // URL of download host
  54.     char szHostName[MAX_PATH];      // Name of download host
  55.     char szDefHostURL[MAX_PATH];    // Default URL of download host
  56.     char szDefHostName[MAX_PATH];   // Default Name of download host
  57.     ULONG   ulTryTimes;
  58.     BOOL    bAutoTryNextHost;              // Flag of try use next faster host when failed
  59.     BOOL    bUseFastestHost;               // Flag use the fastest host
  60.     
  61.     BOOL    bUseVerify;
  62.     CHAR    szVerifyInfo[256];
  63.     
  64.     KPROXY_SETTING  ProxySetting; // 代理设置
  65.     
  66.     BOOL    bAutoResume;            //L: auto-resume the previous download file
  67.     BOOL    bNeedUpdateSelfFirst;   // Need update self first flag
  68.     int     nNewsItemCount; // 新闻项的总数
  69.     CString sAnnounce; // 升级后显示给用户的通知或者重要通告
  70.     CString sReadme; // 升级后显示给用户的更新文件的修正说明或者其他信息
  71.     
  72.     int  nOSPlatVersion; // 操作系统的版本
  73.     
  74.     BOOL bDownloadFailed;            // 1 : Failed              0 : successful
  75.     BOOL bUpdateFailed;              // 1 : Failed              0 : successful
  76.     BOOL bNeedRebootFalg;            // 1 : Need reboot Now     0 : not need reboot
  77.     
  78.     BOOL bRebootFlag;                // 1 : reboot now          0 : reboot later
  79.     BOOL bAutoRebootFlag;            // 1 : auto ruboot         0 : reboot later 
  80.     BOOL bRebootFinishUpdateFlag;    // 1 : Need reboot to finish update 0: not need reboot
  81. } KUPDATE_DATA;