ClickOnce更新正在运行的应用程序

时间:2013-12-16 15:40:21

标签: visual-studio clickonce

我正试图了解如何保持一个正在运行的应用程序,与clickonce版本保持同步......

我的应用程序需要每天24小时运行,但是,当我推出更新时,我希望软件注意到有更新,更新自身,并重新启动新版本。

如果可能,我无法解决问题?

非常感谢任何提示/提示。

由于

1 个答案:

答案 0 :(得分:1)

我们正在从控制台使用MAGE来自动生成应用程序和部署清单。不幸的是,它的API不允许我们按照你的要求去做。所以我们使用Powershell自动生成清单。首先它运行mage来生成清单。然后它打开生成xml文件并稍微修改它,然后签名。

这种清单按摩的目的是使标签看起来像这样:

<deployment install="true" trustURLParameters="true" mapFileExtensions="true" minimumRequiredVersion="1.0.0.1140">
<subscription>
    <update>
        <beforeApplicationStartup />
    </update>
</subscription>

让我们来看看。

  1. install = true:这意味着将安装该应用程序。安装后,该应用程序可以从本地硬盘驱动器运行,而无需再次从Web上下载。
  2. trustURLParameters = true:我们有捕获查询字符串并使用参数来改变应用行为的代码
  3. mapFileExtensions = true:我们更改所有非清单文件名,在名称末尾添加.deploy,以确保通常阻止可执行文件和其他已知二进制文件的客户端Web过滤器将通过这些文件。设置此属性会告知clickonce重命名文件
  4. minimumRequiredVersion = “1.0.0.1140”。这是重要的一个。因为更新发生在应用程序启动之前,每次启动应用程序时,即使从本地PC,它也会在线检查更新。如果清单已升级到较新版本,则应用程序将自行更新然后启动。
  5. 元素的内部元素告诉应用程序每次启动时都会自行更新。如果服务器关闭,更新将失败,但应用程序将从本地PC运行,因为它已安装。

    有关此元素的更多信息:http://msdn.microsoft.com/en-us/library/t7050f3w.aspx

    谨慎。永远不要回到版本。版本号是有意义的。一旦达到某个数字,如5,则永远不会回到4,否则应用程序将无法运行。如果您考虑使用符号链接在Web服务器上部署应用程序,这一点很重要。您可能认为创建“prod”链接并将其指向版本5将使您能够快速回滚到版本4,如果版本5是错误的。不是这样的。您需要使用错误修复或与版本4相同的代码构建版本6.

    使部署工作后,使用应用中的ClickOnce API检查更新:

    http://msdn.microsoft.com/en-us/library/ms404263.aspx

    请注意这个电话:

    Application.Restart();
    

    你需要拉入WinForms库才能使用它,但效果很好。