Installshield 2018中的.NET托管dll自定义操作

时间:2018-09-12 12:52:32

标签: .net dll installshield custom-action managed

我正在使用Installshield 2018 Express版进行设置,我想包含一些在.NET中编码的自定义操作,但是我找不到在.NET中引用自定义操作的方法。我猜想Installshield可以有一个选项来引用要为该自定义操作调用的程序集,类和公共方法,但是我找不到任何这样做的选项。

¿有什么方法可以做到这一点?我宁愿使用dll而不是exe,并且必须处理命令行args等。

1 个答案:

答案 0 :(得分:1)

Express Edition :我不确定Installshield的Express版本是否支持自定义操作或Installscript(自定义操作脚本语言)? I don't think it does。实际上看起来确实没有,但是我没有这个产品。

选项 :我想您需要 1) 升级到更高版本, {{1} } 切换到其他产品,或者 2) 尝试自己将“(托管)自定义操作DLL”自己“注入”来自Installshield Express的已编译MSI。

WiX Votive :这将是“最佳猜测”,而无需尝试用于生产。如果使用WiX's Votive feature(WiX Toolset Visual Studio扩展)创建托管代码自定义操作项目,则该项目将使用DTF将托管代码捆绑在看起来像本机DLL的dll中的方法进行编译。这样产生的本机DLL应该可以整合或注入任何MSI软件包中(需要一些管道,需要摆弄一些小东西,但绝对不是火箭科学-如果您愿意的话,您会设法解决的。)

MakeSfxCA.exe:请注意,从WiX托管代码项目创建了两个dll。托管代码DLL,然后是带有附加CA的附加dll,附加到其相同名称的末尾。后一个CA版本是捆绑的本机DLL,它是您需要使用的版本。

插入CA DLL :我进行了快速测试,并能够将 WiX / DTF构建的DLL 注入制作的软件包中由另一种产品。您只需将DLL作为常规DLL自定义操作插入即可。这涉及将DLL添加到二进制表(有效负载),自定义操作表(自定义操作的配置)和InstallExecuteSequence或InstallUISequence表(或两者-取决于顺序)。后面的表定义了自定义操作的顺序(运行时)。

Orca,Direct Editor或CA View :如果Express版允许您定义自定义操作,请使用该方法并以这种方式添加DLL。如果它支持直接编辑器视图(表视图),则可以从那里开始。如果没有,带出Orca自己动手做。不是火箭科学,而是很多小细节,在您习惯之前就搞砸了。如您所知,这里有许多未知的地方-只是一个提示,可以帮助您真正地自助。希望我不要误入歧途。尽管可以凭经验在几分钟内完成,但是如果您必须采用“保险杠到保险杠的样式”,则很容易浪费一整天。

托管代码CA :尽管大多数目标计算机都已安装.NET版本,但托管代码自定义操作仍存在一些令人恐惧的问题。 。我会推荐使用本机C ++ DLL代替-如果可以的话。托管代码的问题集中在运行时依赖项(锁定,丢失,运行时损坏),运行时版本干扰(已加载.NET版本),GAC依赖项问题(由于混合Fusion,您不能依赖于将程序集安装到GAC中) / MSI提交模型),等等... WiX致力于实现最佳实践,所以我不确定这些问题的严重程度如何。