当源.msi丢失时,我刚刚遇到了因产品修复/更新安装失败而臭名昭着的问题。 问题描述:
步骤#4失败,但是foo.msi在本地Windows Installer缓存中。 详情:http://www.itninja.com/question/the-msi-doesn-t-repair-when-the-install-source-is-removed-from-its-original-location-how-can-it-be-fixed
我想我有解决这个问题的方法。它基于在运行时使用Windows Installer源位置管理器API更改源位置列表值。
我打算创建以下内容的自定义操作(CA):
MsiSourceListAddSource()
函数传递路径到刚刚创建的临时目录。 DATABASE msi
属性值)的链接。如果链接创建失败,只需在临时目录中复制正在运行的MSI。在ResolveSource
序列InstallExecute
行动之前安排此CA,条件是这不是全新安装而不是产品卸载。
基本上就是这样。此外,我需要另一个CA,它将在CA#1之后进行清理。
我已经有了工作原型并且效果很好。问题:
MsiSourceListAddSource()
不起作用时是否存在任何极端情况?