xyold1 发表于 2012-4-29 16:11:49

[已解决]如何在不中断程序运行的情况下实现程序的更新

本帖最后由 xyold1 于 2012-4-29 17:08 编辑

手动的办法是先将程序重命名,再复制更新的文件
现在想做一个脚本更新,无奈不知如何重命名,或者有没有更好的办法呢

下面找到的_FileRename试了下也不能重命名正在使用的文件,强制删除也不行
Func _FileRename($fr_FullPath, $fr_Rename)
    If $fr_Fullpath = "" Then
      Return -1
    ElseIf $fr_Rename = "" Then
      Return -1
    ElseIf Not FileExists($fr_Fullpath) Then
      Return -1
    Else
            ;返回所执行命令的退出代码
      Return _RunDOS("ren """& $fr_FullPath &""" """& $fr_Rename &"""")
    EndIf
Endfunc

user3000 发表于 2012-4-29 16:19:32

回复 1# xyold1
楼主有点异想天开了吧?
Windows下面, 正在运行的程序怎么能够改名?

xyold1 发表于 2012-4-29 16:23:57

回复 2# user3000
我无知了?{:face (207):}

user3000 发表于 2012-4-29 16:35:12

回复 3# xyold1

你应该有玩过游戏吧?
一个游戏其实有很多EXE, 有专门用来更新工作的EXE, 有的还分登录用的EXE; 每个游戏都有个主程序.
大多数游戏进行更新时是不能玩的, 正是这个道理. 现在有些游戏开发了一边玩一边下载更新内容的功能,
但也仅仅是下载, 为将来的更新作准备而已.

xyold1 发表于 2012-4-29 16:54:26

回复 4# user3000


    亲,比方不是这么打的,游戏更新的时候 不能玩,那可能是因为服务器也要做想应的更新,不等于玩的时候不能更游戏

xyold1 发表于 2012-4-29 17:07:52

唉,上面的函数可以,原来第二个参数只传文件名就行了...

user3000 发表于 2012-4-29 17:10:45

回复 5# xyold1
好吧, 最后再多说两句.
我在网吧工作, 自然少不了做更新游戏的事情.
有时打开某个游戏后会看到这样的提示: 游戏登录器需要重启以便进行更新!
我确定此信息后, 它会关闭, 然后有新信息提示正在安装, 完了, 又重新打开该新登录器!

我自问没有足够的理论跟你讨论这问题, 但看了你5楼的回复, 我心底却真是认为你是无知的了.

zch11230 发表于 2012-4-29 17:30:04

那应该更新的是游戏的一些资源文件吧 并非主程序 比如这个 test.txt你可以随时更新 但正在运行的主程序是无法直接更新的
While 1
        ConsoleWrite(FileRead("Test.txt")&@CRLF)
        Sleep(5000)
WEnd

xyold1 发表于 2012-4-29 17:48:28

最后再说一句,正在运行的主程序是可以更新的,方法是将其重命名,再复制要更新的文件,重命名函数就是上面的函数over over
大家别再说不能更新什么的了
{:face (288):}

user3000 发表于 2012-4-29 17:51:35

本帖最后由 user3000 于 2012-4-29 17:53 编辑

回复 9# xyold1

楼主, 请发下简洁代码上来, 给个学习机会?
或者, 让我见证你的程序(已编译成EXE!!!)不是在退出运行的情况下实现改名的?

因为, WINDOWS向来是禁止给正在运行的程序重命名的.

xyold1 发表于 2012-4-29 17:53:41

回复 10# user3000

一会发源码

xyold1 发表于 2012-4-29 18:12:43

回复 10# user3000

http://www.autoitx.com/forum.php?mod=viewthread&tid=31901&page=1&extra=#pid429517

user3000 发表于 2012-4-29 18:53:05

回复 12# xyold1
经过测试, 在程序一直运行时,的确可以修改程序自身的命名!
简直是创建伪进程的一大利器!从进程里看到了还是原名字, 但实质上该进程的文件已经被改名! 原进程EXE已被重命名!

感谢楼主, 又学习了新知识!

syhw2222 发表于 2012-5-20 06:32:59

楼主真是高人啊!

fjrti 发表于 2014-5-2 22:04:58

楼主真是高人啊!
页: [1] 2
查看完整版本: [已解决]如何在不中断程序运行的情况下实现程序的更新