每次我通过快捷方式打开它时都会安装WPF应用程序

时间:2015-05-21 10:02:45

标签: c# wpf visual-studio-2013 windows-7 windows-installer

我做了什么:

我创建了一个Visual Studio安装项目,为我的WPF应用程序创建安装程序。此安装程序创建用于安装应用程序的MSI。

我使用我的主项目创建了一个主输出,并为此创建了一个快捷方式。

应用程序安装成功。

问题:

当我单击桌面上创建的快捷方式时,我会在应用程序加载和启动之前获得以下屏幕:

  

标题:[申请名称]
  消息:请等待Windows配置[应用程序名称]
  装载栏标题:
  收集所需信息......   (后跟进度条和取消按钮)

这会占用不必要的时间。 应用程序在完成后开始并按预期继续。

如何防止这种情况发生,可能会出现什么原因?

PS:当我从程序文件中的exe中打开应用程序时,这不会发生。

2 个答案:

答案 0 :(得分:1)

这几乎总是发生,因为人们不知道如果他们安装文件(或注册表项)然后删除它,将使用广告的快捷方式触发修复。修复还有其他切入点,但快捷方式显而易见。尝试打败修复通常是没有意义的,因为还有其他事情可以促使修改已更改的产品。例如升级,补丁和用户右键单击MSI进行修复,或者从“程序和功能”进行修复。

另一个原因是安装程序将项目(例如文件或注册表项)安装到Everyone安装中的用户配置文件位置(例如用户数据)。它是为安装用户安装的,但不是为其他用户安装,因此修复将安装它。但是,对于每个新用户,您只能看到一次。

还有VS安装项目错误可能导致此问题。

在安装后防止修复要删除的文件的文档化方法是使文件的组件ID为空,VS设置不支持,因此您需要使用Orca或post-build之类的东西来执行此操作MSI脚本。请参见此处的ComponentId:

https://msdn.microsoft.com/en-us/library/aa368007(v=vs.85).aspx

请注意,Windows Installer团队建议无论如何都要使用MSI源,原因有很多,规则31:

http://blogs.msdn.com/b/windows_installer_team/archive/2006/05/24/605835.aspx

答案 1 :(得分:0)

Visual Studio安装项目作者公布了快捷方式,这是MSI用于确定是否需要修复的机制之一。它正在检测它是否需要并尝试这样做但是失败导致无限修复循环。请阅读:

Windows Installer launches unexpectedly, for no obvious reason

这将帮助您确定导致问题的组件。不幸的是,VS安装项目很安静,并且很难解决这个问题。我真的会推荐一个更好的工具集,如WiX,Advanced Installer或InstallShield。