2012-03-01 95 views
10

我有一个包含多个文件的目录,我想通过Wix项目将其包含在我的msi包中。将特定目录中的所有文件包含到msi包中

/database 
/database/migration11.txt 
/database/migration21.txt 
/database/migration32.txt 

这些文件通常更改或有添加新的,我不希望我的适应文件Wix每一个新移民文件。

基本上我想在我的wxs文件说,包括目录数据库中的所有文件,并在安装时将它们放在目录[INSTALLLOCATION]/database

任何方式来实现这一目标?

新增:

刚刚发现这个解决办法:use HEAT但我很好奇,如果有另一种推荐方式。

+1

热是一个相当推荐的方式。它是该工具集的一部分。还有一个名为Paraffin的外部工具(http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx)在社区中广泛使用。顺便说一句,你应该小心自动化。如果您不打算广泛地更改该文件夹的内容,则最好生成一次WiX文件,并将其包含到解决方案中,稍后在文件夹内容更改时对其进行修改。更多的手工工作,但更多的控制。权衡,像往常一样:) – 2012-03-01 12:34:36

+0

感谢您的评论。我以为不使用热,因为看起来[不建议在你的内置中自动使用](http://stackoverflow.com/a/5100898/220636)。但我会检查出来。 – nabulke 2012-03-01 12:39:11

+0

“不推荐==小心”在这种情况下。如果你有很多文件,你没有什么选择。正如我所提到的,它在某个时刻仍然是一种折衷。 – 2012-03-01 13:12:15

回答

13

您可以在wixproj文件中使用任务:

<ItemGroup> 
... Your wxs files ... 
<HarvestDirectory Include="$(variable)\YourDirectory\"> 
    <ComponentGroupName>CG_YOUR_GROUP</ComponentGroupName> 
    <DirectoryRefId>DIR_REFERENCE</DirectoryRefId> 
    <AutogenerateGuids>false</AutogenerateGuids> 
    <GenerateGuidsNow>false</GenerateGuidsNow> 
    <SuppressUniqueIds>true</SuppressUniqueIds> 
    <SuppressCom>true</SuppressCom> 
    <SuppressRegistry>true</SuppressRegistry> 
    <SuppressRootDirectory>true</SuppressRootDirectory> 
    <PreprocessorVariable>var.Property_Preprocessor</PreprocessorVariable> 
</HarvestDirectory> 
</ItemGroup> 

这个任务的生成过程中调用热火。希望这可以帮助你。

+1

感谢这个例子 - 我会试试看。 – nabulke 2012-03-02 08:19:05

+0

@nabulke完成了这项工作? – sirdank 2015-06-11 12:48:15

+0

请@nabulke你是我们唯一的希望!这是否工作? – gakera 2016-05-10 15:42:00

2

如果有人仍然需要这个,here是一个HarvestDirector与wixproj的示例。感谢DavidEGrayson

+0

这应该是一条评论。 – 2017-01-20 03:07:18

相关问题