2011-02-16 299 views
2

我想删除应用程序卸载时的Startmenu\XXX文件夹和Program Files\XXX菜单。NSIS:卸载时删除文件夹

尝试RMDir /r但这不适用于我。 (Windows 7)

+0

您可以发布您的代码吗? – Anders 2011-02-16 12:37:20

回答

3

这里是您的解决方案: 添加“SetShellVarContext所有”

http://nsis.sourceforge.net/Shortcuts_removal_fails_on_Windows_Vista

示例代码:

OutFile Win7.exe 
Name Win7 

Section 
    SetShellVarContext all 
    CreateDirectory "$SMPROGRAMS\Win7 Testing" 
    CreateShortcut "$SMPROGRAMS\Win7 Testing\win7test.lnk" "$WINDIR\notepad.exe" 
    WriteUninstaller "$EXEDIR\uninst.exe" 
SectionEnd 

Section uninstall 
    SetShellVarContext all 
    Delete "$SMPROGRAMS\Win7 Testing\win7test.lnk" 
    RMDir "$SMPROGRAMS\Win7 Testing" 
SectionEnd 

-joedf

2

偶尔的Windows不会让你删除的文件夹时,它仍然在使用。解决方案是在下一次系统重启时将文件夹(和/或文件)标记为删除。为此,使用标志/ REBOOTOK

对于文件:

Delete /REBOOTOK "<filename>" 

对于文件夹

RMDir /R /REBOOTOK directoryname 

下次重新启动后,文件/文件夹都将被删除。

另请参阅:http://nsis.sourceforge.net/Reference/RMDir