我需要在 programdata/test/example 中创建一个目录。在 WiX 中怎么做?
我需要在 programdata/test/example 中创建一个目录。在 WiX 中怎么做?
像这样定义文件夹:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder">
<Directory Id="TestFolder" Name="test">
<Directory Id="ExampleFolder" Name="example" />
</Directory>
</Directory>
</Directory>
重要的部分在于CommonAppDataFolder
Id,这是Windows安装程序已知的。您可以在Windows Installer Property Reference中找到已知系统文件夹的完整列表。
如果您将任何文件安装到该文件夹中,它将被隐式创建。如果没有,请通过像这样安装组件来强制创建:
<Component Id="CreateTestFolder" Directory="ExampleFolder" Guid="PUT-RANDOM-GUID-HERE">
<CreateFolder />
</Component>
在 <Product>
下,您可以输入:
<DirectoryRef Id="TARGETDIR">
<Directory Id="CommonAppDataFolder">
<Directory Id="CommonAppXXXX" Name="test">
<Directory Id="CommonAppYYYY" Name="example">
<Component Id="CreateProgramDataZZZ" Guid="ABC-ETC">
<CreateFolder />
</Component>
</Directory>
</Directory>
</Directory>
</DirectoryRef>
并在您的feature
中引用组件CreateProgramDataZZZ
。
这样设置目录的权限也可能会有帮助:
<CreateFolder>
<util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>
(代替<CreateFolder />
)
<Directory Id="DIR_ID" Name="DIR_NAME">
<Component Guid="GUID" Id="id" KeyPath="no" NeverOverwrite="no" Permanent="no" Location="local">
<CreateFolder>
<util:PermissionEx CreateChild="yes" CreateFile="yes" Delete="yes" Read="yes" ReadAttributes="yes" ReadExtendedAttributes="yes" ReadPermission="yes" Traverse="yes" GenericRead="yes" GenericWrite="yes" User="Everyone" />
</CreateFolder>
</Component>
</Directory>
error CNDL0205:具有Id“CommonAppDataFolder”的目录不是有效的根目录。
(以及关于每个产品只有一个根目录的更多信息)。我做错了什么? - noelicus