msi 安装程序中的“修复”选项有何用途?它的真正作用(内部)是什么?

1 windows-installer wix

我有一个使用 WIX 部署的软件包。当我安装后再次运行安装程序时,它提供了修复选项,它到底有什么作用?

Ste*_*mul 6

修复:如果问题是修复做什么,那么它会检查已安装产品的所有组件键路径,并安装可能由于某种原因丢失的任何组件。本质上,您的产品只是检查是否已完全安装,然后修复错误。

您应该注意修复意外重置注册表值时出现的一些问题。这里描述了这个问题以及 MSI 的许多其他常见问题(非常混乱的概述,但如果您看到您认识到的任何相关问题,也许可以浏览一下):如何避免 WiX / MSI 部署解决方案中的常见设计缺陷?


自我修复:您还可能由于WiX 源文件/MSI 输出文件中的设计错误而触发了Windows Installer 自我修复。

这是一个自行发生的修复,无需您再次运行安装程序 - 或从Add/Remove programs. 相反,它是通过某些“广告入口点”自动调用的,这些入口点会自动神奇地触发键路径检查。例如,启动广告快捷方式或调用 COM 类以及一些其他类型的操作的行为(请参阅链接内容)。

我已经写过很多次关于自我修复的文章,我只会链接到现有的答案。请先尝试最后一个(如何在您自己的包中避免它):

  1. 自我修复 - 解释
  2. 自我修复——寻找现实世界的解决方案
  3. 自我修复 - 如何避免在自己的包中出现这种情况

如果问题不是自我修复,那么您应该知道,当您再次运行安装程序时,出现修改/修复对话框是正常的,因为产品已经安装。这是正确的行为。


链接