7

我正在编写 WIX 安装程序,我有以下要求:
在安装期间,我需要将安装程序中包含的文件(我们称之为 A)的绝对路径传递给 COM 组件,该组件已经存在于硬盘驱动器上并且是另一个程序的一部分。我已经编写了一个适当的自定义操作,它需要文件 A 的路径。我不想将 A 作为安装在 Program Files 文件夹中并在卸载过程中删除的文件包含在内。相反,我只想将 A 临时放在硬盘上,调用我的自定义操作,这将导致 COM 组件使用 A 的内容,然后从磁盘中删除 A。有没有简单的方法来实现这个目标?

我试图利用二进制表并将 A 存储在那里,但是我不知道如何使用绝对路径来引用 A。我知道我可以将 A 放在 MSI 文件之外,但我想将每个文件安装程序需要的文件保存在单个 MSI 中。

任何帮助,将不胜感激。

4

2 回答 2

8

删除 MSI 安装的文件意味着 MSI 将认为它“损坏”并在被要求时尝试自动修复它。这在几种情况下会自动发生(例如,广告的快捷方式和 COM 注册),所以我建议不要这样做。把文件留在那里——它已经完成了它的工作,把它留在那里没有害处。

于 2010-04-13T18:28:20.133 回答
7

我会采取这种方法。

将文件“A”安装到任何目录中。运行更新 COM 组件所需的自定义操作。然后运行另一个自定义操作或修改当前写入的操作以在文件不再使用后将其删除。这不会留下文件“A”的痕迹,如果您将自定义操作安排为仅在安装期间运行,您将不必担心卸载时的问题。

于 2010-04-12T19:31:32.113 回答