如何从 NSIS 安装程序“刷新”Windows 7 开始菜单?

Posted

技术标签:

【中文标题】如何从 NSIS 安装程序“刷新”Windows 7 开始菜单?【英文标题】:How to "refresh" Windows 7 start menu from NSIS installer? 【发布时间】:2010-10-27 21:44:22 【问题描述】:

我有一个在开始菜单中创建快捷方式的安装程序 (NSIS)。当我删除程序时,卸载会从以下位置删除文件夹:

C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\

不幸的是,该文件夹仍在开始菜单中。也许这只是刷新开始菜单的问题 - 但是如何从 NSIS 卸载程序中进行呢?

【问题讨论】:

【参考方案1】:

Win7 可能和Vista 一样,在不告诉你的情况下将快捷方式复制/移动到所有用户的开始菜单。在您的脚本中使用 RequestExecutionLevel 来停止此操作。

见http://nsis.sourceforge.net/Shortcuts_removal_fails_on_Windows_Vista

【讨论】:

两个人在没有 cmets 的情况下否决了正确答案? Anders 可能是 SO 上知识最渊博的 NSIS 脚本编写者。 这可能是Win7的“抨击”。如果有人能给我一个很好的理由为什么 NSIS 得到这种待遇,我会编辑我的帖子。 "Win 7 糟透了..." 或者,也许,nsis 应该正确运行。基于 MSI 的安装程序没有这个问题... @Robert P:当然 MSI 没有这样的问题,因为它甚至不是可执行文件(真正的引擎是操作系统的一部分)这种愚蠢的行为是针对损坏的安装程序,因为我们没有一台时间机器,即使是 100% 工作的(较旧的)安装程序也会中断,因为他们的清单中没有所需的字符串。 MS 为所有安装程序打开了兼容性黑客,您必须选择退出。 (并且每个新版本的 Windows 的退出方法都会发生变化!) 再见,答案有偏见。不幸的是,我还不能以同样的方式擦洗 cmets……。【参考方案2】:

我没有 Windows 7 的副本,所以我不能确定,但​​您确认您删除的文件夹是开始菜单中的实际文件夹(我假设它是因为您最初创建它)。

您可以在开始菜单中找到该文件夹​​,右键单击并打开它。

不过,这可能是一个愚蠢的建议。 :)

【讨论】:

开始菜单快捷方式指向 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ 这可能是开始菜单选项被缓存的地方但是......重新登录后这些快捷方式仍然存在那里:/也许有更好的方法来删除开始快捷方式(同时保持它与以前的Windows版本兼容)。请注意:我在使用 WiX 时没有遇到这些问题 我问的原因是因为在 XP 和其他版本的 Windows 中,开始菜单项来自两个位置:用户目录和“所有用户”目录。所以我的想法是,快捷方式已经在两者中创建,但只从一个中删除!

以上是关于如何从 NSIS 安装程序“刷新”Windows 7 开始菜单?的主要内容,如果未能解决你的问题,请参考以下文章

使用NSIS制作Windows安装程序快速入门

如何使用NSIS脚本将应用程序安装为Windows服务

如何静默自动更新通过 NSIS 为所有用户/每台机器安装的电子应用程序?

NSIS

NSIS 构建不会在 Windows 上安装 Electron 应用程序。安装程序静默退出并产生 1620 错​​误

如何硬删除 NSIS 生成的 uninst.exe?