如何使用mage手动部署ClickOnce来检测更新?

时间:2014-10-24 17:02:15

标签: c# .net clickonce mage

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

  • foo.application
    • foo.exe的
    • foo.exe.manifest

我缺少什么让它自动更新,类似于Visual Studio中的ClickOnce发布?

2 个答案:

答案 0 :(得分:2)

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.

使用这意味着如果您自动增加构建#s,则每次构建新版本时都需要更新最低版本,但它会强制新启动的客户端进行升级。现有的开放客户端应用程序将通知用户更新,但不强制它们。

对于MAGE,您应该使用-mv开关指定当前版本是所需的版本。有关此事,请参阅Microsoft的documentation

答案 1 :(得分:0)

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

  1. 您不能每次都生成新的部署文件。您必须更新现有的。
  2. 您必须手动设置<beforeApplicationStartUp />节点,因为mage不支持此设置。
  3. 所以我最终做的是首先检查我的远程部署目录,看看我是否已经有部署清单,如果我这样做,我将它复制到我的构建服务器并调用mage -Update并提供使用-Version的新版本号。要强制更新而不是提示,您还必须提供-MinVersion并将其设置为与-Version相同的值。在签署更新的部署之前(如果尚未部署,则为第一个部署),我使用以下powershell更新了文件:

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

    有了这个,我终于让所有参数都正确,并且可以签署部署清单并将所有内容复制回来。