我们在新的MSI中更新了一些文件夹,例如 Angular.min
到 Angular.min.1_5_19
其中包含一个 Anguar.min.js
.
创建了一个 MSP
补丁包来交付给客户。我们可以观察到目录名的变化,在 ORCA
关于申请 MSP
旧的 MSI
,还观察到了更新后的日志 msimsp.log
文件。
但安装后 MSP
在我的机器中,我们能够观察到新的js文件在旧文件夹中本身。新的文件夹既没有创建为空,也没有用新的名字替换旧文件夹。
Windows Installer有组件规则的概念,一个小的升级补丁能做和不能做的事情,以及需要大升级的事情。还有一个有用的属性叫做 MSIENFORCEUPGRADECOMPONENTRULES 导致安装程序失败,并且在你违反这些规则时回滚,而不是看起来完成了你要求的大部分工作,但不是全部。
在这种情况下,你可能是通过重新定义组件所属的目录而破坏了一个组件规则。 在补丁中做到这一点的方法是。
1) 保留旧组件的位置 将它标记为转义,并给它一个总是评估为false的条件。 这使得MSI在打补丁的过程中仍然可以正确地跟踪组件,并删除它和它的旧目录。
2) 为你的新目录创建一个新的组件。 这允许MSI安装新的组件和它的目录。