C# 具有多个子文件夹和文件的WiX安装程序

C# 具有多个子文件夹和文件的WiX安装程序,c#,.net,wix,C#,.net,Wix,我正在尝试使用WiX工具集为我的.net项目制作一个安装程序。我的项目需要一组具有特定文件夹结构的javascript文件,这些文件在编译解决方案后通过后期构建事件复制到发布文件夹。我读到所有文件都应该显式地写在WiX文件中,但是JS文件夹中有数千个文件 我考虑过三种不同的解决方案,但我不确定哪一种更好,或者是否有更好的方法: 在项目的后期构建事件中,调用一个脚本,生成包含JS文件的文件夹的.zip,只向WiX项目添加一行,以便只复制该文件,最后在程序开始时解压JS文件夹并删除zip(这将仅在第

我正在尝试使用WiX工具集为我的.net项目制作一个安装程序。我的项目需要一组具有特定文件夹结构的javascript文件,这些文件在编译解决方案后通过后期构建事件复制到发布文件夹。我读到所有文件都应该显式地写在WiX文件中,但是JS文件夹中有数千个文件

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

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

  • 任何人都可以提供其他选项或告诉我应该使用哪个选项?

    要将文件添加到WiX,您需要使用
    heat.exe
    实用程序()

    这是我在PowerShell中使用的示例

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

    这里的答案可能有用吗?这是正确的答案,因为它还消除了卸载时再次删除文件的阻力,并可用于修复。选项1和2需要大量代码和复杂性。