【问题标题】:How do you publish a ClickOnce Build to a CD with MSBuild如何使用 MSBuild 将 ClickOnce 构建发布到 CD
【发布时间】:2008-12-09 17:31:37
【问题描述】:

有谁知道如何在 MSBuild 中使用发布任务为 CD 创建 ClickOnce 发布?

VS2008 有一个“发布向导”,带有一个发布到 CD 单选按钮选项。它会在安装到适合刻录到 CD 的本地文件夹后发布点击。

我们遵循计划的 MSBuild 以及后处理步骤,在这些步骤中我们对其进行配置并将其安装到给定的环境中,并且我们希望有一种可编写脚本的方式来生成 ClickOnce 输出的 CD。

我已经能够使此过程适用于 Web 安装和文件共享安装,但似乎“发布向导”执行了一些我无法发现的隐藏步骤。

我想将发布对话框、发布向导、msbuild 发布目标、mage.exe 和 mageui.exe 中的各种属性关联起来。有些项目名称相同,有些项目在对话框和属性之间有所不同,有些项目可以在一个区域设置,但不能在另一个区域设置。

我可以看到自动化 ClickOnce 是可以做到的,但总的来说,它似乎是一种 GUI 技术,而编写脚本似乎违背了它的原则。

比尔

【问题讨论】:

  • 你能发布网络和文件共享发布命令行吗?

标签: clickonce


【解决方案1】:

此外,它似乎与在发布步骤的输出上运行 MageUi 有关。

如果我从命令行使用 MSBuild 发布,则如下所示:

msbuild  C:\myapp.vbproj /target:publish `
/property:PublishDir=c:\ClickOnce\ `
/property:SolutionDir=C:\trunk\myapp\ `
/property:TargetZone=LocalIntranet `
/property:MapFileExtensions=True `
/property:PublisherName='my publisher' `
/property:ProductName='myProduct' `
/property:BootstrapperEnabled=True `
/property:IsWebBootstrapper=False `
/property:GenerateManifests=True `
/property:ApplicationVersion=1.2.3.4 `
/property:Configuration=Debug `
/property:UpdateUrl=http://localhost/ClickOnce/ `
/property:UpdateEnabled=True `
/property:Install=True 

然后我创建一个可从 CD 安装的文件夹。

当我操作配置文件并将来自另一个进程的附加输出添加到发布文件夹,然后使用 MageUI 重新生成应用程序和部署清单时,我创建了一个基于文件的安装,该安装实际上是从 updateURL 安装的。如果我断开与 Internet 的连接,我会收到“无法连接到远程服务器”异常,因此它不只是检查更新,而是坚持从 Web 服务器安装。

【讨论】:

    【解决方案2】:

    好吧,我已经回答了我自己的问题。

    这是Http编码的问题!

    当您发布应用程序时,您最终会得到如下文件夹结构: C:\myApp\Application 文件\版本 1

    当您更改已发布应用程序的内容时(就像您想要替换配置文件时所做的那样),您必须重新签署应用程序和部署清单。

    当你这样做的时候,MageUi.exe HttpEncodes the "Location" of the application.manifest.

    所以现在,部署清单表明您的应用程序清单的本地文件路径类似于:Application%20Files\myApp_version\myApp.exe.manifest

    并且由于该路径不存在,它会导致所谓的基于 CD 的安装实际从 http: 更新服务器安装(如果存在),如果不存在则失败

    我们的解决方法是将“Application Files”重命名为“ApplicationFiles”。

    难以置信...

    【讨论】:

    • 您知道如何自动执行此操作吗?我遇到过类似的情况,其中网络服务器不允许我在其中包含带有空格的路径,如果我手动更改清单文件,您的解决方案就可以工作
    • 我们使用 Powershell 脚本自动执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多