Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt WiX在运行heat时将子目录作为组件组_Xslt_Wix_Wix3.5_Wix3.7 - Fatal编程技术网

Xslt WiX在运行heat时将子目录作为组件组

Xslt WiX在运行heat时将子目录作为组件组,xslt,wix,wix3.5,wix3.7,Xslt,Wix,Wix3.5,Wix3.7,大家好,我的巫师们 **WXS File Result** <Wix> <Fragment> <DirectoryRef Id="INSTALLFOLDER"> <Directory Id="dir846546" Name="SubDir1"> ... </Directory> <Directory Id="dir846546" Name="SubDir2"> ...

大家好,我的巫师们

**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>
我想知道是否可能,如果可能的话,我可以去哪里学习如何做,在一个目录上运行heat,并让其中的每个目录都是它自己的组件组

**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>
例如:

**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
      • 副处长1
      • 副处长2
      • 副处长3
    • 副处长2
      • 副处长1
      • 副处长2
      • 副处长3
    • 副署长3
      • 副处长1
      • 副处长2
      • 副处长3
然后在VS2010项目的构建事件中运行heat命令(以下示例):

**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>
然后让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>
**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>

... 
... 
... 
... 
... 
... 
如果我的问题有任何困惑,或者如果有人有任何其他问题要问我,请让我知道。谢谢你,我期待着收到你的来信

**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>
编辑 使用以下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>
**XLST文件**

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

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

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

**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>
**WXS文件结果**
... 
... 
... 
... 
... 
... 

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

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

**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>
所需的只是在输出中附加几个组件组。通过在第一级目录上匹配,然后引用所有子代组件,生成组件组

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

有关类似问题的详细信息,请参阅XSL。

谢谢!这看起来像它会做什么,我需要它,但如果你可以看看更新的问题,让我知道这是我做错了,这将是非常感谢!您有一个拼写错误:DriectoryRef。我想你几乎完全想要我链接到的内容,但首先获得任何结果是获得正确结果的一个步骤好的,我做了更改,问题被更新以反映新文件现在你有了一个ComponentGroup,每个子目录1和兄弟,根据需要向功能元素添加ComponentGroupRef Id=“SubDir1”等。安装程序为组件安装文件时,会创建放置该文件所需的目录子树。组件已与具有热生成结构的目录关联。感谢所有帮助:-)
**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>