我正在编写WIX安装程序,我有以下要求:
在安装过程中,我需要将安装程序中包含的文件(称为A)的绝对路径传递给COM组件,该组件已存在于硬盘驱动器上,并且是另一个程序的一部分。我已经编写了一个适当的自定义操作,它需要一个文件A的路径。我不希望将A作为安装在Program Files文件夹中的文件包含在卸载过程中并删除。相反,我想将A只临时放在硬盘驱动器上,调用我的自定义操作,这将导致COM组件使用A的内容,然后从磁盘中删除A.有没有简单的方法来实现这一目标?
我试图利用二进制表并在那里存储A,但是我不知道如何使用绝对路径引用A.我知道我可以将A放在MSI文件之外,但我想在一个MSI中保留每个文件安装程序的需要。
任何帮助都将不胜感激。
答案 0 :(得分:8)
删除MSI安装的文件意味着MSI会认为它“已损坏”并尝试自动修复它(如果需要这样做)。这种情况会在几种情况下自动发生(例如,广告的快捷方式和COM注册),所以我建议不要这样做。把文件留在那里 - 它完成了它的工作,将它留在那里是没有害处的。
答案 1 :(得分:7)
我会采用这种方法。
将文件“A”安装到任何目录中。运行更新COM组件所需的自定义操作。然后运行另一个自定义操作或修改当前写入的操作以在文件不再使用后删除该文件。这将不会留下文件“A”的痕迹,如果您将自定义操作安排为仅在安装期间运行,则卸载时无需担心。