如何在 D 上的 Wix 中创建目录:

Posted

技术标签:

【中文标题】如何在 D 上的 Wix 中创建目录:【英文标题】:How to create a directory in Wix on D: 【发布时间】:2013-05-15 14:00:02 【问题描述】:

使用 WiX 3.7,我想出了如何在根目录中创建文件夹。这个

  <Directory Id="ReceivedFilesDir" Name="ReceivedFiles">
    <Component Id="ReceivedFilesComponent" Guid="84A264EF-2BC5-41e3-8124-2CA10C2805DB">
      <CreateFolder Directory="ReceivedFilesDir">
        <Permission User="Administrators" GenericAll="yes" />
      </CreateFolder>
    </Component>
  </Directory>

创建一个文件夹C:\ReceivedFiles

我希望它改为D:\ReceivedFiles

我如何做到这一点?

我玩过DiskId 属性,但它似乎没有做任何事情。

另外,我不想更改整个安装文件夹,安装的普通部分仍然会在C:\Program Files (x86)下面。我只想在D: 上创建其他文件夹。

【问题讨论】:

this 回答你的问题了吗? @JohnWillemse 不,因为我不想更改整个安装的位置。我想在C:\Program Files (x86)下面正常安装,但是我也想在D:下面创建一些文件夹 this 有帮助吗? @YanSklyarenko 我发现这个答案不清楚。究竟如何将DATA_FOLDER 的位置设置为D:? (您不能将Name 设置为D:,这是架构不允许的)WindowsVolume 设置有什么帮助? (默认情况下会在C: 上?) 【参考方案1】:

这是我们用于基本相同需求的解决方案:

<Directory Id="TARGETDIR" Name="SourceDir">

    <Directory Id="CROOT" Name="root">
        <Directory Id="MY_CROOT" Name="PLACE_HOLDER">
            <!-- Define C directory -->
        </Directory>
    </Directory>

    <Directory Id="TROOT" Name="root">
        <Directory Id="MY_TROOT" Name="PLACE_HOLDER">
            <!-- Define T directory -->
        </Directory>
    </Directory>
</Directory>

<CustomAction Id="SetCRootDirectory" Property="CROOT" Value="C:\" />
<CustomAction Id="SetTRootDirectory" Property="TROOT" Value="T:\" />

<InstallExecuteSequence>
    <Custom Action="SetCRootDirectory" Before="AppSearch" />
    <Custom Action="SetTRootDirectory" Before="AppSearch" />
</InstallExecuteSequence> 

如果您的安装利用了这一点,您可以将其添加到 UI 序列中。考虑到所有其余序列的定义方式,您可能需要将自定义操作之前的值设置为其他值。希望这有用。

【讨论】:

希望得到这个答案。我尝试使用 CROOT 但结果基本上是 D:\root\ 我无法让它工作。能否请您发布一个包含所有段的完整代码文件?

以上是关于如何在 D 上的 Wix 中创建目录:的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹

使用 WiX 自定义操作在安装文件夹中创建文件

在WIX中创建使用环境变量的文件夹的快捷方式

修复在 WiX 3.8 中创建的设置时出错

如何在 Azure 存储容器中创建目录而不创建额外文件?

如何使用 WiX 和 MSI 进行静默安装和卸载?