NSIS安装程序不响应的解决

过节前,发现一个问题,NSIS写的安装程序在Window Server 2012环境下,在最后的配置阶段不能响应,占用CPU30~40%的样子。

当时有点一筹莫展,没有找到其他地方提到过遇到这类问题,而同样的程序在Windows 8下可以正常完成安装。

没有办法,只能一点一点地先查出大概问题出来哪个阶段、哪个函数,然后依次往下减可能出问题的地方。之前最严重怀疑的出问题的地方竟然不是,最终查出来是拷贝文件导致出现这个现象。这个结果完全没有预料到。

本来是怕调用ExeWait执行可执行程序出问题,但其实不是。不过在查用函数代替ExeWait时,查到了拷贝文件的不同方法:

出问题的方式是

CopyFiles "$INSTDIR\xxx" "$INSTDIR\xxx.cfg"

意思是把安装目录下的xxx文件拷贝为xxx.cfg。

改为另一种方式

nsExec::ExecToLog 'cmd.exe /c copy "$INSTDIR\xxx" "$INSTDIR\xxx.cfg"'

就不会出现安装程序死在那里的现象了。

 

虽然原因找到了,而且在一点一点把配置阶段所有的拷贝文件语句改成新的后,问题确实解决了。但是深层的真正原因我还是没有找到,并百思不得其解。

实际上,CopyFile在安装程序中依然使用着,只不过是在拷贝文件的阶段使用的。

差别可能包括,拷贝文件阶段拷贝文件是在该段中直接调用拷贝函数;而配置阶段对文件的拷贝操作是在几层函数调用后执行的,难道和这个有关系?可以再试验一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值