如何在Wix中创建目录?

38

我需要在 programdata/test/example 中创建一个目录。在 WiX 中怎么做?

3个回答

74

像这样定义文件夹:

<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>

当我使用它时,我遇到了这个错误:error CNDL0205:具有Id“CommonAppDataFolder”的目录不是有效的根目录。(以及关于每个产品只有一个根目录的更多信息)。我做错了什么? - noelicus
@noelicus:在Windows安装程序中,顶级父目录必须始终为TARGETDIR。我会更新我的答案以澄清这一点。 - Wim Coenen
@WimCoenen 在wix安装程序的安装过程中,是否可以复制文件夹/文件1..到..文件5? - Royal
@Royal:评论不是提出新问题的正确方式。请在Stackoverflow上发布新问题。 - Wim Coenen
@WimCoenen 我已经在 Stack Overflow 上发布了新的问题,请帮忙解答:http://stackoverflow.com/questions/27020130/how-to-copy-folder-files1-to-files5-during-the-installation-of-wix-installer - Royal

17

<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 />


有人知道如何创建文件夹并将文件移动到同一个文件夹中吗? - Sudhakar Rao
请在User=上使用WIX_ACCOUNT_USERS,因为账户会在其他语言中更改。 - LeoPucciBr

1
这将为您创建文件夹...
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接