如何启动新应用并从任何打开的进程中删除调用应用程序?

时间:2011-04-08 15:33:47

标签: vb.net

我正在为我们的应用程序编写更新程序,并且在覆盖文件时遇到问题。这是一个冗长的例子。 Test.exe是我们的主要应用程序,update.exe是我们的更新程序应用程序。 Test.exe需要启动update.exe然后关闭test.exe。 Update.exe会将新更新从我们的网站下载到临时目录,然后复制新的更新。我遇到的问题是当Test.exe有更新并且我尝试在新文件中复制时它说它不能,因为test.exe仍在使用中。我“相信”这是因为test.exe仍然在appdomain中运行,因为在我关闭该应用程序之前从test.exe启动了update.exe。那么我是否尝试创建一个新的appdomain并从中启动update.exe,还是有其他方式我没有看到?请帮忙!

1 个答案:

答案 0 :(得分:1)

这太复杂了。

在Test.Exe中,只要启动Update.Exe,就退出。

在Update.Exe中:

  1. 抛出“请稍候”或“请稍等”屏幕。
  2. 从网站下载新的更新。
  3. 将计数器初始化为0。
  4. 尝试删除Test.Exe。如果没有例外,请跳至步骤6.
  5. 如果计数器小于30(*),请休眠2秒钟,然后添加一个并返回步骤3。
    否则,我们等了整整一分钟,我们仍然无法删除Test.Exe - 时间显示错误信息并中止(退出时出错)。
  6. Test.Exe已被删除!安装更新版本。
  7. 启动Test.Exe,然后退出Update.Exe

结果是你等到你能够删除Test.Exe,但你永远等不到一分钟。

(*)调整迭代次数,如果您的程序可能需要超过60秒才能在慢速计算机上退出。