NSIS安装包卸载问题(无法卸载nsis error launching installer)分析

探讨使用NSIS编写的卸载程序在多次安装卸载后无法正常工作的现象。卸载过程中,程序试图创建临时文件用于自删除,但因权限或文件状态问题导致失败。

问题:前段时间利用NSIS写的卸载程序,但是,经过多次的安装卸载以后发现,无法无法卸载程序了.所有利用NSIS生成的卸载程序都无法卸载

卸载过程描述:NSIS卸载程序每次卸载的时候,先是拷贝自己到一个临时文件夹C:/Documents and Settings/userXXXXX/Local Settings/Temp/~nsu.tmp/
名字一般是Au_.exe,或者是Bu_.exe,。。。一直可以到Zu_.exe。假设上一步骤生成的是Au_.exe.然后uninstall.exe调用Au_.exe _?=$(path),注意_?=$(path)为Au_.exe的参数,&(path)为uninstall所在的的文件夹。意思是把当前目录设置为uninstall所在的文件夹。
NSIS这么做主要是利用Au_.exe最后来删除自己。
其中有个细节就是删除程序运行开始会先生产一个临时的文件,名字是Au_.exe,,,,,,,Zu_.exe。
规则如下:
uninstall.exe先是尝试删除上面提到的临时目录下已经有Au_.exe,Bu_.exe,,,,,一直到Zu.exe的文件,然后去生成一个Xu_.exe,X为A~~Z的字母,优先级从高到低。

若无法生存*u.exe文件或者要被删除的文件有只读属性,就会删除失败,导致卸载失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值