有没有办法(hacky会这样做)允许用户返回以前版本的ClickOnce网络部署的应用程序?
我查看了文档和API,似乎没有办法.您可以有选择地选择是否要更新,但一旦更新,似乎就没有办法了.
小智 84
您可以通过更改服务器清单文件恢复服务器端的旧版本.当客户端重新启动应用程序时,它将看到它的版本与服务器所说的"当前"版本不同,它将下载新版本.此服务器清单文件通常始终指向最新版本,但它不必.
以下是如何更改它(我使用Visual Studio 2008发布.其他版本可能具有不同的发布文件夹结构).
与publish.htm在同一文件夹中的是一个名为的XML文档[appName].application.这是客户端用于比较其当前版本的服务器端清单文件.本文档中包含客户端应运行的"当前"版本以及可以找到部署文件的服务器上的位置.
在同一位置,publish.htm也是一个名为"应用程序文件"的文件夹.此文件夹包含每个先前发布的子文件夹.在每个子文件夹中都有另一个XML文档,其名称与我上面提到的名称相同[appName].application.复制此文件(从包含要还原到的版本的任何文件夹)并将其粘贴到与publish.htm(几个级别)相同的文件夹中.当客户端应用程序重新启动时,它将显示为新版本可用,下载并运行它.客户端现在将运行以前的版本.
Jon*_*len 19
ClickOnce将使用您发送的任何版本.如果您向他们发送旧版本,他们将回滚到旧版本.
回到五月,我的好友大卫写了一篇关于如何在每个用户的基础上做这件事的文章.我们可以让每个用户都拥有不同的版本.应用程序甚至告诉数据库用户想要哪个版本,因此他们理论上可以更改其版本,然后只需重新启动应用程序.
只是用它来回滚在 Visual Studio 2017 中开发的 clickonce 应用程序。在我的例子中,在根文件夹中,只有两个文件;一个名为 [applicationName].manifest,另一个名为 setup.exe。
[applicationName].manifest 包含对当前版本号的多个引用,但每个引用都链接到一个 publicKeyToken 值,因此我不愿意手动编辑它。
因此,在 Application Files 文件夹中,在包含我想要回滚的版本的子文件夹下,我找到了另一个 [applicationName].manifest,我将其复制到根文件夹(已备份原始文件)。
就是这样。它对我有用,并且是一个非常简单的解决方案。但是我没有使用最低要求的版本,所以不能说这是否会影响它。
| 归档时间: |
|
| 查看次数: |
26355 次 |
| 最近记录: |