【问题标题】:Installing a ClickOnce application from two different locations从两个不同的位置安装 ClickOnce 应用程序
【发布时间】:2011-07-16 01:41:46
【问题描述】:

我有一个在 .NET framework 3.5, Service pack 1 中使用 C# 开发的 Windows 窗体应用程序。该应用程序可以基于开发数据库和生产数据库发布。我正在使用 MSBuild 社区任务来发布我的应用程序。在将应用程序发布到不同位置(即开发位置和生产位置)时,我不会遇到任何问题。

问题:

  1. 将开发应用程序安装到我的机器后,我无法安装生产应用程序。它给了我一个错误说:

    您无法从该位置启动应用程序 TEST 因为它已经从不同的位置安装了

  2. 问题:机器如何理解我正在尝试安装相同的应用程序?我认为它有某种应用程序 ID。如果是这种情况,我可以根据位置覆盖相关值。 (开发或生产)

    在我的应用程序的项目文件中发布时的当前代码:

    <Choose>
        <When Condition=" '$(BuildEnvironment)' == 'DEV' ">
          <PropertyGroup>
            <PublishDir>\\A\B\development\</PublishDir>
            <BaseConnection>Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    
        <When Condition=" '$(BuildEnvironment)' == 'PROD' ">
          <PropertyGroup>
            <PublishDir>\\A\B\production\</PublishDir>
            <BaseConnection>Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    </Choose>
    

    应用程序的发布就像一个魅力,并指向相关的数据库。我现在想做的就是能够在同一台机器上安装开发应用程序和生产应用程序而不会出现任何错误。

  3. 问题:一次单击应用程序与另一次单击应用程序有何区别?

【问题讨论】:

    标签: c# .net-3.5 deployment msbuild clickonce


    【解决方案1】:

    所以我终于弄清楚了如何部署同一应用程序的不同版本。应用程序清单文件丢失deploymentProvider attribute of the deployment element.

    在应用程序清单中添加部署元素的部署提供程序属性后,我能够从不同位置安装我的应用程序。但这里的问题是它覆盖了以前安装的应用程序。对于这个问题,我按照this tutorial 来区分我的开发应用和生产应用。

    现在一切都很好。 :)

    【讨论】:

    • 在编辑清单后似乎需要使用 Mage.exe 进行签名。
    【解决方案2】:

    我有一个名为 ClickOnceMore (www.clickoncemore.net) 的产品,专为此类用途而设计。它的主要用途是自动化构建的 ClickOnce 部分。

    它完全支持宏扩展,例如允许您定义 DEV 和 PROD 版本。构建时,您可以定义要构建的环境,然后应用名称将反映这一点。有机会就去看看吧。

    【讨论】:

      【解决方案3】:

      我会尝试的第一件事是转到 Windows 窗体项目的项目属性。在“发布”选项卡中单击“选项”按钮并将“产品名称”更改为 YourProductName_Test 或类似名称,看看是否允许您并排安装两个版本。

      我从未尝试过,但我认为 ClickOnce 应用程序由“发布者名称”和“产品名称”值的组合唯一标识,如果是这种情况,这可能会解决您的问题...试一试.. .

      【讨论】:

      • 这是我在发布开发和生产应用程序时尝试区分它们的第一件事。但是,这行不通。
      • 所以底线是组件名产品名一定要改...
      • 是的。我不得不更改程序集名称和产品名称来区分版本。我遇到的主要问题是设置根本不允许我安装第二个版本。介绍部署提供程序帮助我安装它。
      【解决方案4】:

      我知道这是一个旧线程,但是在尝试更新和旧版本的程序时,我在 WPF 中遇到了同样的错误。我不得不卸载旧版本并重新运行单击安装程序,然后它就可以正常工作了。

      我想我会在这里发布。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-25
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多