这是否可以修复缺少的源msi问题以进行修复安装?

时间:2017-01-28 17:04:22

标签: windows winapi wix windows-installer

当源.msi丢失时,我刚刚遇到了因产品修复/更新安装失败而臭名昭着的问题。 问题描述:

  1. 下载foo.msi。
  2. 运行foo.msi。
  3. 删除foo.msi。
  4. 运行msiexec.exe / f。
  5. 步骤#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):

    1. 创建临时目录。
    2. 调用MsiSourceListAddSource()函数传递路径到刚刚创建的临时目录。
    3. 创建临时目录中运行MSI(DATABASE msi属性值)的链接。如果链接创建失败,只需在临时目录中复制正在运行的MSI。
    4. ResolveSource序列InstallExecute行动之前安排此CA,条件是这不是全新安装而不是产品卸载。

      基本上就是这样。此外,我需要另一个CA,它将在CA#1之后进行清理。

      我已经有了工作原型并且效果很好。问题:

      1. 轮子重新发明了吗?是否已经有一些解决这种情况的WiX扩展?
      2. MsiSourceListAddSource()不起作用时是否存在任何极端情况?

0 个答案:

没有答案