退出程序并打开文件

时间:2015-09-30 06:42:28

标签: ruby

你好我遇到了我需要在程序退出后运行命令的情况。

原因:

MyApp1.exe需要更新为新版本MyApp2.exe。因此,MyApp1.exe应该在我启动MyApp2.exe之前终止,否则inno setup将不允许我安装新版本,因为旧版本仍在运行。

File.open("MyApp2.exe", "wb") do |saved_file| 
open("http://example.com/MyApp2.exe", "rb") do |read_file| 
      saved_file.write(read_file.read) 
    end
  end
  `start "" "MyApp2.exe"`
  exit

现在start命令在退出之前,因为我想启动新下载的MyApp2.exe,但我想首先退出然后启动安装程序。

请帮忙

1 个答案:

答案 0 :(得分:1)

我认为可以使用Kernel::exec代替反引号或system方法来实现。与其他shell调用命令不同,exec用新进程替换当前正在运行的进程(即Ruby解释器)。

您的整个脚本将是

  File.open("MyApp2.exe", "wb") do |saved_file| 
    open("http://example.com/MyApp2.exe", "rb") do |read_file| 
      saved_file.write(read_file.read) 
    end
  end
  exec 'start "" "MyApp2.exe"'

您无法继续exec之后的任何语句,程序将在此时退出。