我们有一个安装在Win XP和Win 7机器上的32位软件包。
我正在考虑的当前问题是,当安装软件包的一部分时,会写入注册表值以将软件包中的可执行文件添加到windows上下文菜单中。这些注册表值是wix片段的一部分,该wix片段是从作为进程的一部分的dll (即,可执行文件的dll )。
问题是,虽然它在windows xp embedded上工作,但在windows 7上,该应用程序不仅没有出现在上下文菜单中,而且它还破坏了一些东西,以至于“新建文件夹”选项从所有上下文菜单中删除。卸载应用程序不起作用,但可以通过从以下站点添加注册表设置来修复此问题:http://social.technet.microsoft.com/Forums/en-IE/w7itprogeneral/thread/97de8a2a-12f2-4381-a409-a78f4ae551cf
当然,当你安装一个新的版本时,它会再次被清除,作为开发人员,有时我们每天要安装和卸载5-6个版本。我已经确认它是那些特定的注册表设置,通过从安装程序中删除它们,并构建和安装它,“新文件夹”选项愉快地停留在它所在的位置。
所以我的问题是:为要添加到windows7上下文菜单中的32位应用程序/dll生成有效的注册表值会不会有问题?(为了完全公开,我使用的是win7 64位,但我们在32位的win7上也遇到了同样的问题,但我们还没有尝试过vista)
发布于 2012-02-21 05:06:00
Heat只是捕获在DllRegisterServer()调用期间写入的注册表项。如果您没有得到期望的注册表项,那么可以查看DllRegisterServer()代码,看看它在做什么。此外,您可能会发现,捕获注册表项一次,验证它们是否正确,然后不再使用heat.exe会更有用。
这是我首选的方法。
https://stackoverflow.com/questions/8033362
复制相似问题