C# 从两个不同位置安装ClickOnce应用程序

C# 从两个不同位置安装ClickOnce应用程序,c#,.net-3.5,deployment,msbuild,clickonce,C#,.net 3.5,Deployment,Msbuild,Clickonce,我有一个使用.NETFramework3.5中的C#和ServicePack1开发的Windows窗体应用程序。可以基于开发数据库和生产数据库发布应用程序。我正在使用MSBuild社区任务发布我的应用程序。在将应用程序发布到不同的位置(即开发位置和生产位置)时,我不会遇到任何问题 问题: 将开发应用程序安装到我的计算机后,我无法安装生产应用程序。它给了我一个错误,说: 无法从此位置启动应用程序测试 因为它已从其他位置安装 问题:机器如何理解我正在尝试安装相同的应用程序?我假设它有某种应用程序I

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

问题:

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

    无法从此位置启动应用程序测试 因为它已从其他位置安装

  • 问题:机器如何理解我正在尝试安装相同的应用程序?我假设它有某种应用程序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>
    
    
    \\A\B\开发\
    数据源=SQL-DEV.company.com;数据库=测试;Uid=XYZ;Pwd=ABC;
    \\A\B\生产\
    数据源=SQL-PROD.company.com;;数据库=测试;Uid=XYZ;Pwd=ABC;
    
    应用程序的发布就像一个符咒,指向相关的数据库。我现在想做的就是能够在同一台机器上安装开发应用程序和生产应用程序,而不会出现任何错误

  • 问题:一次点击应用程序和另一个应用程序的区别是什么


  • 我要做的第一件事是转到Windows窗体项目的项目属性。在“发布”选项卡中,单击“选项”按钮,将“产品名称”更改为YourProductName\u Test或类似的名称,然后查看这是否允许您同时安装两个版本


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

    因此我终于想出了如何部署同一应用程序的不同版本。缺少应用程序清单文件

    在应用程序清单中添加deployment元素的deployment provider属性后,我可以从不同的位置安装我的应用程序。但这里的问题是它覆盖了以前安装的应用程序。对于这个问题,我遵循以下步骤来区分我的开发应用程序和生产应用程序


    现在一切都很好。:)

    我有一款名为ClickOnceMore(www.ClickOnceMore.net)的产品,专门为这种用途而设计。它的主要用途是自动生成ClickOnce部分


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

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


    我想我会把它贴在这里。

    这是我在发布dev和prod应用程序时首先尝试区分它们的事情之一。但是,这是行不通的。所以底线是必须更改组件名称和产品名称…是的。我必须更改程序集名称和产品名称以区分版本。我遇到的主要问题是安装程序根本不允许我安装第二个版本。介绍部署提供程序帮助我安装了它。似乎在编辑menifest后需要使用Mage.exe签名。