我正在使用Installshield 2018 Express版本来进行设置,我想要包含一些用.NET编写的自定义操作,但我找不到在.NET中引用自定义操作的方法。我猜Installshield可以选择引用为自定义操作调用的程序集,类和公共方法,但我找不到任何选项来执行此操作。
¿有没有办法实现这个目标?我更喜欢使用dll而不是exe并且必须处理命令行args等。
Express Edition:我不确定Installshield的Express版本是否支持自定义操作或Installscript(自定义操作脚本语言)? I don't think it does。事实上它看起来肯定没有,但我没有在我面前的产品。
选项:我猜你要么需要1)
升级到更高版本,2)
切换到不同的产品或3)
尝试将自己“注入”(托管)自定义动作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已经努力实施最佳实践,所以我不确定这些问题是多么糟糕才能完全诚实。