3

我有一个 ClickOnce 应用程序,它经常通过 URL 从另一个应用程序启动。URL 包括一些加载数据的命令行参数等。

由于启动应用程序的频率如此之高,我想取消对版本更新的检查。所以我通过 ApplicationDeployment 类实现了我自己的检查来避免它。如果您在安装应用程序后从“开始”菜单启动,它工作正常。

但是,我们还希望通过 URL 行为保留启动,因为它在很多方面都具有优势。但是通过 URL 启动时,总​​是会执行更新检查——似乎 IE 不够聪明,无法在本地下载区域中查找应用程序以查看它是否已安装...

有谁知道在仍然使用 URL 启动机制的同时获得“不自动检查更新”行为的方法?


实际上,看起来问题是 ClickOnce 模型中的 Catch-22。如果您使用 URL 启动,IE 将始终与主机联系并检查版本,并在必要时更新,无论应用程序是否标记为“不检查版本”。但是,如果您从“开始”菜单启动,ClickOnce 会禁用命令行参数。

有没有人找到解决这个问题的方法,或者知道 MS 计划修复它?

4

2 回答 2

1

微软没有什么可以“修复”的。这是在线 ClickOnce 部署的预期行为。它会检查以确保它在线并检查以确保它正在运行最新版本,然后它会运行。如果您不希望它这样做,那么您需要将其设置为在线和离线运行。

我认为如果您将其设置为离线并仍然通过 http url 调用它,它仍然会检查更新,但我不会发誓。如果它是一个在线/离线应用程序,您可以改为通过开始菜单上的快捷方式调用它。

如果您的目标是 .NET 3.5 SP-1 或 .NET 4.0,您可以将参数传递给在线/离线的应用程序。要了解如何做到这一点,请查看这篇文章

于 2010-04-04T05:57:50.073 回答
0

您是否考虑过将应用程序注册到自定义 URL 协议?这可能会提供您认为需要的属性:即能够从 Web 浏览器内部使用任意启动参数启动应用程序。

于 2009-03-04T18:07:13.463 回答