NSIS安装程序开始菜单目录
我有一个NSIS安装程序,它的“开始”菜单文件夹使用此代码硬编码NSIS安装程序开始菜单目录,nsis,Nsis,我有一个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 P
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部分?如果您根本不想要StartMenu选择页面,只需删除
!插入宏MUI\u页面\u开始菜单…
和两个!在-startmenus
部分中插入宏MUI\u startmenus*
宏
如果要允许用户选择目录,则必须使用变量,而不是硬编码路径:
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
(如果您是以管理员身份安装,那么在访问$SMPROGRAM之前,您应该调用
SetShellVarContext all
,并且您可能不应该创建桌面快捷方式)Anders再次求助:)谢谢