使用 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 / SetupBuilder在vbscript中获取INSTALLDIR的值