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

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


PackageAs vsdpaDefault永久False只读False寄存器vsdrfDoNotRegister系统False传递False至关重要False


如果这很琐碎,请原谅我。我不敢相信我无法让Google放弃答案。:)


qq_遁去的一_1
浏览 655回答 3
3回答

慕妹3242003

Windows Installer是一种部署技术,它的工作是安装指定的文件和注册表设置,并将它们保留在指定的安装位置,并确保它们是正确的版本-为此目的,自我修复或弹性是一种机制。它的操作与开发人员即时交换文件以进行调试,开发和测试的需求相冲突。作为开发人员,您可能有兴趣部署MSI,然后动态删除或替换文件以调试内容。在这些情况下,MSI可能会令人讨厌,因为它永远不会停止执行其工作,并且会重新安装正确的文件。这就是所谓的“ 自我修复 ”,可能会很烦人!:-)。解决此问题的方法很多,MSI相当复杂。由于通常通过“ 广告快捷方式 ” 调用“自我修复” ,因此避免此MSI功能的最简单方法是直接从文件系统而不是通过快捷方式启动EXE文件。除了最复杂的EXE文件外,这将绕过MSI自修复机制。您也可以在桌面上手动创建一个不公开的快捷方式,该快捷方式不会触发自我修复。对于记录,自我修复由“ 自我修复入口点 ” 触发,以进行密钥路径验证。它们包括公告的快捷方式,文件关联,COM注册表数据等。自我修复或弹性是它的正式名称,还有很多其他内容,请查看这篇有关自我修复问题的综合文章,以找到解决特定问题的方法。这是一篇很长的文章,但是如果您有自我修复问题,则值得阅读。

Smart猫小萌

我知道我在这方面迟到了,但是我发现将'NeverOverwrite =“ yes”'添加到要在安装后修改的文件的组件定义中,会从撤消我的更改。这几乎解决了我的自我修复问题。我将此添加到了MSI中的所有配置文件和批处理文件中。
打开App,查看更多内容
随时随地看视频慕课网APP