RegAsm.exe无法通过installshield 2016注册Dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RegAsm.exe无法通过installshield 2016注册Dll相关的知识,希望对你有一定的参考价值。

我们有installshield 2016,在其中我们正在运行安装程序脚本。该脚本是通过自定义操作调用的。

所以我们写下以下命令注册“mydll.dll”如下面提到的命令,C: Windows Microsoft.NET Framework v4.0.30319 regasm.exe / codebase mydll.dll上面的命令在手动运行时工作正常通过具有管理访问权限的命令提示符。但是使用installshield脚本自定义操作创建的安装程序失败。

要运行命令,我们使用LaunchApplicationAndWait()和LaunchApplication()函数作为strcmd =“cmd.exe路径”+“cmd.exe”strcmdopt =“regasm.exe路径”+“regasm.exe”+ / codebase +路径和dll的名字

ret = LaunchApplication(strcmd,strcmdopt,windir,sw_normal,infinite,LAAW_OPTION_WAIT | LAAW_OPTION_SHELLEXECUTE)

类似ret = LaunchApplicationAndWait(strcmd,strcmdopt,LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN)

我的问题是为什么在运行installshield自定义操作脚本时两个命令都不起作用

答案

dll随安装一起分发吗?如果是这样,当调用脚本时,文件是否存在于installdir(或任何地方)?可能会添加一些msg框用于调试目的,以查看是否满足此条件。

我使用延迟自定义操作通过regasm注册.dll,它工作得很好。

另一答案

您不应该在安装期间调用Regasm。您应该将DLL作为密钥文件放在它自己的组件中,并设置COM Interop = True属性。这将导致InstallShield在构建期间执行regasm / regfile并获取输​​出并将其动态创作到Registry表中。在安装过程中,MSI将只复制文件并应用注册表项和完成。

注意:在regasm / regfile期间不会调用每个MSDN doco自定义函数,因此如果您在类中进行任何奇怪的自我注册,则需要将其编写到安装程序中。

以上是关于RegAsm.exe无法通过installshield 2016注册Dll的主要内容,如果未能解决你的问题,请参考以下文章

'RegAsm.exe' 不是内部或外部命令

regasm 无法定位输入程序集

来自VB6的.NET对象而不使用regasm.exe?

如何从 Visual Studio 命令提示符以外的命令行运行 regasm.exe?

Inno 安装 RegAsm.exe 错误

如何在没有 RegAsm.exe 的情况下注册类型库