【问题标题】:ClickOnce check for update without executing appClickOnce 检查更新而不执行应用程序
【发布时间】:2011-09-15 12:35:00
【问题描述】:

我在一个服务组织工作,我们内部工具的用户经常断开连接。通常情况下,服务分配的服务工程师被某些内部工具的过时版本“搁浅”。

这些工具是使用 ClickOnce publish VS2010 .NET4 部署的。如果用户在仍连接到公司网络的情况下运行所有​​应用程序,他们将收到新版本可用的通知。随着各种工具数量的增加,部分应用未更新的可能性也随之增加。

是否可以通过批处理文件或其他方式自动化此过程? 这样工程师只需在连接到公司 nw 时运行一个文件即可获取所有已安装工具的最新版本?

添加:

一种更简单的说法是在公司网络上运行“类似于 Windows 更新的东西”,但用于内部 ClickOnce 应用程序。

【问题讨论】:

    标签: deployment clickonce installation


    【解决方案1】:

    非常有趣的问题。我想不出一个快速的方法来做到这一点,但这绝对是可能的。

    我将创建另一个 ClickOnce 应用程序,其工作是更新其他 ClickOnce 应用程序。此应用需要每个应用的.application 文件的网址。如果所有工程师都应该拥有所有应用程序,那很容易。如果没有,也许您可​​以查看他们的开始菜单并找到所有 ClickOnce 应用程序参考文件。这些文件包含网址。

    接下来,只需启动 url 并传递一个查询字符串参数... http://server/MyApp/MyApp.application?UpdateOnly=true

    在您的应用程序启动时,您可以检查查询字符串参数,如果应用程序使用UpdateOnly=true 运行,则将其关闭。

    一个旁注。如果您将每个应用程序的最低要求版本设置为最新版本,用户将不会收到新版本对话框的提示。似乎您想要这样做,否则用户仍然需要注意并进行大量点击。

    【讨论】:

    • 是的,并非所有人都拥有所有工具,我也希望进行依赖性检查(以防某些新版本提供与 Office 的互操作,因此突然需要新的可再发行组件)。这些应用程序处于相同的“制度”下,因此它们可以实施某种分发策略,例如在开始菜单中的位置等。当然,当批量运​​行时,这应该是无人值守的静默更新,这是对的。但是,我认为定期更新不应该保持沉默。如果某些东西突然停止工作,他们应该知道这是否与更新有关。
    • 经过一番思考,我考虑让所有的应用程序都有一个“/die_instantly”命令行选项。然后有一个客户端脚本使用此选项按顺序启动所有应用程序。它不会保持沉默,用户体验还有一些不足之处,但除此之外还不错。我自然会调用 cmd 选项“/UpdateOnly”之类的,但它基本上会立即杀死应用程序。你怎么看?
    • 我认为这是一个很好的权衡。不完美,但比他们现在的要好得多,而且你可以很快做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多