给你一个思路:
1.你的主程序和你的更新程序需要是两个不同exe。就是说你的主程序和更新程序不李明是一起的。需要单独做一个更新程序。然后放到主程序目下,供调用。
2.在主程序启动时或者手动执行更新,更新之前需要判断是否有更新。
3.如果有更新,那么这个时候下载更新。(下载更新,可以在主程序也可以在更新程序做,最好由更新程序做)
4.下载好之后,启动 更新程序exe。
启动更新程序的方法 Process.Start("D:\\我的更新程序.exe")//这里可以参数
启动之后,当前橘扰则主程序Application.Exit()。
5.更新程序,进行更圆棚新 *** 作(下载到临时目录的dll等文件,复制并覆盖到你的主程序目下)
6.更新完成。关闭更新程序,自动启动 主程序。
启动主程序的方法 Process.Start("D:\\我的程序.exe")
当前更新程序Application.Exit()。
7.这就可以实现更新完成了。并且启动了更新后的主程序。
具体实现就看你了。不明白在问把。
可通过建立一个自删除的批处理渣神者,然后ShellExecute这个批处如薯理,接着ExitProcess来实现这个目的。示例源代码如下:
void DeleteSelf()
{
char szBatFile[MAX_PATH]={0}
strcpy(szBatFile,szFilePath)
strcat(szBatFile,"\\delselt.bat")
HANDLE hBatFile=CreateFileA(szBatFile,GENERIC_WRITE,0,NULL,CREATE_ALWAYS
,FILE_ATTRIBUTE_NORMAL,NULL)
//确定.bat文件的路径。
char batfilecontext[1024]
memset(batfilecontext,0,1024)
wsprintfA(batfilecontext,
"瞎卖:Repeat\r\ndel \"%s\"\r\nif exist \"%s\" goto Repeat\r\ndel \"%s\"",
szFileName,szFileName,szBatFile)
DWORD dwWrite=0
WriteFile(hBatFile,batfilecontext,strlen(batfilecontext),&dwWrite,NULL)
CloseHandle(hBatFile)
ShellExecuteA(NULL,"open",szBatFile,NULL,NULL,SW_HIDE)
}
其中,szFilePath保存了可执行文件所在的文件夹的路径,szFileName是可执行文件的全路径。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)