NSIS:如何删除 nsis 脚本中匹配通配符模式的文件

NSIS: How to delete file matching wildcat pattern in nsis script

当用户安装我的软件时,它会在用户的桌面上创建快捷方式。快捷方式的名称也反映了正在安装的版本。

事实证明,我的一些客户确实安装了多个版本(尽管这没问题,没有冲突或其他任何问题)但这意味着用户的桌面因他们拥有的几个不同版本的大量快捷方式而变得臃肿随着时间的推移安装。 (例如 SchoolServer 7.1.lnkSchoolServer 7.2.lnkSchoolServer 8.5.lnk 然后是当前的 SchoolServer 9.0.lnk

他们必须手动删除这些过时的快捷方式。

如何在我的 NSIS 脚本中实现这一点?

注意:我曾尝试使用 wildcat 为所有版本删除桌面上的快捷方式,然后为已安装的版本创建快捷方式,但它创建了新的快捷方式,但仍然保留了旧的快捷方式。我使用的代码如下:

;first delete stale shortcuts matching the wildcat
Delete "$DESKTOP\SchoolServer *.lnk"
;create the new shortcut
CreateDirectory "$INSTDIR"
CreateShortCut "${ICON_URL}" "$INSTDIR\SchoolServer.exe" "" "" "" SW_SHOWMAXIMIZED ALT|CONTROL|SHIFT|F5 "SchoolServer"

删除前使用SetShellVarContext,切换到当前用户:

SetShellVarContext current
Delete "$DESKTOP\SchoolServer *.lnk"
SetShellVarContext all