如何使用手动部署的ClickOnce使用镜像检测更新

本文关键字:镜像 检测 更新 ClickOnce 何使用 部署 | 更新日期: 2023-09-27 18:27:53

所以我按照这里的说明手动部署了clickonce应用程序,我终于开始工作了,但在增加修订号并重新部署后,我发现启动已安装的应用程序并不会自动更新到最新版本。目前,我部署的文件夹结构如下:

  • foo.应用程序
  • Foo
    • foo.exe
    • foo.exe.manifest

让它像Visual Studio中的ClickOnce发布一样自动更新自己,我缺少什么?

如何使用手动部署的ClickOnce使用镜像检测更新

1) Open your project's properties in Visual Studio
2) Go to the Publish item
3) Click the Updates... button
4) Check "the application should check for updates"
5) Check "Before the application starts"
6) Check the Specify minimum required version for this application and make sure that the minimum version is set.

使用这意味着,如果您自动递增内部版本#,则每次生成新版本时都需要更新最低版本,但这将迫使新启动的客户端升级。现有的开放式客户端应用程序将通知用户更新,但不会强制用户更新。

对于MAGE,您应该使用-mv开关来指定当前版本是所需的版本。请参阅微软关于此事的文档。

我想明白了。事实证明,你必须在这里做一些不同的事情:

  1. 不能每次只生成一个新的部署文件。您必须更新现有的
  2. 您必须手动设置<beforeApplicationStartUp />节点,因为mage不支持此设置

因此,我最终要做的是首先检查我的远程部署目录,看看我是否已经有了部署清单,如果已经有了,我会将其复制到我的构建服务器上,并调用mage-Update,并用-version提供新的版本号。要强制更新而不是提示,还必须提供-MinVersion并将其设置为与-Version相同的值。在签署更新的部署(或者第一个,如果你还没有部署的话)之前,我用以下powershell更新了文件:

$content = Get-Content ".'${assemblyName}.application"
$content | % { $_.Replace('<expiration maximumAge="0" unit="days" />', '<beforeApplicationStartup />') } | Set-Content ".'${assemblyName}.application"

这样,我终于可以更正所有参数,并可以签署部署清单并将所有内容复制回来。