You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup卸载时无法删除{tmp}临时文件夹报错145如何解决

问题产生原因

错误码145对应Windows系统错误ERROR_DIR_NOT_EMPTY(目录非空无法删除),你的配置不生效有两个核心问题:

  1. 常量用错了
    {tmp}是Inno Setup专属常量,指向安装/卸载程序启动时,自身在系统临时目录下生成的随机命名的临时工作目录,专门用来存放安装卸载过程自身需要的临时文件,不是你应用运行时读写的系统TEMP目录。你写的{tmp}\MyTempFolder根本匹配不到应用运行时创建的那个MyTempFolder路径。
  2. 占用问题
    就算你真的在Inno自身的{tmp}目录下创建了MyTempFolder,当卸载流程执行到[UninstallDelete]段时,卸载程序本身还在运行,正占用着{tmp}目录下的自身运行文件,这时候删除该路径下的内容自然会因为文件锁定、目录非空失败。而且这个{tmp}目录本身就会在卸载流程结束后被Inno自动清理,完全不需要手动写规则删除。
正确实现方式
  • 替换为正确的路径常量:如果你的应用是在系统临时目录下创建的MyTempFolder,把{tmp}替换为{%TEMP},这个常量才对应系统环境变量%TEMP%指向的用户通用临时目录,同时加上recursesubdirs标记确保递归删除所有子内容,配置如下:
[UninstallDelete]
Type: filesandordirs; Name: "{%TEMP}\MyTempFolder"; Flags: recursesubdirs
  • 如果你的MyTempFolder不是存在系统临时目录,而是存在其他路径(比如用户数据目录、安装目录下),将Name字段替换为实际对应的路径即可,比如存在用户应用数据目录就写{userappdata}\你的应用名称\MyTempFolder。
  • 如果调整路径后仍然提示删除失败,先检查卸载时是否还有你的应用相关进程在后台运行、占用着目标文件夹里的文件,需要提前在卸载流程开头终止关联进程,再执行删除操作。

内容的提问来源于stack exchange,提问作者Fabii02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:54:21