ClickOnce 部署策略

时间:2021-03-28 19:01:55

标签: deployment version clickonce rollback

我们正在考虑将我们的垂直市场软件应用程序的 MSI 安装转移到 ClickOnce 安装,以帮助自动化软件更新(即受限用户不需要 Windows 管理员凭据),但我们有几个场景我们没有即使经过数小时的阅读和测试,也能够克服。

我们需要完全控制哪些客户可以访问我们每个版本的软件,因此我们发布了 ClickOnce 安装,其中“应用程序应检查更新”选项未选中。这使我们能够以编程方式为每个客户检查服务器上的更新,但存在一些问题。

我们需要这种控制,因为随着客户放弃对我们的支持,我们不希望他们能够将他们的软件更新到更新的版本。因此,我们正在寻找一种为客户手动启动和安装正确版本软件的方法。

假设我们已经发布了 v1.0.0.1、v1.0.0.2 和 1.0.0.3 版本,并且都在我们的服务器上。

  1. 签订支持合同的客户 A 可以完全访问最新版本,并且一切正常。我们继续使用 ApplicationDeployment.CheckForDetailedUpdate 检查更新。他们从我们的软件中检查更新并安装最新版本,一切正常。

  2. 在安装 v1.0.0.2 后失去支持的客户 B 现在需要在新计算机上安装我们的软件。如果他们转到 http://www.example.com/myApp/install/ 并下载/运行 setup.exe,它将在该计算机上安装 v1.0.0.3,因为这是可用的最新版本,而我们不希望这样。

  3. 客户 C 是一个新客户,我们只想访问 v1.0.0.1,但如果他们再次访问 http://www.example.com/myApp/install/ 并下载/运行 setup.exe,它将安装 v1.0.0.3。

我们尝试了很多变通方法,但都没有成功。

我们认为我们的解决方案可能是:

  1. 让它在所有用户进行全新安装(即 v1.0.0.3)时为其安装最新版本,然后
  2. 在 IsFirstRun 上找出它们应该在哪个版本上,然后在他们的计算机上手动下载并启动该版本的 myApp.application 文件,以将它们“降级”到我们希望它们使用的版本。

问题是,无论我们尝试从 http://www.example.com/myApp/install/Application Files/myApp_1_0_0_2/myApp.application 启动目标计算机上的 .application 文件多少次和多少次,它最初都会启动应用程序文件,但随后我们获取“无法启动应用程序”对话框,当单击“详细信息...”按钮时,我们总是会看到“用户名或密码错误”、“远程服务器返回错误:(404)”中的任何内容出错Not Found”,最常见的“部署和应用程序没有匹配的安全区域。”。无论我们是在新的/干净的计算机上运行 v1.0.0.2 的 .application 文件,还是在其上安装了任何其他版本的应用程序的计算机上,都会发生这种情况。当我们运行 http://www.example.com/myApp/install/myApp.application 根文件夹中的 .application 文件时也会发生这种情况。

首先,对于 ClickOnce 部署,有没有比我们正在考虑的更好的方法来处理我们场景的版本控制?

第二,有没有办法通过访问旧版本的 Application Files 子文件夹中的 .application 文件之一来降级某人计算机上的应用程序版本?

我们已经查看了这篇博文 How can I roll-back a ClickOnce application? 以及许多其他博文,但没有一篇对我们有用,因为我们无法在计算机上启动 .application 文件。

0 个答案:

没有答案