使用WiX自定义操作在安装文件夹中创建文件

时间:2014-07-17 16:30:39

标签: wix custom-action

我尝试创建一个安装程序,需要在安装后在程序文件夹中创建一个文件。为此,我创建了一个自定义操作,但现在我遇到了以下问题:

为了编写文件,我需要知道session["INSTALLDIR"]中的安装目录,该目录仅在执行操作"immediate"时可用。

但是,如果我在“安装文件”之后运行“立即”,则目标目录尚不存在。如果我运行“延期”,它就存在,但我无法访问session["INSTALLDIR"]

如果我在“InstallFinalize”之后运行“immediate”,我可以获取变量并且目录存在,但我没有被提升,因此不允许写入文件。

将文件写入安装目录的正确组合是什么?

2 个答案:

答案 0 :(得分:2)

您需要使用CustomActionData从延迟CA访问属性值。您需要this

之类的内容

another answer

答案 1 :(得分:1)

除了使用内置扩展来进行自定义操作而不是编写自己的操作之外,下一个级别是如何将复杂性/自定义操作移出安装程序?

一种想法是将其写入注册表。另一个想法是读取值的应用程序能够自己确定安装目录。一种可能性是获得该位置的另一种可能性是查询MSI API以了解产品的安装位置。