需求:软件在安装时注册Flash10l.ocx文件,卸载时删除Flash10l.ocx,安装包工具:NSIS
问题:卸载Flash10l.ocx文件失败,文件可以重命名,拷贝,不能被覆盖,删除,delete(这里的delete包括手动删除,shift删除,cmd删除,你懂的!!)时提示“Access is denied” or “此文件正在被另一个程序使用”or“磁盘空间不足或被写保护”等错误信息
方法1:
1.将Flash10l.ocx文件拷贝到其他目录,直接删除;
2.若步骤1行不通,在步骤1的前提下,将文件拷贝回原文件夹,删除,如果还不行。。。。这个。。你人品就有问题了。。开玩笑。。
方法2:
1.右键“,【属性】--【安全】--“高级”--“更改权限”--“选中everyone,编辑”--“完全控制允许列打对号”,然后“确定”,“确定”,再”确定“,
2.想怎么delete就怎么delete;
NSIS 代码中实现方法:
在卸载时添加如下语句:
//因为执行批处理时,文件路径不能有空格,将文件改名剪切到%temp%目录中,为避免重名,所以使用guid命名
Rename $INSTDIR/Flash10l.ocx $%TEMP%/flash_D49FFBEB-D09D-497D-AFA4-468ABC48932F.ocx
//nsexe 执行cmd命令不显示窗口,
//ICACLS更改everyone用户权限为完全控制,我用的是win7操作系统,xp可能使用CACLS
NsExec::ExecToLog 'cmd.exe /c ICACLS $%TEMP%/flash_D49FFBEB-D09D-497D-AFA4-468ABC48932F.ocx /grant Everyone:F'
//删除文件
Delete $%TEMP%/flash_D49FFBEB-D09D-497D-AFA4-468ABC48932F.ocx
完了!!!希望能帮助大家,如果你有更好的方法,请不吝赐教,谢谢。