我知道如何设置文件夹的权限: <DirectoryRef Id="ProgramFilesFolder"> <Directory Id="PHPFolder" Name="PHP"> <Component Id="PHP_comp" DiskId="1" Guid="*"> <CreateFolder> <Permission User="Everyone" GenericAll="yes" /> </CreateFolder> 不过,我需要的权限也适用于所有子文件夹。 这可能与列出所有的文件夹?
TL; DR :为什么在这个条件组件中需要一个空的 <CreateFolder/>元素才能使其工作? 我正在为一个内部应用程序组build一个简单的基于WiX的安装程序。 这个安装程序需要部署一个标准的configuration文件(一个普通的.NET .config文件),然后使用在命令行msiexec属性来定制它。 其中一种自定义是只有在定义了RUNTIME属性的情况下才创build特定的应用程序设置。 下面是这个WiX组件: <Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime" Guid="*"> <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,则会创build新元素; 如果没有,没有任何反应。 为什么我必须在这个组件中有空的<CreateFolder/> ? 当我试图得到这个工作,我发现“ WIX条件声明 ”,它显示了一个工作组件,但没有解释为什么<CreateFolder/>是必要的。 删除<CreateFolder/>给我这个错误: ICE18:组件的键path:“C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime”是目录:“INSTALLDIR”。 目录/组件对必须列在CreateFolders表中。 这是,我相信,一旦你知道这意味着什么,相当丰富。