Wix 资源收集工具“Heat”。如何获取具有动态名称的文件,例如构建时生成的 Microsoft 运行时文件
Posted
技术标签:
【中文标题】Wix 资源收集工具“Heat”。如何获取具有动态名称的文件,例如构建时生成的 Microsoft 运行时文件【英文标题】:Wix resource harvesting tool "Heat". How to harvest files with dynamic name like Microsoft run time files generated on build 【发布时间】:2020-01-20 16:29:31 【问题描述】:我有一个非常简单的问题,但由于 Wix 的限制,我似乎无法轻易找到答案,而且我对 Wix 还是很陌生。
问题是,如标题中所述,我无法制作在构建时生成的几个文件,并且这些文件的名称会根据操作系统运行时间(准确地说是 .Net Core)进行更改,然后手动进入产品.wix 文件和更改几个资源的名称。
文件示例
\obj\Release\netcoreapp2.2\win-x64\PubTmp\Out\mscordaccore_amd64_amd64_4.6.28207.03.dll".
版本 4.6.28207.03.dll 是动态生成的。
【问题讨论】:
【参考方案1】:您可以尝试获取outputs of your vs project,因为 dll 文件是您项目的输出。
heat project "MyProject.csproj" -pog:Binaries -ag -template:fragment -out project.wxs
您还可以尝试在您的主应用程序项目中添加构建后事件,以将这些文件复制到一个特殊位置并让 Heat.exe 从那里读取它们。你可以参考这个博客here。
在 azure devops 管道中,您可以尝试添加 copy file task 以将这些文件复制到 Heat 可以读取的特定位置。
【讨论】:
我想到了编写预构建步骤并运行脚本来收集文件。但在那种情况下,我在更新我的 Product.wxs 和 ProductFolderStructure.wxs 时仍然遇到问题。这也将是一些脚本,这不是一个简单的解决方案,因为我需要插入和更改诸如 Source、ID 等组件参数......但我从所有研究中看到没有更简单的方法以上是关于Wix 资源收集工具“Heat”。如何获取具有动态名称的文件,例如构建时生成的 Microsoft 运行时文件的主要内容,如果未能解决你的问题,请参考以下文章