问题:前段时间利用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文件或者要被删除的文件有只读属性,就会删除失败,导致卸载失败。