WISE - COM服务器注册选项“不注册”不起作用?

时间:2014-03-05 09:08:58

标签: delphi com wise

我明智地创建了一个安装程序,用于使用进程内(DLL)COM-Server的Delphi应用程序。 我在Wise项目中将DLL配置为“不注册”,但是在测试安装后它仍然被注册了?

enter image description here

这是WISE的“未记录的功能”还是我做错了什么?

是否有人针对此问题制定了解决方法或解决方法?

P.S。我不想注册DLL的原因是在目标PC上,COM服务器已经可以为具有特定设置(线程模型,路径等)的其他应用程序注册,我不想触摸它。

2 个答案:

答案 0 :(得分:3)

我试图避免这种情况变成“我应该使用什么工具”。也就是说,WiX / IsWiX是免费的开源软件,应该可以满足您的需求。 (这很难说是肯定的,因为我不知道这个MSI会有什么其他要求。)

那就是说,DLL是否已经注册了?您是在快照VM还是其他可重现的环境中进行测试,您可以100%确定它不是?

如果是这样,明智的脚本中是否有任何可能导致注册发生的其他操作。我没有意识到明智的错误/功能,但如果有,你就是SOL,因为该产品早已死亡,并且没有可用的支持或更新。

最后一点。你评论DLL可能已经存在并注册了......那就是DLL地狱。如果它不存在怎么办...现在你没有注册。在您希望获得高质量的安装体验之前,无论使用何种工具,您都需要解决一些设计问题。

答案 1 :(得分:1)

我找到了一个可能的解决方案或解决方法(可能因为我直到最后都不理解它,但它正在工作)。

COM DLL将在目标PC上注册,即使它标记为“不注册”,以防它在部署PC上注册。 解决方案:

  • 来自本地(部署)PC的未注册DLL
  • 将其从安装包中删除,保存(并编译)包
  • 将COM DLL重新添加到包中,用“不注册”标记,保存并编译。

执行这些步骤后,它按预期工作 - DLL未在目标PC上注册。

似乎这种情况正在发生,因为Windows安装程序广告(我仍然不能正确理解),但是从WISE文档我发现:

  

“如何捕获自我注册信息     添加.DLL时   或包含COM自注册信息的.OCX文件   安装,其扫描和注册信息   适当的注册表项将添加到安装中。这个系统   注册比让文件自我注册更健壮   安装时间因为它不依赖于其他的存在   目标计算机上的文件或.OCX或.DLL文件的程度   坚持自我注册惯例。“

出于这个原因作为额外措施,在上述步骤之前,我改变了WISE广告选项:

Wise > Tools > Options ... Advertising tab

选择Advertising Setting: Do not scan advertising information选项 未选中选项Automatically add self-registration


所有这些都是实际的解决方案,但是由于@Christopher Painter的反应,我在“ DLL Hell ”术语中被引入,特别是对于COM DLL,因此作为 LONG-TERM解决方案(透视)我会检查免费注册COM组件link)。