COM Server 库未由 Installshield 2015/2018 Express 注册



我为我的Delphi应用程序准备的安装程序项目曾经正常工作,因为它在目标计算机上正确复制并注册了COM服务器DLL。这是使用Installshield 2015 Express构建的。

运行安装程序的计算机或我在其上创建安装程序的计算机的 Windows 10 的最新更新似乎已破坏 COM 注册过程。

现在,当我构建时,它给了我一系列警告消息:

ISEXP:警告-4354:生成无法提取COM信息 从文件 C:\InstallShield 2018 Projects\Current\Server Libraries\COMServer.dll in component COMServer.dll.请确保 文件正在自行注册,并验证是否自行注册 进程不会失败。

运行安装程序后,通过检查注册表,我可以看到COM服务器DLL尚未注册,因为它们的CLSID信息丢失。如果我打开提升的命令提示符并使用regsvr32注册 DLL,那么它们就可以了。

我已经尝试了建议的"修复",例如更改IsCmdBld.exe的兼容性,以管理员身份运行IS,打开UAC(我从未关闭过(。

我看到的一条评论说我们需要在安装后运行自定义操作才能运行regsvr32,但我认为这就是安装程序中 COM 注册步骤的重点。

我还将项目升级到Installshield 2018 R2 Express,但遇到了完全相同的问题。

即使作为许可的注册用户,Flexera似乎也无法为我提供任何支持,只是将我指向社区论坛。在这种情况下,我更喜欢SO社区。

事实证明,安装InstallShieldWindows版本导致了这个问题。即使是最新的InstallShield 2019 Professional,COM库也存在同样的问题。

在我的 Windows 10 版本1903 上,我收到报告的错误,但在 Windows7Windows 10 版本 1607计算机上,没有发生错误。它适用于InstallShield 2015,20182019包括ExpressProfessional版本。

显然,Flexera需要共同采取行动,假设旧版本的程序(例如IsCmdBld.exe(在更高版本的Windows 10更严格的安全要求下可以正常工作。

最新更新