【问题标题】:Wix & T4 : no "Custom Tool" optionWix & T4:没有“自定义工具”选项
【发布时间】:2011-04-06 22:05:30
【问题描述】:

我想使用 T4 生成一个片段,但在将 .tt 文件添加到 Wix 项目后,该文件没有“自定义工具”选项。右键单击 .tt 文件时,没有菜单项“运行自定义工具”。

这有什么技巧吗?我正在使用 VS 2010 和最新的 Wix 3.5

【问题讨论】:

标签: c# .net wix windows-installer t4


【解决方案1】:

我从来没有使用过 T4,更不用说 WiX,但是它的谷歌搜索出现了几个有趣的点击,包括最后一个问你在问什么,但没有人知道答案。

T4 template to generate Wix scripts to generate WCF MSIs in MSBuild

How to use MSBuild and Wix to create msi package...

[WiX 用户] 在 Visual Studio 2008 中 WiX 3.0 对 T4 模板的支持]3

【讨论】:

  • 好吧,至少我试图为海报做一些研究,而不是说一些粗鲁的话,比如“让我为你谷歌”。 T4 与 WiX 的问题是如此令人担忧,以至于任何人提供真正答案的机会都微乎其微,而且离开城镇的机会也微乎其微。
  • @Christopher 并不是那么晦涩难懂。在 WiX 中,每个包含的文件都必须手动引用,因此很自然地希望找到一种方法来自动执行此操作,而 T4 显然是首选。
  • @Hooligan,老实说,您花了 18 个月才发表此评论的事实表明,有人会对结合 WiX 和 T4 感兴趣是多么不安全。
  • +1 @BrianV 这一切都不是晦涩难懂的。这和我有同样的问题。 Visual Studio 中的大多数项目都支持运行 T4 模板。 WiX 项目没有。我的 WiX 项目将从中受益匪浅。如何做呢?不晦涩。
  • @Ronnie Overby 您可以尝试下面我的回答中的建议。这种方法有一些缺点,但在我看来,它比手动添加大量文件要好。
【解决方案2】:

不幸的是,Wix VS 项目系统不支持单文件生成器,因此您不会获得默认的 T4 体验。

你有几个选择。 Oleg Sych 的 T4Toolbox 提供了一些工具来运行针对其他项目的模板,因此您可以在一个项目中运行它们并将输出定位到您的 WiX 项目。

另外,T4 有一个简单的服务 API STextTemplating。您可以编写一个小型 VS 插件,在您的 Wix 项目中执行您想要的任何生成。

【讨论】:

    【解决方案3】:

    使用 Gareth 对 T4 工具箱的建议,我能够在 T4 模板中加载,但它没有按预期生成文件。

    我最终做的是使用我的模板创建一个存根 C# 类项目,并运行构建后命令将输出复制到 WiX 安装程序。下面是一个工作示例。

    WiX + T4 示例

    这是一个快速而肮脏的脚本,它遍历文件夹结构并包括除了排除文件中的所有内容之外的所有内容。对于逐个文件夹将文件添加到项目中,这至少是一个很好的起点。

    GetFiles.ttinclude - 遍历目录结构和维护文件列表的实用方法

    Files.tt - 生成 WiX 包含

    【讨论】:

    • Files.tt 每次运行 tt 时都会更改文件的 GUID。我相信那很糟糕。随着时间的推移,您会希望每个文件的这些 id 保持一致。
    • @Ronnie 我使用代码的方式是生成初始安装脚本,然后从那时起手动管理文件。每个文件都应该有一个唯一的 guid,如果要更新文件,您需要为新文件提供一个新的 guid,并确保删除旧文件。
    【解决方案4】:

    如果您在支持 T4 模板的同一解决方案中拥有(或可以创建)另一个项目,那么有一种简单的方法可以做到这一点。

    1. 在该项目的某处创建 T4 模板
    2. 在WIX项目中,添加输出文件as a link(右键项目,添加现有项,添加为链接)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2014-12-26
      • 2011-08-27
      • 1970-01-01
      • 2020-02-04
      • 2012-02-02
      • 2020-02-23
      相关资源
      最近更新 更多