问题标签 [heat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1300 浏览

wix - heat.exe 自动生成文件片段 - 每次构建?

我正在使用 heat.exe 生成 WiX 文件片段。

我通过在 Visual Studio 中向我的网站项目添加后期构建步骤来完成此操作,这样每次构建完成时,都会拾取 Web 项目中的任何新文件并创建新的 wxs 文件片段。这些文件片段被直接复制到 wix setup 项目中,这样当 setup 项目构建时,它将所有新添加的内容文件包含到 msi 中。

上次我注意到每次 heat.exe 重新生成 wxs 文件片段时,它都会创建新的 guid(但显然不是新的组件 ID)。

无论如何,我对 WiX/heat 很陌生,所以问题是 - 我是否应该每次都自动生成 wxs 文件,例如,当发布和安装/卸载新版本的网站时,这将如何影响生产中的事情?有什么理由我不应该在每个构建中自动生成并包含这些文件片段?

0 投票
3 回答
1019 浏览

iphone - 使用 cocos2d 应用程序降低功耗的可能性

我做了一个棋盘游戏,只包含一些小动画。我将 fps 从 60 降低到 30 以减少处理器负载。但是设备仍然很热。另一个没有使用 cocos2d 的应用程序不会对它进行太多加热。有什么方法可以让 iPhone 平静下来吗?设备状态如下:

  • Wifi 始终处于启用状态
  • 该应用程序使用游戏中心
  • GPS 未激活
  • fps 始终开启 30
  • 我使用 cocos2d-iphone 作为引擎
0 投票
1 回答
1357 浏览

com - 使用 WIX Heat(v3.5、v3.6)获取原生(x86 或 x64)COM Dll 的注册信息?

我有一个新的 C++/ATL DLL(x86 和 x64),我想将它包含在安装程序中,并希望 Heat.exe 可以节省一些精力。

0 投票
1 回答
1123 浏览

wix - 控制热生成的 WiX 片段中的代码库注册表项

我有一个 .NET 4.0 程序集,需要在安装过程中使 COM 可见。我正在使用 WiX(3.5 版),因此生成带有热量的 WiX 片段是合乎逻辑的选择。这很好用,除了我如何在加热时旋转旋钮,CodeBase RegistryValues 默认为“file:///C:/Windows/Microsoft.Net/assembly/GAC_32/...”,而程序集肯定不是安装在那个目录下。

因此,注册表项在安装过程中被正确添加,但指向一个不存在的程序集。不开心的一天。即使在最简单的用例(“heat asm.dll -out asm.wxs”)中,我也有这个问题。

到目前为止,选项似乎是:

这些选项都不是特别吸引人。有没有一种不涉及摆弄 XSLT 的自动化方法?

0 投票
1 回答
4463 浏览

path - 在 Wix 中设置 ComponentGroupRef 的目录?

我已经使用 Heat 工具根据要安装其内容的文件夹生成 wxs 文件。这给了我一个像这样的大文件:

在我的主要 Wix 文件 Product.wxs 中,我有一个引用上述由 Heat 创建的 ComponentGroup 的功能。该功能看起来像这样:

这是可行的,但是当我运行我的安装程序时,组件组中的文件被放置在 C 驱动器的根目录中(即 C:\DirectoryName),但我希望它们进入程序文件(例如 C:\Program Files\目录名)。

有任何想法吗?

谢谢,艾伦

0 投票
3 回答
5999 浏览

wix - 使用 Wix Heat 忽略 .svn 目录?

我正在使用 Heat 工具生成 Wix 标记,以便在我的设置中包含大量文件和文件夹。这工作正常,但我刚刚意识到,由于我将源文件夹添加到我的 Subversion 存储库,Heat 也希望包含 .svn 文件夹。

有没有办法告诉 Heat 不要收集符合给定条件的文件或文件夹?

我目前正在使用 Wix 3.5。

0 投票
2 回答
5755 浏览

wix - wix - 复制整个目录及其所有内容

我的 wix 安装程序需要将目录的内容复制到目标文件夹。我了解 Directory 元素具有 FileSource 属性。我试过这样的事情:

这不是从预处理器变量中提取文件或子目录。

有没有其他方法可以实现这一目标?

0 投票
1 回答
1897 浏览

com - 在 WXS 中,如何引用通过不同组件安装的文件?

这个问题是指 heat.exe 的输出。关于在 MSI 中为 COM 互操作注册一些 .NET 程序集,我正在尝试做“正确的事情”。Regasm.exe 是错误的

Rob Mensching 说,直接调用 regasm.exe 很简单,而且“大部分时间”都有效,但显然不是一个好主意。该博客文章解释了为什么这不是一个好主意,并提供了一个非常简单的解决方案。不幸的是,2004 年的帖子暗示了现在已弃用或不支持的 wix 功能。我猜,那里描述的解决方案不再有效,但该博客文章中提出的问题仍然存在。

显然,该问题的“正确”解决方案是运行 heat.exe,然后“修复”目录引用等。这听起来很简单,这就是我想要做的。

好的,所以我正在尝试做正确的事情。另外我不想 GAC 程序集,这意味着我必须使用codebase参数进行 COM 注册。heat.exe 的输出包括如下内容:

第一个问题:究竟是Value="file:///[#fil4B562083D141F5A2F29E28A1BD09AF3E]"什么?

在我看来,这fil4B562083D141F5A2F29E28A1BD09AF3E是一个由 Wix 生成的 Id;id 属于 .wxs 文件中的一个 File 元素,它指的是包含命名的 .NET 类的程序集 (DLL) 的路径。现在,那里的八爪鱼到底是干什么用的?方括号呢?和file:/// 前缀?帮助我理解这个语法。

我问的原因 - 我不想使用这个 ID。我已经有一个文件 ID,它反映了文件的实际含义,但事实并非如此。

但是有问题的文件安装在不同的组件中。当我尝试引用该文件时,我收到一堆此类错误消息:

我该如何解决这个问题?

我想我不想要File这个组件中的另一个元素,指的是同一个文件系统文件。它已经安装了不同的组件(相同的功能)。我怎样才能参考它?

基本上我想要一个类似的元素FileRef,但这显然不存在。

0 投票
1 回答
3206 浏览

asp.net - WiX (Votive) 项目参考 Harvesting (HEAT) 一个 ASP.Net Web 应用程序

我在做什么

我在 Visual Studio 2010 中有一个 ASP.Net Web 应用程序和一个 WiX 设置项目。我可以使用以下 HEAT 命令集显式收集 Web 应用程序作为设置项目的预构建事件:

“%WIX%\bin\heat.exe” 项目 "$(SolutionDir)Application.WebUI\Application.WebUI.vbproj" -o "$(ProjectDir)ProjectOutputContent.wxs" -pog 内容 -ag -template fragment -nologo -directoryid运行时文件夹

“%WIX%\bin\heat.exe” 项目 "$(SolutionDir)Application.WebUI\Application.WebUI.vbproj" -o "$(ProjectDir)ProjectOutputBinariesAndSymbols.wxs" -pog Binaries -pog Symbols -ag -template fragment - nologo -directoryid BINFOLDER

请记住,RUNTIME 文件夹和 BINFOLDER 是我在主要产品 WXS 文件中以声明方式设置的目录。

为什么我不喜欢它

这种方法很烦人,因为我需要先检查 HEAT 生成的片段 WXS 文件,然后才能构建安装项目。另一个考虑是它是一个 Web 应用程序,我需要将二进制文件和符号放到与内容不同的目录 (bin) 中。

我的目标是什么

我宁愿在 Wix 设置项目中使用项目引用,只需将 Harvest 属性设置为 True。然后我可以收集 BinariesContentSatellites 以在我的片段中获取我需要的项目,然后设置一个我可以在主要产品 WXS 中引用的目录 ID。问题是这会将内容、二进制文件和符号放在同一个文件夹中,我需要将后两者放在嵌套的 bin 文件夹中。我不能两次添加这个项目参考,每次都有不同的收获选项。

我的问题

有没有办法做我所追求的,或者我需要保持预构建事件?顺便说一句,我考虑过手动收集一次片段,没有构建事件,然后根据需要重新收集。我宁愿避免这种方法。

0 投票
0 回答
551 浏览

.net - .NET COM 互操作部署与 Wix 失败

我正在为 Internet Explorer 开发一个 .NET BandObject 工具栏。我正在处理 CodeProject ( http://www.codeproject.com/KB/cs/Issuewithbandobjects.aspx ) 的示例,一切正常,我正在使用 gacutil 和 regasm 来测试工具栏,并且工作正常。然后我开始使用 Wix 来测试实际部署并构建 msi 文件,这意味着切换到 Heat。

最初,我为各种 dll 创建了片段,并且手动将<... assembly=".net" ...>属性添加到各种 wxs 文件中,这一切正常。然而,为了进一步为部署做准备,我最终重命名了项目和 dll 文件名,从示例 2 dll 中更改了 GUID,然后,还尝试测试升级主要版本号。更改了 dll 后,我还使用 Heat 重新生成了 wxs 文件,手动添加了必要的属性。但是,现在工具栏不再在 IE 中加载,即使该选项在那里。它默默地失败了。

在检查注册表条目时,使用 OLEVIEW.exe ,我可以创建旧项目 dll 的实例并访问它的 COM 接口,该接口使用 gacutil 和 regasm 注册。但是,Wix 安装的文件无法加载,并出现以下错误:

我怀疑这是因为新的 COM 对象由于某种原因没有被 Wix 或 msi 安装过程正确注册。这是因为在比较 OLEVIEW 中的新旧 dll 时,新 dll 具有以下形式的注册表项:

旧的 COM 对象没有这些行。这表明即使它已安装到 GAC,它也没有正确注册。更令人困惑的是,以前可以使用的旧 msi 安装文件在安装后也会失败(所有以前的 Wix 版本都首先被删除)。

我很茫然。希望有人可以阐明情况。

最好的问候,丹尼尔。