我创建了一个Visual Studio安装项目,为我的WPF应用程序创建安装程序。此安装程序创建用于安装应用程序的MSI。
我使用我的主项目创建了一个主输出,并为此创建了一个快捷方式。
应用程序安装成功。
当我单击桌面上创建的快捷方式时,我会在应用程序加载和启动之前获得以下屏幕:
标题:[申请名称]
消息:请等待Windows配置[应用程序名称]
装载栏标题:
收集所需信息...... (后跟进度条和取消按钮)
这会占用不必要的时间。 应用程序在完成后开始并按预期继续。
如何防止这种情况发生,可能会出现什么原因?
PS:当我从程序文件中的exe中打开应用程序时,这不会发生。
答案 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。