29

我想通过使用 heat.exe 来收获一个包含大量文件的文件夹。但我不想收集所有文件,而是想排除特定的文件扩展名,如“*.txt”或类似的东西。我怎样才能做到这一点?

4

3 回答 3

7

我认为目前唯一的选择是收集整个文件夹并对生成的 .wxs 文件(请参阅-t:<xsl>开关)应用转换以排除不需要的内容(在您的情况下为 txt 文件)。不过我没有尝试3.5版本的热度(根据3.0来判断),但我觉得这方面没有什么变化。

于 2010-09-17T14:30:27.437 回答
3

我不是这种模式的大力支持者。使用非确定性流程时如何确保变更控制?你怎么知道出现在目录中的文件真的应该在产品中发布,你怎么知道从目录中消失的文件不应该破坏构建?你怎么知道你违反了组件规则并产生了可服务性问题?

我曾经在 1990 年代做动态文件链接,因为它很“容易”,但我记得它咬过我很多次,从那以后我就再也没有做过。

我知道 Bob Arnson 曾经同意这个观点:

http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03420.html

但现在在 WiX 3.5 中,我开始看到支持动态链接的功能,我只是不明白为什么它们会那样做。我宁愿更新 WXS 文件并将其重新检入源代码控制,然后冒险将我的部署过程置于自动驾驶仪上。

于 2010-09-18T19:33:17.920 回答
2

我没有试图弄清楚如何从文件夹中获取选定的文件,而是使用构建前操作来仅使用我想要获取的文件填充文件夹。以下工作流程一直为我工作:

  1. 删除“文件”(如果存在)
  2. 创建一个“文件”文件夹
  3. 将文件复制到“文件”文件夹。我使用 robocopy 构建操作,它让我有足够的控制权来指定要包含或排除的文件。
  4. 收获整个文件夹。

我将其设置为有条件地运行收获操作,仅用于调试构建。发布版本是从我们的 TFS 服务器生成的,并使用源代码控制生成的 .wxs。在构建服务器上运行收获应该没问题,但这是一个额外的步骤,不运行它消除了Christopher Painter描述的“非确定性过程”问题。除了这一步之外,在构建服务器上执行的步骤与在我的开发机器上执行的步骤相同。

于 2014-06-17T13:30:15.767 回答