为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_遁去的一_1 2020-02-02 14:27:30
我已经在Visual Studio 2008中创建了MSI安装程序包。问题是在安装后,如果我删除了任何已安装的文件,则会出现问题。这不是我的安装程序包的预期行为。我的文件安装属性是:PackageAs vsdpaDefault永久False只读False寄存器vsdrfDoNotRegister系统False传递False至关重要False如果这很琐碎,请原谅我。我不敢相信我无法让Google放弃答案。:)
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

Windows Installer是一种部署技术,它的工作是安装指定的文件和注册表设置,并将它们保留在指定的安装位置,并确保它们是正确的版本-为此目的,自我修复或弹性是一种机制。它的操作与开发人员即时交换文件以进行调试,开发和测试的需求相冲突。


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


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


对于记录,自我修复由“ 自我修复入口点 ” 触发,以进行密钥路径验证。它们包括公告的快捷方式,文件关联,COM注册表数据等。


自我修复或弹性是它的正式名称,还有很多其他内容,请查看这篇有关自我修复问题的综合文章,以找到解决特定问题的方法。这是一篇很长的文章,但是如果您有自我修复问题,则值得阅读。


查看完整回答
反对 回复 2020-02-02
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我知道我在这方面迟到了,但是我发现将'NeverOverwrite =“ yes”'添加到要在安装后修改的文件的组件定义中,会从撤消我的更改。

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


查看完整回答
反对 回复 2020-02-02
  • 3 回答
  • 0 关注
  • 648 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信