主程序自己删除不了自己,在运行着也不能被别人删除,那么需要怎么做呢!
给你一个思路:
1.你的主程序和你的更新程序需要是两个不同exe。就是说你的主程序和更新程序不是一起的。需要单独做一个更新程序。然后放到主程序目下,供调用。
2.在主程序启动时或者手动执行更新,更新之前需要判断是否有更新。
3.如果有更新,那么这个时候下载更新。(下载更新,可以在主程序也可以在更新程序做,最好由更新程序做)
4.下载好之后,启动 更新程序exe。
启动更新程序的方法 Process.Start("D:\\我的更新程序.exe"); //这里可以参数
启动之后,当前主程序Application.Exit()。
5.更新程序,进行更新操作(下载到临时目录的dll等文件,复制并覆盖到你的主程序目下)
6.更新完成。关闭更新程序,自动启动 主程序。
启动主程序的方法 Process.Start("D:\\我的程序.exe");
当前更新程序Application.Exit()。
7.这就可以实现更新完成了。并且启动了更新后的主程序。
具体实现就看你了。不明白在问把。
主程序自己删除不了自己,在运行着也不能被别人删除,那么需要怎么做呢!
给你一个思路:
1.你的主程序和你的更新程序需要是两个不同exe。就是说你的主程序和更新程序不是一起的。需要单独做一个更新程序。然后放到主程序目下,供调用。
2.在主程序启动时或者手动执行更新,更新之前需要判断是否有更新。
3.如果有更新,那么这个时候下载更新。(下载更新,可以在主程序也可以在更新程序做,最好由更新程序做)
4.下载好之后,启动 更新程序exe。
启动更新程序的方法 Process.Start("D:\\我的更新程序.exe"); //这里可以参数
启动之后,当前主程序Application.Exit()。
5.更新程序,进行更新操作(下载到临时目录的dll等文件,复制并覆盖到你的主程序目下)
6.更新完成。关闭更新程序,自动启动 主程序。
启动主程序的方法 Process.Start("D:\\我的程序.exe");
当前更新程序Application.Exit()。
7.这就可以实现更新完成了。并且启动了更新后的主程序。
具体实现就看你了。不明白在问把。
不可能同步实现,要设计为异步的。
1、更新和主程序的exe是两个exe
2、主程序启动时,检测有没有更新,有的话,打开更新exe,关掉自己
ps,此处,需要判断更新exe是否有新版本,如果有,则下载新的,覆盖更新exe(此时可以成功,因为个更新exe没有启动)
3、执行更新(此时如果主程序exe有变化,可以覆盖成功,因为它没启动)
主程序删除自己?我的理解应该是说,先对比,然后把要更新的程序集和其它信息更新下来,然后再启动程序。你想的删除自己应该是退出更新程序,启动应用程序吧。