Com 是否可以让Windows Installer注册包装在32位组件中的64位外壳扩展?

Com 是否可以让Windows Installer注册包装在32位组件中的64位外壳扩展?,com,registry,windows-installer,Com,Registry,Windows Installer,我有一个InstallShield Basic MSI项目,它使用发布标志机制构建32位和64位安装程序,以构建具有正确模板摘要的不同软件包等。我的一个组件是explorer.exe外壳扩展,因此,为了使其工作,当安装在windows 64位上时,需要在注册表的64位节点中注册,而不是在WOW6432节点中注册。但是,由于这是Windows Installer的32位组件,因此它将被注册为32位组件,并进入WOW6432节点。InstallShield告诉我,这是Windows安装程序的本机行为

我有一个InstallShield Basic MSI项目,它使用发布标志机制构建32位和64位安装程序,以构建具有正确模板摘要的不同软件包等。我的一个组件是explorer.exe外壳扩展,因此,为了使其工作,当安装在windows 64位上时,需要在注册表的64位节点中注册,而不是在WOW6432节点中注册。但是,由于这是Windows Installer的32位组件,因此它将被注册为32位组件,并进入WOW6432节点。InstallShield告诉我,这是Windows安装程序的本机行为,除了自定义操作(我已经使用过)之外,没有其他方法可以解决这个问题

我必须求助于跑步运动吗?这就是我目前所做的,但是我不希望对类似的事情使用自定义操作。此外,其他产品似乎也有相同的模式:64位外壳扩展,但安装了程序文件(x86)。例如,我看到TFS Power Tools和WinZip正在这样做。对于这些产品,我看不到regasm.exe正在运行,所以我假设它们有其他机制来实现这一点


有什么想法吗

您是否尝试为该组件设置msidbComponentAttributesDisableRegistryReflection()属性?

可能我这里遗漏了什么,但是,您不能使用只包含32位扩展的32位安装和同时包含32位和64位扩展的64位安装来实现这一点吗?每个扩展都会转到WOW和本机注册表?这意味着您不能拥有公共源代码,除非IS版本允许您根据体系结构省略公共版本中的某些组件。问题是64位安装程序的目标是OFFICE 64位-这就是它与32位安装的区别。正在安装的应用程序不是100%纯64位的,而且它不能,因为它只安装第三方32位DLL。64位安装可以安装32位和64位组件。您的64位安装程序可以有一个带有32位Dll的32位组件和另一个带有64位版本Dll的64位组件,并将它们安装到各自不同的注册表和磁盘位置。32位系统得到32位安装,64位客户端得到64位biy安装。唯一禁止的是32位设置不能包含64位组件,因此如果这是您的问题,那么是的,这就是MSI的工作方式。否则我很明显还是遗漏了什么,对不起,是的。此属性对我没有帮助,因为我的组件是32位的。基本上,如果组件属性<256(我的这个属性为“0”),那么它将安装到wow6432node