为什么MSI安装程序重新配置,如果我删除一个文件?为什么MSI安装程序重新配置,如果我删除一个文件?

2019-05-12 09:01发布

我已经在Visual Studio 2008中的问题是,在安装后,如果我删除任何已安装的文件创建的MSI安装程序包。 这不是我的我的安装包预期的行为。 我的文件安装属性有:

PackageAs vsdpaDefault永久假只读虚假注册vsdrfDoNotRegister系统传递虚假虚假假命门

如果这是微不足道的,请原谅我。 我简直不敢相信我一直没能得到谷歌放弃了答案。 :)

Answer 1:

Windows安装程序是一种部署技术 ,它的工作是安装指定的文件和注册表设置,并保存在指定的安装位置,并确保他们是正确的版本-自我修复或弹性是一种机制来实现这一目标。 它的操作与开发人员的需要在飞行中进行调试,开发和测试交换文件相冲突。

作为开发人员,你可能有兴趣在部署您的MSI,然后删除或在飞行替换文件调试的事情。 在这种情况下,MSI可能是讨厌,因为它永远不会停止做的工作,并会重新安装正确的文件。 这就是所谓的“ 自我修复 ”,可以是壮观烦人! :-)。

有很多的方法来解决这个问题,微星是相当复杂的。 由于“自我修复”通常从“ 广告快捷方式 ”,以避免这种MSI功能最简单的方法调用是直接从文件系统,而不是通过一个快捷方式启动的EXE文件。 这绕过了所有,但最复杂的EXE文件的MSI自我修复机制。 您也可以手动在桌面上创建一个非宣传的快捷方式,将不会触发自我修复。

备案自我修复由“触发自我修复入口点 ”的关键路径验证。 它们包括标榜的快捷方式,文件关联,除其他事项外COM注册表数据。

自我修复 ,或弹性是它的官方名称多了很多,请在自我修复的问题,这种全面的文章要想方设法解决您的具体问题。 这是一个很长的文章,但它应该是值得的阅读,如果你有自我修复的问题。


UPDATE,2018年10月

自我修复说明 :比任何人想了解自我修复:

  1. 自我修复-解释
  2. 自我修复-寻找现实世界的解决方案
  3. 自我修复-如何避免它在自己的包

类似: 的Visual Studio 2015年微星构建启动另一个安装



Answer 2:

它的设计,被称为“弹性”: http://www.msifaq.com/a/1037.htm 。



Answer 3:

我知道我迟到对这个党,但我发现,加入“NeverOverwrite =‘是’”为那些旨在进行修改,在安装后的文件(S)的组件定义,从停止自我修复撤消我的变化。

这几乎已经解决了我的自我修复问题。 我已将此添加到MSI内的所有配置文件和批处理文件。



文章来源: Why does the MSI installer reconfigure if I delete a file?