nsis 卸载程序不会删除链接

Posted

技术标签:

【中文标题】nsis 卸载程序不会删除链接【英文标题】:nsis uninstaller doesn't remove links 【发布时间】:2013-02-10 18:31:01 【问题描述】:

我有这个问题: 在安装程序部分我有这个;

Section "Start Menu Shortcuts"
    SetShellVarContext current
    CreateDirectory "$SMPROGRAMS\myProgram"
    CreateShortCut "$SMPROGRAMS\myProgram\myProgram.lnk" "$INSTDIR\myProgram.exe" 
    CreateShortCut "$SMPROGRAMS\myProgram\Uninstall myProgram.lnk" "$INSTDIR\myProgram-Uninstall.exe"
SectionEnd

Section "Desktop Shortcut"
    SetShellVarContext current
    CreateShortCut "$DESKTOP\myProgram.lnk" "$INSTDIR\myProgram.exe"
SectionEnd

它工作正常,我在桌面上有图标,在开始\程序...树上有图标和卸载图标

卸载程序部分是这样的:

SetShellVarContext current
Delete "$DESKTOP\myProgram.lnk"
Delete "$SMPROGRAMS\myProgram\myProgram.lnk"
Delete "$SMPROGRAMS\myProgram\Uninstall myProgram.lnk"
RMDir "$SMPROGRAMS\myProgram"

桌面链接已被删除,但包含链接的其他文件夹没有.. 有什么想法吗?

存储的文件夹是这个(我在win 7 64位)

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

【问题讨论】:

【参考方案1】:

你的脚本中有RequestExecutionLevel 吗?如果没有它,Windows 可能会使用您的快捷方式执行一些compatibility hacks。

如果这没有帮助,请尝试Process Monitor,它也许可以解决这个问题...

【讨论】:

谢谢!我已经添加了 RequestExecutionLevel 管理员,现在可以工作了……如果我的当前用户是管理员的话……谢谢 我不知道为什么“RequestExecutionLevel admin”对我不起作用,但“SetShellVarContext all”对我有用... @Sorayuki 它应该防止兼容性垫片启动,但不会删除可能已经存在的兼容性快捷方式......

以上是关于nsis 卸载程序不会删除链接的主要内容,如果未能解决你的问题,请参考以下文章

NSIS 卸载程序权限级别

我的 NSIS 脚本的卸载没有从 ProgramData 目录中删除链接

如何用Inno编译卸载时删除整个文件夹

[转]NSIS 制作安装包无法创建桌面快捷方式或无法删除开始菜单项

NSIS 卸载程序工作目录

根据安装程序的 NSIS 卸载程序权限