情况:我有一个Windows桌面应用程序连接到各种服务(一次一个)来执行各种调用。无论连接到哪个服务,我的应用程序都以相同的方式工作。它应该随时连接到哪个服务在application.config文件中定义。
为了在服务之间切换,我创建了几个windows .bat文件,每个文件都用现有的.config文件替换要使用的新文件(服务端点)。
对于所有这些,我已经创建了一个安装程序(MSI,使用Visual Studio 2010中的“安装项目”模板)。此安装程序还会创建以下快捷方式:
问题:每次我通过快捷方式运行其中任何一个(app或bat文件)时,他们似乎在实际运行目标之前“重新评估”已安装的文件。只要我使用默认的.config文件就没问题,因为这是它的安装方式。但是,如果我运行第二个.bat文件,并且我正在尝试运行应用程序以便它连接到第二个服务,那么通过快捷方式启动应用程序会导致.config文件被还原,我最终连接到相反,第一个服务。
我可以手动创建自己的快捷方式,包括.bat文件和应用程序本身,它们工作正常。我希望这会自动发生,但不会弄乱任何其他文件的更改。
任何想法将不胜感激!
提前谢谢,
-Kjartan
答案 0 :(得分:1)
您的部署项目具有所谓的“广告快捷方式”。有几种方法可以禁用它们,请参阅以下链接:
http://social.msdn.microsoft.com/Forums/en/vssetup/thread/b57f1d84-9b0c-4c29-b140-0555f92ffed8
答案 1 :(得分:0)
谢谢乔治。这有点烦人,我很惊讶默认情况下似乎没有一个好方法来禁用它。我以为我会分享我们最终使用的解决方案,即使它并不完美:我们将使用以下参数从命令提示符运行安装程序,从而生成“正常”快捷方式。
Setup.exe DISABLEADVTSHORTCUTS = 1
这意味着我们无法让用户像往常一样安装应用,只需双击即可。然而,它确实意味着我们(程序员)不必在每次我们进行新部署时使用一些外部工具编辑生成的安装程序;可接受的权衡,因为这是一个内部专用的应用程序。
再次感谢,
-Kjartan