在某些计算机上,"Windows Installer" 会从程序 运行 时加载的 C# 程序中再次检索

some computers, the "Windows Installer" is retrieved again from the C # program that was loaded when the program was run

我使用 VSI_bundle.exe 打包了一个 C# 应用程序,当它安装在某些 PC 上时,尝试 运行 该应用程序时出现以下消息。

Windows 安装程序 >>> "Please wait while Windows configures (Product Name)"

应用程序会 运行 正常,但是当我将其关闭并重新打开时,我又遇到了同样的情况。我怎样才能解决这个问题?

该消息对话框表示安装的产品已损坏,正在修复,与首次安装时不同。 Windows 事件日志(应用程序)将有一个 MsiInstaller 条目,说明有关 ProductCode 和缺少的组件的信息。

Windows 安装程序的一项功能是修复已删除的已安装项目,因此如果应用程序更改或删除文件或注册表项,则 Windows 将需要重新安装它们。这与转到“程序和功能”并对产品进行维修相同。

修复它取决于它修复的原因。例如,应用程序是否会删除文件或注册表项,如果是,为什么?

有时人们在安装 MSI 时将 DISABLEADVTSHORTCUTS 设置为 1 以防止快捷方式进行修复,但这并不能阻止所有修复,并且可能掩盖了应用程序正在删除所需文件的事实。

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

检查您的事件查看器以获取 windows 与安装程序相关的消息。大多数情况下,它会显示触发 Phil 提到的修复的组件 ID。获取此 GUID 并搜索您的安装程序或使用像 InstEd 这样的工具!打开 MSI 并在组件 table 中搜索 guid。

正如其他人所指出的,这似乎是 Windows 安装程序自行修复或 "resiliency" 的问题。

通过“advertised shortcut”(关于链接主题的优秀赛门铁克文章)启动您的应用程序将触发关键路径检查 供您的 MSI 确定您的产品是否已正确安装。在此过程中发现差异,并触发自我修复以安装缺少的内容。

有些情况下自行修复无法解决出入问题,一直重复无果。 本质上,您需要确定导致差异并因此触发修复的组件

也许你可以先试试Stefan Kruger的msifaq,它简洁并且切中要点Windows Installer launches unexpectedly, for no obvious reason.

我已经写了很多关于自我修复的文章,其中一个较短的答案可能是这个:Why does the MSI installer reconfigure if I delete a file?


为了将来参考,我添加了一些关于 Windows 安装程序自我修复或 "resiliency":

主题的链接
  • 自修复的综合解释,详细综合How can I determine what causes repeated Windows Installer self-repair?
  • 以解决方案为中心的自我修复描述,试图找到现实世界的解决方案
  • 开发者自行修复问题,第一时间避免问题(或许也试试这个,应该是快速阅读专为开发人员编写的)。