【发布时间】:2010-07-21 04:18:06
【问题描述】:
在 NSIS 安装程序脚本中,我有:
RMDir "$INSTDIR"
现在,如果用户将安装目录设置为C:\Program Files\Product,它可以正常工作,但是如果他们安装到更深的位置,例如C:\Program Files\Company\Product,RMDir 会删除“产品”而不是“公司”。我怎样才能让它删除每个空目录到根目录(不使用/r)......例如如果为空则删除 Product,如果为空则删除 Company,如果为空则删除 Program Files,等等?
编辑:我最终使用的功能:
# Delete empty directories recursively
var deleteDir
var dirLength
Function un.PathDeleteEmptyDirRecurse
ClearErrors
loop:
Sleep 50 ; Without a small delay here, the directory sometimes won't get removed
RMDir "$deleteDir" ; Remove the directory
IfErrors end
strlen $dirLength $deleteDir ; Store the length of the path
intcmp $dirLength 3 end end ; If the length of the path is <= 3 (e.g. C:\), we're at the root drive
GetFullPathName $deleteDir "$deleteDir\.." ; <path>\.. results in the parent directory of <path>
IfErrors end loop
end:
FunctionEnd
【问题讨论】:
标签: nsis