Com InstallShield:达尔文描述符

Com InstallShield:达尔文描述符,com,dll,registry,installshield,regsvr32,Com,Dll,Registry,Installshield,Regsvr32,我的InstallShield安装程序似乎没有正确注册几个COM DLL,即使我已在安装程序中刷新了它们的COM信息。如果在安装后手动运行regsvr32,则一切正常 我注意到,在安装之后,我在注册表中为包含随机字符串的组件设置了InprocServer32值,我相信这些字符串是达尔文描述符,我知道这些描述符将覆盖明文路径位置(如果存在)。当我手动运行regsvr32时,这些达尔文描述符消失了。我目前的假设是,这些描述符中编码的信息是不正确的,因此当我的程序尝试实例化COM组件时,它使用了不正确

我的InstallShield安装程序似乎没有正确注册几个COM DLL,即使我已在安装程序中刷新了它们的COM信息。如果在安装后手动运行regsvr32,则一切正常

我注意到,在安装之后,我在注册表中为包含随机字符串的组件设置了InprocServer32值,我相信这些字符串是达尔文描述符,我知道这些描述符将覆盖明文路径位置(如果存在)。当我手动运行regsvr32时,这些达尔文描述符消失了。我目前的假设是,这些描述符中编码的信息是不正确的,因此当我的程序尝试实例化COM组件时,它使用了不正确的达尔文描述符信息,并且失败了,即使指向DLL的明文路径是正确的


有谁能告诉我,我该如何判断情况是否如此,解码这些描述符,停止InstallShield生成Darwin描述符,或者以其他方式修复我的安装程序吗?

我理解Darwin描述符是windows installer服务,跟踪COM入口点回到原始的.MSI(因此,如果删除了.dll,它可以修复它)。 MSI保存实际值


大概是因为您重建了COM信息,所以您是否已从计算机上卸载MSI并重新安装(因此msiexec不仅仅是进行维护安装,而不是完全安装)。

我理解darwin描述符是windows installer服务,跟踪COM入口点回到原始的.MSI(因此,如果删除了.dll,它可以修复它)。 MSI保存实际值


大概是因为您重建了COM信息,所以您是否已从计算机上卸载MSI并重新安装(因此msiexec不仅仅是进行维护安装,而不是完全安装).

你的意思是在我正在构建安装程序的机器上卸载MSI?这是一台与我正在安装安装程序的机器不同的机器,它是一台干净的Windows XP虚拟机。我也没有从中卸载MSI…我甚至不知道如何卸载MSI,尽管这在虚拟机上并不重要,因为我目前一直在测试干净。你是说在我正在构建安装程序的机器上卸载了MSI?这是一台与我正在安装安装程序的机器不同的机器,它是一台干净的Windows XP虚拟机。我也没有从中卸载MSI…我甚至不确定我是否知道如何卸载MSI,尽管这在VM上不重要,因为我目前一直在测试清洁的