可以清除干净,不过这个貌似与程序设计关系不大,是与打包程序脚本相关
例如在windows下常用 InnoSetup 或者 NSIS 来制作安装包. 简单一点说打包脚本分为安装包生成和卸载两部分,
那么最终程序安装后会包括:
(1)写注册表/release版本程序目录(即按目录结构来载入exe/库/资源等)
(2)另外程序运行后会生成的文件(包括用户数据或者一些下载的等)
卸载部分大概类似下面这种语法:
Delete "$INSTDIR\Bin\cocoa.exe" #删文件
Delete "$INSTDIR\uninst.exe"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" #删注册表
RMDir "$INSTDIR" #删除目录,如果非空则删除失败
RMDir /r "$INSTDIR" #递归删除
那么无法删除干净的原因也就出来了:
(1)卸载脚本中没有完全指定程序所有的文件(指定所有文件名脚本会很长很长)或目录
(2)删除目录时未指写/r参数,目录可能删除失败
PS:
值得注意的地方是如果用户将安装目录直接丢在C盘, /r肯定会出事的.所以只对确定的程序子目录用/r,对最上一层$INSTDIR来讲就不要加了.
软件测试里可以叫卸载测试,打包脚本写好了搞干净是完全没问题的.