在msi安装程序中使用Repair选项有什么用处?它(内部)实际上做了什么?

时间:2018-04-02 14:57:19

标签: wix windows-installer

我使用WIX部署了一个软件包。当我在安装后再次运行安装程序时,它提供了修复选项,它究竟做了什么?

2 个答案:

答案 0 :(得分:2)

修复 :如果问题是修复,则检查所有组件密钥路径安装的产品并安装可能缺少的任何组件 - 出于某种原因。实质上,您的产品只需检查完全安装,然后修复错误。

修复重置注册表值存在一些问题,您应该注意这些问题。这里描述了这个问题以及MSI的许多其他常见问题(非常混乱的概述,但如果您发现任何您认识到的相关问题,可能会有一些问题):How do I avoid common design flaws in my WiX / MSI deployment solution?

自我修复 :由于设计错误 Windows Installer自我修复 >在您的WiX源文件/ MSI输出文件中。

这是一种自行修复,无需您自己再次运行安装程序 - 或者从Add/Remove programs开始。相反,它是通过某些" advertised entry points"自动调用的。自动神奇地触发键路径检查。例如,启动advertised shortcut或调用COM类以及一些其他类型的操作(请参阅链接的内容)。

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

  1. Self-repair - explained
  2. Self-repair - finding real-world solutions
  3. Self-repair - how to avoid it in your own package
  4. 如果问题不是自我修复,那么您应该知道,当您再次运行安装程序时,获取修改/修复对话框是正常的,因为该产品已经安装。这是正确的行为。

答案 1 :(得分:-1)

@Stein Asmul的链接深入地解释了很多东西,简单地说,这就是MSI修复/自我修复所做的事情。如果您已编写MSI,则表示它包含多个features,并且每个功能都由多个components组成。简单的修复选项将每个组件的ID /主键与运行它的工作站的ID /主键进行比较。如果工作站上缺少某个组件ID /主键,它将重新安装该组件。

例如,如果我们有2个组件,则组件1安装abc.txt,组件2安装xyz.txt。修复将检查组件1和组件2的ID /主键,以确保它们存在于工作站/服务器中。如果它不存在,它将重新安装它。 @Stein Asmul的链接应该有更多细节,这是一个非常简单的简短回答。

相关问题