【问题标题】:ClickOnce Update Running AppClickOnce 更新正在运行的应用程序
【发布时间】:2013-12-16 15:40:20
【问题描述】:

我正在努力了解如何使正在运行的应用程序与 clickonce 版本保持最新...

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

如果这可能,我无法解决?

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

谢谢

【问题讨论】:

  • 您是否尝试在代码中的某个地方调用 ClickOnce 的更新例程?只需将此调用放入一个间隔为 24 小时的计时器中,您就应该在这里完成。

标签: visual-studio clickonce


【解决方案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:这意味着将安装应用程序。安装后,该应用可以从本地硬盘运行,而无需再次从网络下载。
  2. trustURLParameters=true:我们有捕获查询字符串并使用参数来改变应用行为的代码
  3. mapFileExtensions=true:我们更改所有非清单文件名,在其名称末尾添加 .deploy 以确保通常阻止可执行文件和其他已知二进制文件的客户端 Web 过滤器将通过这些文件。设置此属性会告诉 clickonce 重命名文件
  4. minimumRequiredVersion="1.0.0.1140"。这是重要的一个。因为更新发生在应用程序启动之前,所以每次启动应用程序时,即使是从本地 PC,它也会在线检查更新。如果清单已升级到较新版本,应用程序将自行更新然后启动。

元素的内部元素告诉应用程序在每次启动时进行自我更新。如果服务器关闭,更新将失败,但应用程序将从本地 PC 运行,因为它已安装。

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

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

一旦您的部署开始工作,请在您的应用中使用 ClickOnce API 检查更新:

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

注意这个调用:

Application.Restart();

您需要拉入 WinForms 库才能使其正常工作,但它运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多