为什么我的WiX安装程序需要一个空的CreateFolder有条件地更新Xml
TL; DR:为什么我需要一个空的< CreateFolder />元素在这个条件组件中,以使其工作?
我将一个简单的基于WiX的安装程序用于内部应用程序。此安装程序需要部署标准配置文件(正常的.NET .config文件),然后使用在命令行上传递给msiexec的属性来自定义它。 其中一个自定义是仅在已定义RUNTIME属性时创建特定应用程序设置。这里是WiX组件: <Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime" Guid="(71E6D273-427D-41FD-865A-FB55E9F0988C)"> <Condition> <![CDATA[RUNTIME]]> </Condition> <CreateFolder/> <util:XmlFile Id="X.Runtime.1" Action="createElement" ElementPath="/configuration/appSettings" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" Name="add" Sequence="2"/> <util:XmlFile Id="X.Runtime.2" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" ElementPath="/configuration/appSettings/add[[]not(@key)[]]" Action="setValue" Name="key" Value="RunTime" Sequence="3"/> <util:XmlFile Id="X.Runtime.3" File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]" ElementPath="/configuration/appSettings/add[[]@key='RunTime'[]]" Action="setValue" Name="value" Value="[RUNTIME]" Sequence="4"/> </Component> 这个工作就像我想要的 – 如果在命令行上为msiexec指定了RUNTIME,则创建新的元素;如果没有,没有发生。 为什么我必须有空的< CreateFolder />在这个组件? 在我试图让这个工作,我发现“Wix Condition Statement”,它显示了一个工作组件,但不解释为什么< CreateFolder />是必要的。 删除< CreateFolder />给我这个错误:
这是,我敢肯定,一旦你知道这是什么意思,相当信息。
每个组件都有一个关键路径;最常见的是一个文件。您的组件没有文件或其他键路径,因此WiX将其默认为目录。 Windows安装程序然后来了,说具有目录键路径的组件必须确保创建目录,即使其他事情将这样做。这是一个愚蠢的规则与一个容易解决。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |