具有不同部署标识但具有相同应用程序标识的多个ClickOnce安装

时间:2009-07-30 04:55:03

标签: clickonce

我们对同一个程序集进行了多次部署,并为不同的环境配置了不同的配置文件。我们将这些打包到具有不同部署标识(Program_ENV1,Program_ENV2等)的单独ClickOnce部署中。

Application Identity是针对所有这些的Program.exe,因为我们有一个第三方组件,要求使用它的可执行文件具有与其编译时相同的名称。

如果我们想在同一台机器上进行多次相同版本号的安装(用于测试),我们会在安装时遇到错误,即已存在具有相同应用程序标识的内容。

我们不希望为每个部署创建具有新版本号的单独版本(在版本X.X.X.45程序集上签署QA,而不是版本X.X.X.46)。

还有另外一种解决这个问题的方法吗?

5 个答案:

答案 0 :(得分:18)

要运行ClickOnce应用程序的并发版本,您必须更改AssemblyName,并且建议您还更改“发布”属性中的ProductName,以便在开始菜单中告诉哪一个是哪个。

Click here to see how to Install Multiple Versions Concurrently

答案 1 :(得分:3)

我最终使用 -u -Update 选项基于Production创建了一个新的QA部署。

以下是我测试验证的步骤

  1. 创建一个简单的WPF应用程序
  2. 将mage.exe复制到项目,因为Visual Studio无法在构建时解析它
  3. 在项目的后期制作
  4. 中添加了以下文字
      

    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站点运行相同的应用程序,每个站点都有一个与产品名称相对应的快捷方式。