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

问题描述 投票:0回答:2

我们有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自定义操作脚本时两个命令都不起作用

installation windows-installer installshield-2016
2个回答
0
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.