0

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

在此处输入图像描述

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

有没有人有这个问题的解决方法或修复?

PS 我不想注册 DLL 的原因是,在目标 PC 上,COM 服务器可能已经为另一个具有我不想接触的特定设置(线程模型、路径等)的应用程序注册。

4

2 回答 2

3

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

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

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

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

于 2014-03-05T15:27:28.860 回答
1

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

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

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

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

似乎这是由于 Windows 安装程序广告(我仍然没有正确理解)而发生的,但是从 WISE 文档中我发现:

“如何捕获自注册信息当您将包含 COM 自注册信息的 .DLL 或 .OCX 文件添加到安装时,会扫描其注册信息并将适当的注册表项添加到安装中。这种注册系统更比让文件在安装时自行注册更强大,因为它不依赖于目标计算机上是否存在其他文件或 .OCX 或 .DLL 文件遵守自行注册约定的程度。”

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

Wise > 工具 > 选项 ... 广告选项卡

对于Advertising Setting:选定的Do not scan advertising information选项。
未选中的选项Automatically add self-registration


所有这些都是实际的解决方案,但感谢@Christopher Painter 的回应,我在“ DLL Hell ”术语中被介绍,特别是对于 COM DLL,因此作为长期解决方案(透视),我将检查COM 的免注册激活组件链接)。

于 2014-03-09T11:46:23.637 回答