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

Posted

技术标签:

【中文标题】使用 WiX 自定义操作在安装文件夹中创建文件【英文标题】:Create file in installation folder using WiX custom action 【发布时间】:2014-07-17 16:30:38 【问题描述】:

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

为了写文件,我需要知道session["INSTALLDIR"]的安装目录,只有在执行动作"immediate"时才可用。

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

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

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

【问题讨论】:

是什么样的文件? 它实际上是一个 XML 配置文件 - 我已经发现了 util:XmlFile ;-) +1 有正确的想法... 【参考方案1】:

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

another answer

【讨论】:

谢谢 - 如果您是 WiX 新手,很难找到合适的问题放入搜索引擎...【参考方案2】:

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

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

【讨论】:

以上是关于使用 WiX 自定义操作在安装文件夹中创建文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹

向 WiX 安装程序添加自定义操作

WiX / SetupBuilder在vbscript中获取INSTALLDIR的值

WIX、引导程序或自定义操作

Wix 自定义卸载操作 - 如何在 msi 删除文件之前运行

WIX 中功能的自定义操作