Wix heat.exe 在 Windows 7 32 位应用程序中为上下文菜单 dll 生成不正确的片段

发布于 2024-12-13 18:58:00 字数 809 浏览 2 评论 0 原文

这样我们就得到了这个32位软件包,可以在Win XP和Win 7机器上安装。

我当前正在考虑的问题是,在安装包的一部分时,会写入注册表值以将包中的可执行文件添加到 Windows 上下文菜单中。这些注册表值是 wix 片段的一部分,该片段是由属于进程一部分的 dll(即可执行文件的 dll)的热量生成的。

问题是,虽然它在 Windows XP 嵌入式系统上运行,但在 Windows 7 上,该应用程序不仅不会显示在上下文菜单中,而且还会破坏某些内容,从而从所有上下文菜单中删除“新建文件夹”选项。卸载该应用程序不起作用,但可以通过添加此站点中的注册表设置来修复该问题:http://social.technet.microsoft.com/Forums/en-IE/w7itprogeneral/thread/97de8a2a-12f2-4381-a409-a78f4ae551cf

当然,当您安装新版本时,然后它会再次被清除,作为开发人员,有时我们每天会安装和卸载 5-6 个版本。我通过从安装程序中删除它们并构建和安装它来确认这是那些特定的注册表设置,并且“新文件夹”选项很高兴地保留在原来的位置。

所以我的问题是:为 32 位应用程序/DLL 添加到 Windows 7 上的上下文菜单时生成有效注册表值的热量是否存在问题? (为了完全公开,我使用的是win7 64位,但我们在win7 32位上也遇到了同样的问题,但我们没有尝试过vista)

So we've got this 32-bit software package that is installed on both Win XP and Win 7 machines.

The current issue that I'm looking at is that when installing part of the package, registry values are written to add an executable in the package to the windows context menu. These registry values are part of a wix fragment that is generated by heat from a dll that is part of the process (ie. a dll of the executable).

The problem is that while it works on windows xp embedded, on windows 7, not only does the application NOT show up in the context menu, it also breaks something so that the "New Folder" option is removed from all context menus. Uninstalling the application doesn't work, but it can be fixed by adding the registry settings from this site: http://social.technet.microsoft.com/Forums/en-IE/w7itprogeneral/thread/97de8a2a-12f2-4381-a409-a78f4ae551cf

Of course when you install a new build, then it gets wiped away again, and as developers, sometimes we're installing and uninstalling 5-6 builds a day. I've confirmed that it is those particular registry settings by removing them from the installer and building and installing it, and the "New Folder" option happily stays where it is.

So my question is: is there a problem with heat generating valid registry values to write for a 32-bit application/dll to be added to the context menu on windows 7? (for complete disclosure, I'm using win7 64-bit, but we've had the same issue on win7 32-bit, but we haven't tried vista)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好久不见√ 2024-12-20 18:58:00

Heat 只是捕获在 DllRegisterServer() 调用期间写入的注册表项。如果您没有获得所需的注册表项,请查看 DllRegisterServer() 代码以了解它在做什么。此外,您可能会发现捕获一次注册表项更有用,验证它们是否正确,然后不再使用 heat.exe。

这是我的首选方法。

Heat simply captures the registry keys written during the DllRegisterServer() call. If you are not getting the registry keys you expect, then look at the DllRegisterServer() code to see what it is doing. Also, you may find it more useful to capture the registry keys once, verify they are correct then not use heat.exe any longer.

That's my preferred approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文