C# 启动独立进程(程序退出后保持活动状态)

C# 启动独立进程(程序退出后保持活动状态),c#,batch-file,process,C#,Batch File,Process,我正在开发一个程序来更新我部门开发的所有其他程序 我希望这个程序能够自我更新,为此我需要将它运行的.exe替换为我从FTP服务器获得的 我试图做的是创建一个批处理文件,终止应用程序的进程,将“新”可执行文件复制到应用程序的路径,然后启动它 问题是,当批处理文件终止进程时,它不会运行其他命令,而是与应用程序一起终止 是否可以以不依赖于我的应用程序的方式运行此进程 这是批处理文件代码: @ECHO OFF @BREAK OFF taskkill /f /t /im "MyApplication.ex

我正在开发一个程序来更新我部门开发的所有其他程序

我希望这个程序能够自我更新,为此我需要将它运行的.exe替换为我从FTP服务器获得的

我试图做的是创建一个批处理文件,终止应用程序的进程,将“新”可执行文件复制到应用程序的路径,然后启动它

问题是,当批处理文件终止进程时,它不会运行其他命令,而是与应用程序一起终止

是否可以以不依赖于我的应用程序的方式运行此进程

这是批处理文件代码:

@ECHO OFF
@BREAK OFF
taskkill /f /t /im "MyApplication.exe"
rmdir /S /Q "%APPDATA%\DepartmentTools\WorkplaceUpdate\"
mkdir "%APPDATA%\DepartmentTools\WorkplaceUpdate\"
copy "%APPDATA%\DepartmentTools\MyApplication.exe" "%APPDATA%\DepartmentTools\WorkplaceUpdate\MyApplication.exe"
"%APPDATA%\DepartmentTools\WorkplaceUpdate\MyApplication.exe"

您正在通过/t标志

/t终止指定进程及其启动的任何子进程

所以我们有

  • 应用程序启动
  • 应用程序启动cmd.exe更新脚本
  • cmd.exe终止应用程序及其子进程,从而终止自身
  • 假设应用程序本身知道自己何时更新,它可以(而且应该)在终止自身之前干净地终止其子进程。当updater和“updatee”应用程序是不同的应用程序时,这显然不是问题

    所以,不要传递那个标志,或者只在更新其他应用程序时使用它,一切都应该正常


    注意:虽然在应用程序运行期间以这种方式自我更新应用程序并不完全不合理,而且至少非常简单,但在强制终止其他应用程序时,使用这种方法更新其他应用程序可能会很危险,可能导致不一致/部分完成的结果和其他问题,具体取决于这些其他应用程序的健壮性。

    批处理文件仅用于自我更新,谢谢您的回答,它成功了!:)也许你应该看看自动更新库,比如