WiX在运行热量时使Sub-Dir成为组件组

时间:2013-06-26 20:32:59

标签: xslt wix wix3.5 wix3.7

大家好,我的所有WiX'ers,

我想知道是否可能,如果可以的话,我可以去学习如何做,在目录上运行热量并让每个目录都在它自己的组件组中。

示例:

  • 根目录
    • Sub Dir 1
      • Sub Sub Dir 1
      • Sub Sub Dir 2
      • Sub Sub Dir 3
    • Sub Dir 2
      • Sub Sub Dir 1
      • Sub Sub Dir 2
      • Sub Sub Dir 3
    • Sub Dir 3
      • Sub Sub Dir 1
      • Sub Sub Dir 2
      • Sub Sub Dir 3

然后在VS2010项目的构建事件中运行加热命令(下面的示例):

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>

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

1 个答案:

答案 0 :(得分:2)

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

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

查看我的answer的XSL以查找类似的问题。