我正在使用Visual Studio 2010和免费版本的Installshield。该应用程序包含一个从Excel调用的ActiveX组件。在项目构建属性页面上选中“注册COM Interop”选项。当我在XP机器上运行安装时,dll没有注册。如果我手动运行regasm / tlb:命令,则应用程序可以运行。
问题: 1.如何通过installshield日志文件验证注册是否已运行? 2.如果注册失败,日志会显示什么样的错误消息? 2. installshield是否要求dll强名? (它不是) 3.还有其他疑难解答建议吗?
提前致谢,
居里
答案 0 :(得分:0)
以下是我处理这种情况的方法:
1)建立一个干净的操作系统。
2)安装软件。
3)使用注册表比较实用程序(如InstallWatch Pro)对注册表进行快照。
4)致电Regasm。
5)再次捕获注册表并创建增量。过滤掉无关的更改。
6)将这些更改发回InstallShield项目。重建并重复该过程以验证成功。
那么为什么会这样呢?我通常会发现它是Regasm中已知行为的结果。
当您设置COM Interop = true时,您告诉InstallShield调用regasm / regfile,然后在构建期间抓取该数据并将其创建到安装程序中。但是这里有一个问题:
(强调补充)
您可以使用/ regfile选项生成包含的.reg文件 注册表项而不是直接更改 注册表中。您可以通过导入更新计算机上的注册表 .reg文件与注册表编辑器工具(Regedit.exe)。 请注意 .reg文件不包含任何可以由其创建的注册表更新 用户定义的寄存器功能。请注意,只有/ regfile选项 发出托管类的注册表项。此选项不会发出 TypeLibIDs或InterfaceIDs的条目。