0

我正在使用带有免费版 Installshield 的 Visual Studio 2010。该应用程序包括一个从 Excel 调用的 ActiveX 组件。在项目构建属性页面上选中“注册 COM 互操作”选项。当我在 XP 机器上运行安装时,dll 没有被注册。如果我手动运行 regasm /tlb: 命令,则应用程序可以工作。

问题: 1. 如何通过installshield 日志文件验证注册是否运行?2. 如果注册失败,日志会显示什么样的错误信息?2. installshield 要求 dll 是强命名的吗?(不是) 3. 有没有其他的故障排除建议?

提前致谢,

居里

4

1 回答 1

0

以下是我处理这种情况的方法:

1)建立一个干净的操作系统。

2) 安装您的软件。

3) 使用诸如 InstallWatch Pro 之类的注册表比较实用程序对注册表进行快照。

4) 调用 Regasm。

5) 再次捕获注册表并创建一个增量。过滤掉不相关的更改。

6) 将这些更改编写回 InstallShield 项目。重建并重复该过程以验证成功。

那么为什么这个坏了?我通常发现它是由于Regasm中的一个已知行为。

当您设置 COM Interop = true 时,您是在告诉 InstallShield 调用 regasm /regfile,然后在构建期间抓取该数据并将其创作到安装程序中。但这里有一个问题:

(重点补充)

您可以使用 /regfile 选项生成包含注册表项的 .reg 文件,而不是直接对注册表进行更改。您可以通过使用注册表编辑器工具 (Regedit.exe) 导入 .reg 文件来更新计算机上的注册表。请注意,.reg 文件不包含任何可由用户定义的寄存器函数进行的注册表更新。请注意,/regfile 选项仅发出托管类的注册表项。此选项不会发出 TypeLibID 或 InterfaceID 的条目。

于 2012-07-31T16:01:57.130 回答