c#如何解决更新程序并删除自身。
如上,写了一个更新程序,但是这个更新程序比较老了,一些功能不完善。想在新版的更新程序中实现:更新自己并删除自己呢。其他功能均已实现,只需要更新自己和删除自己的功能。求上代...
如上,写了一个更新程序,但是这个更新程序比较老了,一些功能不完善。想在新版的更新程序中实现:
更新自己并删除自己呢。
其他功能均已实现,只需要更新自己和删除自己的功能。求上代码、思路。 展开
更新自己并删除自己呢。
其他功能均已实现,只需要更新自己和删除自己的功能。求上代码、思路。 展开
3个回答
展开全部
代码木有..
思路一堆..
如果您的程序想删除原本的..
友情提示.看看百度影音的做法吧.
直接新建了一个文件夹.
删除原本的文件夹..
这个是比较极端的
您可以尝试这次的更新程序下载下来2个EXE.一个是主程序_TEMP.EXE一个是UPDATE.EXE
然后执行UPDATE.EXE
关闭自己
Update.EXE
删除原本的内容
更改主程序_TEMP.EXE
为主程序.exe
这下就把原本的程序完美替换了..
/*切割*/
但是以前见过单文件自己更新自己的,不知道是否是经过打包
但文件自己更新自己是这样子滴...动态生成一个BAT...然后执行他就好了..执行完了BAT自行删除..这个就很简易了..
但是您要考虑到BAT要是删除失败..可就比较恶心了
如果您不关心原本的程序.
或不关心原本程序的废除DALL.冗余的文件
那么就简单了..
但是也有前提:
前提是;你的主程序.EXE
也就是你执行更新这一段代码的EXE程序自己不更新.否则由于进程锁无法更新
其实也能仿.
例如..下载的新的EXE名字改一下..生成BAT删除原本EXE更改名字.BAT自行删除.
/*再割..*/
您说的自己更新自己是CLICKONCE吧..
他是微软自己实现的.通过WINDOWS的一个组件
前提当然也就是您说的..打包了.
而且整个打包方式都不同..
思路一堆..
如果您的程序想删除原本的..
友情提示.看看百度影音的做法吧.
直接新建了一个文件夹.
删除原本的文件夹..
这个是比较极端的
您可以尝试这次的更新程序下载下来2个EXE.一个是主程序_TEMP.EXE一个是UPDATE.EXE
然后执行UPDATE.EXE
关闭自己
Update.EXE
删除原本的内容
更改主程序_TEMP.EXE
为主程序.exe
这下就把原本的程序完美替换了..
/*切割*/
但是以前见过单文件自己更新自己的,不知道是否是经过打包
但文件自己更新自己是这样子滴...动态生成一个BAT...然后执行他就好了..执行完了BAT自行删除..这个就很简易了..
但是您要考虑到BAT要是删除失败..可就比较恶心了
如果您不关心原本的程序.
或不关心原本程序的废除DALL.冗余的文件
那么就简单了..
但是也有前提:
前提是;你的主程序.EXE
也就是你执行更新这一段代码的EXE程序自己不更新.否则由于进程锁无法更新
其实也能仿.
例如..下载的新的EXE名字改一下..生成BAT删除原本EXE更改名字.BAT自行删除.
/*再割..*/
您说的自己更新自己是CLICKONCE吧..
他是微软自己实现的.通过WINDOWS的一个组件
前提当然也就是您说的..打包了.
而且整个打包方式都不同..
展开全部
对于客户端程序来说,更新和应用时两套不同的程序,可以互相删除和更新,不能同时删除。
你要是想全部删除的话除非是设置成下载安装包自动运行。
你要是想全部删除的话除非是设置成下载安装包自动运行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-03-26 · 为您提供更好的产品和服务
七彩虹科技有限公司
七彩虹科技成立于1995年,中国著名的DIY硬件厂商, 亚太区最重要的显示卡提供商之一。专注于IT硬件产品研发、生产和销售,致力于为个人和企业用户提供最具创新与实用价值的硬件产品及应用方案。
向TA提问
关注
展开全部
主程序自己删除不了自己,在运行着也不能被别人删除,那么需要怎么做呢!
给你一个思路:
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.这就可以实现更新完成了。并且启动了更新后的主程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询