PackageAs vsdpaDefault Permanent False ReadOnly False Register vsdrfDoNotRegister System False Transitive False Vital False 如果这很琐碎,请原谅我。我无法相信我无法让Google放弃答案。 :)
Windows Installer 是一种部署技术,其工作是安装指定的文件和注册表设置,并将它们保留在指定的安装位置,并确保它们是正确的版本-自我修复或弹性机制就是为此而设计的。然而,其操作与开发人员需要随时交换文件以进行调试、开发和测试的需求相冲突。
作为开发人员,您可能有兴趣部署您的MSI,然后在运行过程中删除或替换文件以进行调试。这种情况下,MSI可能会成为麻烦,因为它永远不会停止工作,并会重新安装正确的文件。这被称为“自我修复”,可能会非常令人烦恼! :-)
有很多方法可以解决这个问题,MSI非常复杂。由于“自我修复”通常是从"广告快捷方式"
调用的,避免此MSI功能的最简单方法是直接从文件系统启动EXE文件,而不是通过快捷方式启动。这将绕过大多数复杂EXE文件的MSI自我修复机制。您还可以在桌面上手动创建一个非广告快捷方式,它不会触发自我修复(右键单击可执行文件并同时按住右鼠标按钮,拖放到桌面上的空白处并释放按钮,然后单击“在此处创建快捷方式”)。
就记录而言,自我修复是由“自我修复入口点”触发的(这篇优秀的小文章已经消失了 - 也许如果您登录了仍然存在),用于关键路径验证。它们包括广告快捷方式
、文件扩展名关联
、文件MIME类型关联
、COM动词激活
(例如打开)、COM激活
(注册表)和直接调用Windows Installer
,甚至可能还有其他一些东西。
MSI广告。实质上,广告MSI安装程序没有被安装,而是在系统上注册,当通过“某种机制”(上面的入口点)调用时进行安装。
自我修复或弹性(官方名称)有很多要点,请查看{{link1:这篇关于自我修复问题的全面文章}},以找到解决您特定问题的方法。虽然这是一篇长文章,但如果您有自我修复问题,阅读它应该是值得的。
更新,2018年10月:
自我修复详细介绍:有关自我修复的更多信息:
链接:
REINSTALLMODE=amus
**(强制覆盖)是否会覆盖设置为“永不覆盖”的关键路径。我记得测试过,但不记得结果了 :-)。这就是当您没有把它写下来时会发生的事情。感谢分享您的提示! - Stein Åsmul