2

情况:我有一个 Windows 桌面应用程序,它连接到各种服务(一次一个)以执行各种调用。无论连接到哪个服务,我的应用程序都以相同的方式工作。它应该随时连接到哪个服务在 application.config 文件中定义。

为了在服务之间切换,我创建了几个 Windows .bat 文件,每个文件都将现有的 .config 文件替换为要使用的新文件(服务端点)。

对于所有这些,我创建了一个安装程序(一个 MSI,使用 Visual Studio 2010 中的“安装项目”模板)。此安装程序还创建以下快捷方式:

  1. 应用程序本身
  2. 第一个 .bat 文件(将配置文件设置为“默认”服务端点)
  3. 第二个 .bat 文件。(将配置文件替换为替代文件)

问题:每次我通过快捷方式运行这些(应用程序或 bat 文件)中的任何一个时,它们似乎都会在实际运行目标之前“重新评估”已安装的文件。只要我使用默认的 .config 文件,这没有问题,因为它就是这样安装的。但是,如果我已经运行了第二个 .bat 文件,并且正在尝试运行应用程序以便它连接到第二个服务,那么通过快捷方式启动应用程序会导致 .config 文件被还原,并且我最终连接到而是第一个服务。

我可以手动为 .bat 文件和应用程序本身创建自己的快捷方式,而且它们工作正常。但是,我希望这会自动发生,而不会弄乱对其他文件的任何更改。

任何想法将不胜感激!在此先感谢,
-Kjartan

4

2 回答 2

2

您的部署项目具有所谓的“广告快捷方式”。有几种方法可以禁用它们,请参阅以下链接:

http://social.msdn.microsoft.com/Forums/en/vssetup/thread/b57f1d84-9b0c-4c29-b140-0555f92ffed8

于 2011-06-06T11:34:24.153 回答
0

谢谢乔治。这有点烦人,我很惊讶默认情况下似乎没有禁用此功能的好方法。我想我会分享我们最终使用的解决方案,即使它并不完美:我们将从命令提示符运行安装程序并使用以下参数,从而生成“正常”快捷方式。

Setup.exe 禁用ADVTSHORTCUTS=1

这意味着我们不能让我们的用户像往常一样通过简单的双击来安装应用程序。然而,这确实意味着我们(程序员)不必在每次进行新部署时都使用某些外部工具来编辑生成的安装程序;一个可接受的权衡,因为这是一个内部唯一的应用程序。

再次感谢,
-Kjartan

于 2011-06-14T12:07:24.457 回答