有些计算机,从程序运行时加载的C#程序中再次检索到“Windows安装程序”
我使用VSI_bundle.exe打包了C#应用程序,并且在某些PC上安装了以下消息在尝试运行应用程序时出现。有些计算机,从程序运行时加载的C#程序中再次检索到“Windows安装程序”
Windows安装程序>>> “请稍候Windows配置(产品名称)”
的应用程序将运行正常,但是当我将其关闭并重新打开,我又得到了同样的情况。我怎样才能解决这个问题?
正如其他人指出的,这似乎是Windows Installer自我修复或“弹性”问题。
启动通过“advertised shortcut”(好赛门铁克链接主题文章)的应用程序将引发关键路径检查您的MSI,以确定您的产品是否正确安装。在这个过程中会发现差异,并且会引发自我修复以安装缺少的内容。
在某些情况下,这种差异不能通过自我修复来解决,然后它会一直枉费。 基本上,您需要确定哪些组件导致差异,并因此触发修复。
也许你可以先尝试斯特凡·克鲁格的msifaq,它是简洁和给点:Windows Installer launches unexpectedly, for no obvious reason。
我已经写了关于自我修复的次数太多,较短的答案之一可能是这一个:Why does the MSI installer reconfigure if I delete a file?
以供将来参考我包括在Windows安装程序的自我修复或话题的一些链接“弹性”:
- 自我修复的全面的解释,详细和全面:How can I determine what causes repeated Windows Installer self-repair?
- 解决方案专注自我修复的描述,试图找到实际解决方案:What do I do when launching an application triggers repeating, endless Windows Installer self-repair?
- 自我修复问题对于开发商来说,避免这个问题摆在首位:How do I avoid triggering MSI self-repair with my WiX/MSI package?(也许尝试这一个了,应该是快速阅读和专门为开发人员编写的)。
消息对话框表示已安装的产品因损坏而正在修复,与首次安装时不一样。 Windows事件日志(应用程序)将有一个MsiInstaller条目说明关于ProductCode和缺少的组件。
这是Windows Installer的一项功能,它可以修复已删除的已安装项目,因此如果应用程序更改或删除文件或注册表项,则Windows将希望重新安装它们。这与去程序01功能并对产品进行修复是一样的。
修复它取决于它修复的原因。例如,应用程序是否删除文件或注册表项,如果是的话,为什么?
有时候人们会安装MSI并将DISABLEADVTSHORTCUTS设置为1以防止快捷方式进行修复,但这不能阻止所有修复,并且可能掩盖了应用程序正在移除所需文件的事实。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa368297(v=vs.85).aspx
检查您的事件查看器for Windows安装程序相关的消息。大多数情况下,它会显示触发修复的组件ID,菲尔提到。以此GUID并搜索您的安装程序或使用像InstEd这样的工具!打开MSI并搜索组件表中的guid。
会提示config/install没有完成,您应该阅读日志 – BugFinder