1

大家好,我的 WiX 同胞们,

我想知道这是否可能,如果可以,我可以去哪里学习如何做到这一点,在一个目录上运行 heat 并使该目录中的每个目录成为它自己的组件组。

例子:

  • 根目录
    • 子目录 1
      • 子子目录 1
      • 子子目录 2
      • 子目录 3
    • 子目录 2
      • 子子目录 1
      • 子子目录 2
      • 子目录 3
    • 子目录 3
      • 子子目录 1
      • 子子目录 2
      • 子目录 3

然后在 VS2010 项目的 Build Event 中运行 heat 命令(示例如下):

heat dir "Root Directory" -gg -sfrag -srd -dr INSTALLFOLDER -out MyWXS.wxs

然后让 WXS 文件的结构如下:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Fragment>
      <DirecotryRef Id="INSTALLFOLDER">
         <Directory Id="dir84156489" Name="Sub Dir 1"> ... </Directory>
         <Directory Id="dir84156489" Name="Sub Dir 2"> ... </Directory>
         <Directory Id="dir84156489" Name="Sub Dir 3"> ... </Directory>
     </DirectoryRed>
   </Fragment>
   <Fragment>
      <ComponentGroup Id="Sub Dir 1"> ... </ComponentGroup>
      <ComponentGroup Id="Sub Dir 2"> ... </ComponentGroup>
      <ComponentGroup Id="Sub Dir 3"> ... </ComponentGroup>
   </Fragment>
</wix>

如果我的问题有任何混淆,或者如果有人对我有任何其他问题,请告诉我。谢谢你,我期待收到你的来信。

编辑 使用以下 xslt 文件,我得到以下 WXS 结构:

**XLST File**

<?xml version="1.0" encoding="utf-8"?>

**WXS File Result**

<Wix>
   <Fragment>
      <DirectoryRef Id="INSTALLFOLDER">
         <Directory Id="dir846546" Name="SubDir1"> ... </Directory>
         <Directory Id="dir846546" Name="SubDir2"> ... </Directory>
         <Directory Id="dir846546" Name="SubDir3"> ... </Directory>
      </DirectoryRef>
   </Fragment>
   <wix:Fragment xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
      <wix:ComponentGroup Id="SubDur1"> ... </wix:ComponentGroup>
   </wix:Fragment>
   <wix:Fragment xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
      <wix:ComponentGroup Id="SubDur2"> ... </wix:ComponentGroup>
   </wix:Fragment>
   <wix:Fragment xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
      <wix:ComponentGroup Id="SubDur3"> ... </wix:ComponentGroup>
   </wix:Fragment>
</Wix>

无论我做什么,我都无法将目录创建为组件组......

4

1 回答 1

2

Heat 可以在发出其输出之前进行 XSL 转换。只需添加-t transform.xsl参数。

所需要的只是将一些组件组附加到输出中。通过在一级目录上匹配然后引用所有后代组件来生成组件组。

有关我对类似问题的回答,请参阅 XSL 。

于 2013-06-26T22:26:45.387 回答