带有许多子文件夹和文件的 WiX 安装程序

WiX Installer with many subfolders and files

我正在尝试使用 WiX 工具集制作我的 .net 项目的安装程序。我的项目需要一堆具有特定文件夹结构的 javascript 文件,这些文件在编译解决方案后通过 post 构建事件复制到 Release 文件夹。我看过所有文件都应该明确写在WiX文件中,但是JS文件夹里面有几千个文件。

我想过三种不同的解决方案,但我不确定哪个更好,或者是否有更好的方法:

  1. 在项目的 post 构建事件中,调用一个脚本来生成包含 JS 文件的文件夹的 .zip,仅向 WiX 项目添加一行以便仅复制该文件和最后在程序开始时解压 de JS 文件夹并删除 zip(这只会在第一次完成)。问题是第一次执行程序需要管理员权限。
  2. 创建一个新的 exe 以提取 zip 并在 WiX 工具集生成的 MSI 的 CustomAction 中启动它。问题是,如果由于某种原因没有执行此步骤,软件将永远无法启动,这与以前的方法相反,软件本身每次启动时都会检查是否存在 zip。
  3. 创建一个复杂的脚本,用每个 JS 文件和每个子文件夹填充 WiX 文件,并在 post 构建事件中触发它。

任何人都可以提供另一种选择或告诉我应该使用哪个?

要将文件添加到 WiX,您需要使用 heat.exe 实用程序 (http://wixtoolset.org/documentation/manual/v3/overview/heat.html)

这是我在 PowerShell 中使用的示例

& "$env:WIX\bin\heat.exe" dir $sourceDir -ag -dr INSTALLDIR -srd -sfrag -suid -cg ProductComponents -out ProductComponents.wxs