This question already has answers here:
WIX Toolset include multiple files
(2个答案)
9个月前关闭。
我正在尝试使用WiX工具集安装.net项目。我的项目需要一堆具有特定文件夹结构的javascript文件,这些文件在编译解决方案后会通过后期构建事件复制到Release文件夹中。我读过所有文件都应该明确地写在WiX文件中,但是JS文件夹中有成千上万个文件。
我曾想过三种不同的解决方案,但是我不确定哪一种更好,或者是否有更好的方法:
在项目的构建后事件中,调用一个脚本,该脚本对包含JS文件的文件夹进行.zip压缩,仅向WiX项目添加一行以仅复制该文件,最后在程序开始时解压缩JS文件夹并删除zip(这将仅在第一次执行)。问题在于程序的首次执行将需要管理员权限。
创建一个新的exe来解压缩zip,并在WiX工具集生成的MSI的CustomAction中启动它。问题是,如果由于某种原因未执行此步骤,则该软件将永远无法启动,这与以前的方法相反,在以前的方法中,软件本身在每次启动zip时都会进行检查。
创建一个复杂的脚本,用每个JS文件和每个子文件夹填充WiX文件,并在构建后事件中触发它。
任何人都可以给出另一种选择,或者告诉我应该使用哪种选择?
(2个答案)
9个月前关闭。
我正在尝试使用WiX工具集安装.net项目。我的项目需要一堆具有特定文件夹结构的javascript文件,这些文件在编译解决方案后会通过后期构建事件复制到Release文件夹中。我读过所有文件都应该明确地写在WiX文件中,但是JS文件夹中有成千上万个文件。
我曾想过三种不同的解决方案,但是我不确定哪一种更好,或者是否有更好的方法:
在项目的构建后事件中,调用一个脚本,该脚本对包含JS文件的文件夹进行.zip压缩,仅向WiX项目添加一行以仅复制该文件,最后在程序开始时解压缩JS文件夹并删除zip(这将仅在第一次执行)。问题在于程序的首次执行将需要管理员权限。
创建一个新的exe来解压缩zip,并在WiX工具集生成的MSI的CustomAction中启动它。问题是,如果由于某种原因未执行此步骤,则该软件将永远无法启动,这与以前的方法相反,在以前的方法中,软件本身在每次启动zip时都会进行检查。
创建一个复杂的脚本,用每个JS文件和每个子文件夹填充WiX文件,并在构建后事件中触发它。
任何人都可以给出另一种选择,或者告诉我应该使用哪种选择?
最佳答案
要将文件添加到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
关于c# - 具有许多子文件夹和文件的WiX安装程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55002574/