我们对同一个程序集进行了多次部署,并为不同的环境配置了不同的配置文件。我们将这些打包到具有不同部署标识(Program_ENV1,Program_ENV2等)的单独ClickOnce部署中。
Application Identity是针对所有这些的Program.exe,因为我们有一个第三方组件,要求使用它的可执行文件具有与其编译时相同的名称。
如果我们想在同一台机器上进行多次相同版本号的安装(用于测试),我们会在安装时遇到错误,即已存在具有相同应用程序标识的内容。
我们不希望为每个部署创建具有新版本号的单独版本(在版本X.X.X.45程序集上签署QA,而不是版本X.X.X.46)。
还有另外一种解决这个问题的方法吗?
答案 0 :(得分:18)
要运行ClickOnce应用程序的并发版本,您必须更改AssemblyName,并且建议您还更改“发布”属性中的ProductName,以便在开始菜单中告诉哪一个是哪个。
Click here to see how to Install Multiple Versions Concurrently
答案 1 :(得分:3)
我最终使用 -u -Update 选项基于Production创建了一个新的QA部署。
以下是我测试验证的步骤
cd“$(TargetDir)”
“$(ProjectDir)mage.exe” - 新应用程序-Name $(ProjectName)-p msil -TrustLevel FullTrust -Version 1.0.0.0 -FromDirectory。 -ToFile“。\ $(TargetFileName).manifest”
“$(ProjectDir)mage.exe” - 新部署 - 安装false -Name $(ProjectName)-p msil -Version 1.0.0.0 -AppManifest“。\ $(TargetFileName).manifest”-ToFile“。\ $ (的TargetName)。应用“
“$(ProjectDir)mage.exe” - 更新“。\ $(TargetName).application” - 安装false -Name $(ProjectName).QA -p msil -Version 1.0.0.0 -AppManifest“。\ $( TargetFileName).manifest“-ToFile”。\ $(TargetName).QA.application“
我需要通过 cd“$(TargetDir)”更改为“$(TargetDir)”,因为mage不会处理目录和文件路径正确的时候,我给它的路径包含用双引号括起来的空格。为了解决这个问题,我将当前目录设置为构建文件的位置。
第二行创建清单文件
第3行创建生产部署文件。
第4行从生产部署文件创建 QA 部署文件。 (注意:我正在将 QA 添加到部署文件和应用程序名称。)
第4行导致创建第2个应用程序文件。当两个应用程序都运行时,它们将具有相同的二进制文件,但每个应用程序的ApplicationDeployment.UpdateLocation将不同。一个将具有文件名$(TargetName).application,另一个将具有文件名$(TargetName).QA.application。在我的代码中,我可以使用它来确定运行应用程序的“版本”( QA 或生产)
答案 2 :(得分:1)
尝试使用MageUI。打开部署清单(扩展名为.application的清单)。从左侧列表中选择“名称”,然后编辑“名称”文本框。然后从列表中选择“描述”并编辑“产品”字段。这样,您就可以在开始菜单和添加/删除程序中区分不同的安装。
保存您的更改,重新签署清单,您应该好好去。
答案 3 :(得分:1)
Karg,如果您使用MageUI,您可以更改ApplicationIdentity并同时运行同一应用程序的多个已发布版本。
答案 4 :(得分:-1)
对于每个环境,请使用环境名称的后缀保留单独的程序集名称和产品名称。此外,为每个环境创建一个GUID,并将其添加到AssemblyInfo.cs,例如:
[assembly: GuidAttribute("FA380FBE-11B0-406E-88D3-AF40BE93F7D6")]
然后,可以从单独的ClickOnce站点运行相同的应用程序,每个站点都有一个与产品名称相对应的快捷方式。