品牌型号:惠普 Laptop 15
软件版本:InstallShield 2020
系统:Windows 10
不知道大家有没有遇到过这种情况:明明设置了自定义操作,比如安装后自动启动服务,可安装时却完全没反应,甚至直接导致整个安装包失败,排查起来更是一头雾水。接下来我们来带大家了解一下InstallShield自定义操作为什么执行异常,InstallShield Custom Action应怎样配置的相关内容。
一、InstallShield自定义操作为什么执行异常
对于这种情况,很大原因是自定义操作在安装过程中的执行时机、执行条件、权限环境、脚本逻辑等某一环节出了问题,导致它没有被触发、被系统拦截,或是执行时直接报错。下面我们一起来了解一下。
1、Custom Action有着严格的执行顺序。比如我们想在安装完文件后启动服务,结果把执行时机设成了【安装前】,这时候相关文件还没复制到位,服务自然无法启动,这也是新手最容易犯的错误。

2、很多自定义操作(比如修改系统目录文件、启动系统服务)都需要管理员权限。如果没有给安装包和Custom Action配置最高权限,系统会直接拦截,导致操作执行失败,甚至出现权限被拒绝的报错。
3、InstallShield的Custom Action支持多种类型,比如VB脚本、EXE程序、DLL组件等,不同类型的操作,配置方式也各不相同。

4、如果自定义操作需要传递参数,参数填写错误或遗漏,都会直接导致执行失败。另外,不少朋友习惯使用绝对路径,换到其他电脑后路径不匹配,文件找不到,操作自然无法运行。
二、InstallShield Custom Action应怎样配置
InstallShield Custom Action需要根据项目类型和操作类型选择对应的配置方式,下面以Basic MSI为例,讲解具体配置方法。
1、打开Basic MSI项目,找到自定义操作和序列选项,这里就是配置Custom Action的界面。点击Add Custom Action按钮,再根据自身需求选择对应的操作类型即可。

2、添加好Custom Action后,右键打开Properties属性面板,在Execution Scheduling里设置执行时机。这里要特别注意:如果操作需要用到安装文件,必须设置为After File Transfer,并且放在InstallFinalize之前。否则文件还没复制完成,操作必然执行失败。
3、在Release Wizard里,把required execute level改为highest available,保证安装包获取最高权限。再回到Custom Action属性,找到Execution Context,选择Elevated。如果是32位软件,记得勾选Run as 32-bit on 64-bit systems,避免因系统位数不兼容而出错。

4、另外在Basic MSI项目中,Custom Action默认会继承安装包的权限,一般不用额外设置,但一定要确认权限已经正常生效。
以上就是InstallShield自定义操作为什么执行异常,InstallShield Custom Action应怎样配置的全部内容了。如果在使用过程中遇到 Custom Action执行失败,可以按照前面的思路逐一排查,希望这份内容能帮到有需要的朋友。
