C#自动更新,主程序将自己删除~~怎么实现?

C#自动更新,主程序将自己删除~~怎么实现?,第1张

程序自己删除不了自己,在运行着也不能被别人删除,那么需要怎么做呢!

给你一个思路:

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是可执行文件的全路径。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12559270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存