【问题标题】:NSIS Installer Start Menu DirectoryNSIS 安装程序开始菜单目录
【发布时间】:2023-03-19 14:49:02
【问题描述】:

我有一个 NSIS 安装程序,其中包含使用此代码硬编码的开始菜单文件夹...

Var SMDir ;Start menu folder
!insertmacro MUI_PAGE_STARTMENU 0 $SMDir

Section -StartMenu
  !insertmacro MUI_STARTMENU_WRITE_BEGIN 0
  CreateDirectory "$SMPrograms\MY Program\My Folder"
  CreateShortCut "$DESKTOP\My Program" "$INSTDIR\start.exe"
  CreateShortCut "$SMPROGRAMS\MY Program\My Shortcut.lnk" "$INSTDIR\start.exe"
  CreateShortCut "$SMPROGRAMS\My Program\Uninstall.lnk" "$INSTDIR\uninstall.exe"

除了“选择开始菜单文件夹”之外,这一切都有效,它不允许我更改默认安装目录。

有没有办法解决这个问题,或者我怎样才能跳过这个页面但仍然触发 StartMenu 部分?

【问题讨论】:

    标签: nsis


    【解决方案1】:

    如果您根本不想要开始菜单选择页面,只需删除 !insertmacro MUI_PAGE_STARTMENU ...-StartMenu 部分中的两个 !insertmacro MUI_STARTMENU_* 宏即可。

    如果你想允许用户选择目录,那么你必须使用变量而不是硬编码路径:

    outfile test.exe
    name "SM Test"
    requestexecutionlevel user ;Single user/"Just me" installer
    
    !define MUI_COMPONENTSPAGE_NODESC
    !include mui2.nsh
    
    Var SMDir ;Start menu folder
    !insertmacro MUI_PAGE_COMPONENTS
    ;!define MUI_STARTMENUPAGE_DEFAULTFOLDER "MY Program" ;Default, name is used if not defined
    !insertmacro MUI_PAGE_STARTMENU 0 $SMDir
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_LANGUAGE English
    
    
    Section -StartMenu
    !insertmacro MUI_STARTMENU_WRITE_BEGIN 0 ;This macro sets $SMDir and skips to MUI_STARTMENU_WRITE_END if the "Don't create shortcuts" checkbox is checked... 
    CreateDirectory "$SMPrograms\$SMDir"
    CreateShortCut "$SMPROGRAMS\$SMDir\Myapp.lnk" "$INSTDIR\start.exe"
    !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd
    
    Section "Desktop Shortcut"
    CreateShortCut "$DESKTOP\Myapp.lnk" "$INSTDIR\start.exe"
    SectionEnd
    

    (如果您以管理员身份安装,那么您应该在访问 $SMPrograms 之前致电SetShellVarContext all,并且您可能不应该创建桌面快捷方式)

    【讨论】:

    • 安德斯再次救援 :) 谢谢
    猜你喜欢
    • 2018-07-31
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多