NSIS:如何在NSIS脚本中删除与通配符模式匹配的文件
当用户安装“我的软件”时,它会在用户的桌面上创建快捷方式。快捷方式的名称还反映了正在安装的版本 事实证明,我的一些客户确实安装了多个版本(尽管这没有问题,没有冲突或其他),但这意味着用户的桌面上已经安装了多个不同版本的快捷方式。(例如NSIS:如何在NSIS脚本中删除与通配符模式匹配的文件,nsis,Nsis,当用户安装“我的软件”时,它会在用户的桌面上创建快捷方式。快捷方式的名称还反映了正在安装的版本 事实证明,我的一些客户确实安装了多个版本(尽管这没有问题,没有冲突或其他),但这意味着用户的桌面上已经安装了多个不同版本的快捷方式。(例如SchoolServer 7.1.lnk,SchoolServer 7.2.lnk,SchoolServer 8.5.lnk,然后是当前的SchoolServer 9.0.lnk) 他们必须手动删除这些过时的快捷方式 如何在NSIS脚本中实现这一点 注意:我已尝试使
SchoolServer 7.1.lnk
,SchoolServer 7.2.lnk
,SchoolServer 8.5.lnk
,然后是当前的SchoolServer 9.0.lnk
)
他们必须手动删除这些过时的快捷方式
如何在NSIS脚本中实现这一点
注意:我已尝试使用通配符删除桌面上所有版本的快捷方式,然后为安装的版本创建快捷方式,但它创建了新的快捷方式,但仍保留了旧的快捷方式。我使用的代码如下:
;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 current
Delete "$DESKTOP\SchoolServer *.lnk"
SetShellVarContext all
天才!但这不意味着在创建快捷方式时也建议
SetShellVarContext-current
?是的,除非您想为所有用户创建快捷方式。我很惊讶文档中没有提到这一点。这难道不意味着不设置当前的SetShellVarContext
将为所有用户创建快捷方式吗?如果是这样的话,那么在我最初的例子中,为什么不将SetShellVarContext设置为current
而不(递归地)删除所有用户的快捷方式呢?(而不是失败)好问题,我不知道