如何使用 NSIS 将快捷方式固定到开始菜单?

Posted

技术标签:

【中文标题】如何使用 NSIS 将快捷方式固定到开始菜单?【英文标题】:How to pin shortcut to start menu with NSIS? 【发布时间】:2014-08-12 02:12:20 【问题描述】:

我有一个 NSIS 安装程序脚本,它调用 CreateShortcut 向开始菜单添加一个条目。但是,我想在新创建的快捷方式中将选项设置为“固定到开始菜单”。

这可能吗?我已经看到一些VBScript examples 告诉我如何做到这一点。这是我在 NSIS 的唯一选择,还是有更好的方法?

【问题讨论】:

【参考方案1】:

Windows 8 会自动为您固定 while 8.1 will not。

虽然可以模拟固定快捷方式,但您是not really supposed to do it。

如果你想变得邪恶而不遵循指导方针,你可以使用this plugin...

【讨论】:

【参考方案2】:

这可以使用StdUtils 插件的InvokeShellVerb 函数实现。

这适用于 Windows 7 及更高版本。

这是一个示例,保留在这里以供后人使用...

!include 'StdUtils.nsh'

RequestExecutionLevel user ;no elevation needed for this test
ShowInstDetails show

Section
    IfFileExists "$SYSDIR\mspaint.exe" +3
    MessageBox MB_ICONSTOP 'File does not exist:$\n"$SYSDIR\mspaint.exe"$\n$\nExample cannot run!'
    Quit
SectionEnd

Section
    DetailPrint "Going to pin MSPaint..."
    $StdUtils.InvokeShellVerb $0 "$SYSDIR" "mspaint.exe" $StdUtils.Const.ShellVerb.PinToTaskbar
    DetailPrint "Result: $0"

    StrCmp "$0" "ok" 0 +3
    MessageBox MB_TOPMOST "Paint should have been pinned to Taskbar now!"
    Goto +2
    MessageBox MB_TOPMOST "Failed to pin, see log for details!"
SectionEnd

Section
    DetailPrint "Going to un-pin MSPaint..."
    $StdUtils.InvokeShellVerb $0 "$SYSDIR" "mspaint.exe" $StdUtils.Const.ShellVerb.UnpinFromTaskbar
    DetailPrint "Result: $0"

    StrCmp "$0" "ok" 0 +3
    MessageBox MB_TOPMOST "Paint should have been un-pinned from Taskbar now!"
    Goto +2
    MessageBox MB_TOPMOST "Failed to un-pin, see log for details!"
SectionEnd    

【讨论】:

以上是关于如何使用 NSIS 将快捷方式固定到开始菜单?的主要内容,如果未能解决你的问题,请参考以下文章

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

小技巧:将文本文件txt或网页快捷方式固定到win10开始菜单

怎样将应用程序快捷方式添加到win10开始菜单栏中去

如何将任意文件固定在 Win10 的开始屏幕中

Windows10实用技巧-固定快捷方式到磁贴菜单方式

如何在 CPACK 和 NSIS 中为文本文件添加开始菜单条目