2014-04-06 28 views
1

我已经设法让我的应用程序检查我的服务器上的WebService的更新,它会看到是否有更新。但我面对现在真正的问题是,我不知道如何下载的我的应用程序的.exe较新的版本,并取代目前我跑。更新C#应用程序替换.exe文件

总之,我需要知道如何下载我的应用程序的更新版本.exe,并替换当前正在运行的一个。

回答

1

您需要创建一个单独的引导程序来为您完成工作,否则应用程序将会运行,因此操作系统将会阻止您覆盖它。

+0

嗯我看到其他人使用Application.Restart()并替换文件... – user3144640

+0

这只适用于ClickOnce应用程序。 –

4

那么实际上你需要创建一个单独的进程来处理更新步骤。我曾经开发了一个桌面应用程序与接收更新形成一个Web服务器的能力,而我做了通过创建角色为主要切入点,主要应用不同的工艺。

它启动主应用程序进程,同时它继续运行以检查更新。然后,如果有任何更新它下载到临时文件夹后,它关闭它,然后它提交新的更新,并再次重新启动主应用程序之前通知的主要应用。

但是,如果你想坚持一个可执行文件和一个进程。我想这是运行不是由操作系统本身允许的,而你不能取代任何可执行文件。

0

那么实际上有办法。几年前我发现了它。

您无法删除当前正在执行的.exe程序文件。但你可以移动它。

所以,我从我的Web服务器的更新文件下载到 /updates/myprogram.exe

然后我 1)File.Delete以往任何myprogram.bak文件 2)File.Move的myprogram .exe到myprogram.bak。 3)File.Copy将/updates/myprogram.exe复制到/myprogram.exe位置。 4)询问用户是否要重启,调用Application.Restart()

Voila。您的主程序已解决问题。无需启动程序。

相关问题