ClickOnce部署到多个环境 [英] Clickonce deployment to multiple environments
本文介绍了ClickOnce部署到多个环境的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个WPF应用程序,我想通过ClickOnce将其部署给我们的用户。我们有四个环境,系统测试,用户测试,并行生产和生产。每个配置文件都需要不同的配置文件,其中包含特定于环境的服务器名称和其他内容,因此它们不能全部使用相同的代码库。大部分代码是相同的,但最终的包将略有不同,因为.config文件不同。
我发现我们在用户测试中安装了一个版本,比如说05版,然后他们进行测试,然后到了为他们提供下一个版本的时候,我们应该能够在用户测试Web服务器上放置一个更新的包,然后他们可以通过单击部署URL来更新他们的版本。但当他们这样做时,它会显示"具有相同身份的应用程序已经存在",我们必须通过控制面板卸载才能安装06版。这似乎是错误的,也不是ClickOnce的重点。您建议我如何构建此应用程序并将其部署到四个不同的环境中,以便在每个环境中,我们只需在服务器上放置一个新版本,而从该环境中测试或使用它的用户将只需下载更新,而无需卸载任何内容?
推荐答案
我自己已经找了一段时间了,我突然意识到我想出的最后一个解决方案其实就这么简单:
- Slow Cheetah用于根据选定的构建配置(例如调试/发布)转换配置文件
- 每个生成配置的属性组,其中包含项目文件中的特定单击一次项目属性(例如ProductName和Assembly Name(用于测试版本和Prod版本的并行安装)、InstallUrl)。
- 执行/Target:Publish时通过msBuild指定其他属性(如ApplicationVersion、MinimumRequiredVersion)
也许这对任何人都有帮助。请随时询问详细信息。
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屋!
查看全文