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

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

问题:

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

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

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

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

       \\A\B\development\ Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC;     \\A\B\production\ Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC;    

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

  3. 问题:一次应用程序与另一次应用程序的区别是什么?

所以我终于想出了如何部署同一个应用程序的不同版本。 应用程序清单文件缺少部署元素的deploymentProvider属性。

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

一切都很好。 🙂

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

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

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

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

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

我想我会把它发布在这里。