ClickOnce部署到多个环境 [英] Clickonce deployment to multiple environments

查看:23
本文介绍了ClickOnce部署到多个环境的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个WPF应用程序,我想通过ClickOnce将其部署给我们的用户。我们有四个环境,系统测试,用户测试,并行生产和生产。每个配置文件都需要不同的配置文件,其中包含特定于环境的服务器名称和其他内容,因此它们不能全部使用相同的代码库。大部分代码是相同的,但最终的包将略有不同,因为.config文件不同。

我发现我们在用户测试中安装了一个版本,比如说05版,然后他们进行测试,然后到了为他们提供下一个版本的时候,我们应该能够在用户测试Web服务器上放置一个更新的包,然后他们可以通过单击部署URL来更新他们的版本。但当他们这样做时,它会显示"具有相同身份的应用程序已经存在",我们必须通过控制面板卸载才能安装06版。这似乎是错误的,也不是ClickOnce的重点。

您建议我如何构建此应用程序并将其部署到四个不同的环境中,以便在每个环境中,我们只需在服务器上放置一个新版本,而从该环境中测试或使用它的用户将只需下载更新,而无需卸载任何内容?

推荐答案

我自己已经找了一段时间了,我突然意识到我想出的最后一个解决方案其实就这么简单:

  • Slow Cheetah用于根据选定的构建配置(例如调试/发布)转换配置文件
  • 每个生成配置的属性组,其中包含项目文件中的特定单击一次项目属性(例如ProductName和Assembly Name(用于测试版本和Prod版本的并行安装)、InstallUrl)。
  • 执行/Target:Publish时通过msBuild指定其他属性(如ApplicationVersion、MinimumRequiredVersion)
不需要手动复制任何配置文件,因为速度慢的猎豹将处理此问题。Click Once包将在相应的构建配置的输出文件夹中创建(例如bin/Debug或您拥有的任何文件夹)。

最大的优点是构建与使用Visual Studio或使用MSBuild的自动构建相同(除了少数附加属性,它们是完全可选的)。要将其他环境添加到构建中,您只需创建新的构建配置和相应的慢速猎豹转换,并在项目文件中创建一个属性组。

整个设置至少可以与.NET 3.5(不能谈论早期版本)及更高版本一起工作。

也许这对任何人都有帮助。请随时询问详细信息。

ps:属性组如下所示(将它们放在定义默认ClickOnce设置的第一个属性组之后):

  <PropertyGroup Condition=" '$(Configuration)' == 'Demo' ">
    <AssemblyName>Com.MyApplication.Main.Demo</AssemblyName>
    <InstallUrl>http://demoserver/myapp/</InstallUrl>
    <ProductName>My Application %28Demo%29</ProductName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Test' ">
    <AssemblyName>Com.MyApplication.Main.Test</AssemblyName>
    <InstallUrl>http://testserver/myapp/</InstallUrl>
    <ProductName>My Application %28Test%29</ProductName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Prod' ">
    <AssemblyName>Com.MyApplication.Main</AssemblyName>
    <InstallUrl>http://prodserver/myapp/</InstallUrl>
    <ProductName>My Application</ProductName>
  </PropertyGroup>

这篇关于ClickOnce部署到多个环境的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆