实际应用中遇到installShield2010制作的安装包在Win XP系统下安装十分快速,但在Win7系统下安装会在文件拷贝界面等待2-20分钟。
利用Win7的高级任务管理器的“分析等待链”功能查看
显示引起卡住的进程为 dotnetinstaller.exe,这个文件是installshield安装目录下自带的,从字面意义上就可以知道应该是用来安装.net环境的。
那我们再用windbg挂载到这个进程上去看看它到底在做些什么。
从堆栈上看出应该是在进行网络通信,卡住的原因应该是连接超时后反复连接。
再通过抓包看看网络通信内容
因为问题机器环境无网络连接,DNS请求全部失败。
至此,安装缓慢的原因已经找到,解决的方案就应该是屏蔽掉dotnetinstaller.exe进程。经过摸索发现只要在安装脚本中设置不再检测文件.net属性即可。
修改如下图。