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

Installshield 2018中的.NET托管dll自定义操作,.net,dll,installshield,custom-action,managed,.net,Dll,Installshield,Custom Action,Managed,我正在使用Installshield 2018 Express edition进行设置,我想包括一些在.NET中编码的自定义操作,但我找不到在.NET中引用自定义操作的方法。我想Installshield应该有一个选项来引用要为自定义操作调用的程序集、类和公共方法,但我找不到任何选项 有没有办法做到这一点?我更喜欢使用dll而不是exe,并且必须处理命令行参数等。快速版:我不确定Installshield的快速版是否支持自定义操作或Installscript(自定义操作脚本语言)。事实上,它看起

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

有没有办法做到这一点?我更喜欢使用dll而不是exe,并且必须处理命令行参数等。

快速版:我不确定Installshield的快速版是否支持自定义操作或Installscript(自定义操作脚本语言)。事实上,它看起来确实没有,但我面前没有这个产品

选项:我想你要么需要升级到更高版本,
1)
2)
切换到不同的产品,要么
3)
尝试从Installshield Express将一个(托管的)自定义操作DLL“注入”到编译的MSI中

WiX-voctive:这将是“最佳猜测”,但从未尝试过生产。如果使用(WiX工具集Visual Studio Extension)创建托管代码自定义操作项目,则该项目将使用DTF的方法进行编译,该方法将托管代码绑定到一个看起来像本机dll的dll中。这个生成的本机DLL应该可以滑流或注入任何MSI包(需要一些管道,有很多小麻烦,但绝对不是火箭科学-如果你选择的话,你会管理)

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

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

Orca、Direct Editor或CA View:如果Express edition允许您定义自定义操作,请使用该方法并以这种方式添加DLL。如果它支持直接编辑器视图(tables视图),您可能可以从那里进行操作。如果没有,就把奥卡带出来,自己动手吧。不是火箭科学,而是很多小细节,在你习惯之前都会弄糟。正如你所了解的,我这里有很多未知的东西——只是一个提示,帮助你真正自助。希望我不会把你引入歧途。虽然凭经验可以在几分钟内完成,但如果你不得不做“一辆接一辆”的话,很容易浪费一整天的时间

托管代码CA:有,尽管我们正处于大多数目标计算机安装.NET版本的阶段。我会建议使用一个本地C++ DLL,如果这是一个选项。托管代码的问题主要围绕运行时依赖关系(锁定、丢失、中断的运行时)、运行时版本冲突(加载了哪个.NET版本)、GAC依赖关系问题(由于混合了Fusion/MSI提交模型,您无法依赖安装到GAC中的程序集),等等。。。WiX一直致力于实施最佳实践,所以老实说,我不确定这些问题有多严重