【问题标题】:ClickOnce launcher doesn't pick up the latest version at application startupClickOnce 启动器在应用程序启动时不会选择最新版本
【发布时间】:2012-02-16 14:53:17
【问题描述】:

在我们公司,我们对客户端/服务器应用程序的客户端部分使用 clickonce 部署。 Clickonce 包部署到安装了 FrontPage 扩展的 IIS 服务器。我们直接从 Visual Studio 2010 编译、签名并发布到 IIS。我们的 clickonce 包已设置,以便它在每次应用程序启动时检查更新的版本

该应用程序有大约 100 个用户@远程机器。最近,当我们发布最新版本时,一些客户(大约 10-15%)最终仍在使用旧版本。当我们远程连接到其中一个客户端并启动应用程序时,我们看到 clickonce 启动器会检查更新的版本,然后启动应用程序而不进行更新。然后,我们必须卸载该应用程序并通过 clickonce 生成的网页再次安装它才能获得最新版本。

任何想法为什么会发生这种情况以及我们如何防止它?有什么方法可以启用日志记录,看看为什么启动器没有选择更新的版本,即使它在应用程序启动时检查它?

【问题讨论】:

    标签: .net deployment clickonce


    【解决方案1】:

    运行Fiddler 并在其中一台不工作的机器上启动应用程序。验证它在正确位置检查更新并且更新调用成功。

    【讨论】:

    • 如果可能的话会尝试,问题是它对客户端的侵入性太大(由于客户端的安全策略,即使远程连接也是一个巨大的痛苦)。奇怪的是,我们所有的内部测试客户都可以正常工作。虽然这给了我一个想法,但当我们在失败时建立客户端的 IP 时,我可能会更幸运地查看我们的 IIS 日志。
    【解决方案2】:

    我有两个选项可供您尝试,我的团队根据需要在我们的某些部署中使用它们。这些可能不完全适合您的需要,因为它们每个都有警告,但应该可以解决您的问题。

    1. 在发布设置中设置“应用程序仅在线可用”。 (默认是离线模式,它像普通程序一样安装到 Windows 中)此模式在每次启动时从 publish.html 重新下载应用程序,而不是在 Windows 中安装它。您必须每次启动 html 或 setup.exe。我们通过制作“菜单”应用程序来解决这个烦恼,这些应用程序只有一堆按钮/链接,这些按钮/链接指向我们在线模式下的应用程序,以便用户可以找到它们。

    2. 如果您仍想像正常一样坚持离线模式,请尝试设置最低要求版本 = 当前版本。这应该会强制 ClickOnce 每次都获取最新版本,这似乎对我有用,但我还没有彻底测试过。

    【讨论】:

    • “此模式在每次启动时重新下载应用程序”。这是错误的。离线和在线几乎相同。只有3个不同。 1.离线添加添加/删除条目 2.离线添加开始菜单快捷方式。 3. 在线应用拥有 250 MB 缓存;只有在缓存超过 250 MB 并且应用程序被清除时才会重新下载它们。
    • 谢谢 Brett,我已经考虑过这种情况,但问题是我们的客户端应用程序支持离线模式下的数据输入,当用户连接回来时,离线数据会发布到服务器到互联网。这有效地阻止了我使用任何一种建议的解决方案,因为在第一种情况下,应用程序在离线时根本不可用,而在第二种情况下,用户无法将离线数据发布到服务器,因为更新后它无法反序列化使用旧模式编写的离线数据(迄今为止几乎每次更新都会更改数据模型)。​​
    • 此外,如果检测到新版本已经无法正常工作,那么我几乎 100% 确定解决方案 #2 无法解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多