gpt4 book ai didi

file - 较大的 .exe 文件无法删除自身,而较小的 .exe 文件可以使用相同的代码(Delphi)

转载 作者:行者123 更新时间:2023-12-02 10:46:43 25 4
gpt4 key购买 nike

我想在Delphi中编写一个程序,它会删除自身并复制另一个版本来代替它,即另一个文件夹中同名的另一个.exe文件。我在一个测试项目中尝试了这段代码并且它有效。但是当我为更大的项目复制它时,它无法删除自身。大型项目的大小为 68 413 KB(以防它与问题有任何联系..)

有什么建议吗?

AppName:= ExtractFileName(ParamStr(0));
myBatFile:= 'copy.bat';
AssignFile(myText, myBatFile);
Rewrite(myText);
Writeln(myText, 'del ' + AppName);
Writeln(myText, 'copy whateverPath\myProgram.exe whateverPath\destination\myProgram.exe');
Writeln(myText, 'del ' + myBatFile);
CloseFile(myText);
ShellExecute(Application.Handle,'open','copy.bat',nil,nil,SW_ShowNormal);
Halt;

最佳答案

您无法删除正在运行的进程的文件。但你可以重命名它!所以你可以:

  1. 将新的可执行文件下载到 *.tmp 文件
  2. 将 *.exe 重命名为 *.exe.tmp
  3. 将下载的文件从 *.tmp 重命名为 *.exe
  4. 重新启动应用程序
  5. 删除*.exe.tmp

关于file - 较大的 .exe 文件无法删除自身,而较小的 .exe 文件可以使用相同的代码(Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35170860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com