我正在NSIS安装程序中使用可选的组件安装,如NSIS wiki上的Controlling Available Install Options所示。
这很好,取决于用户选择了哪些选项,相关部分已安装。
但现在开始菜单条目存在问题,这些条目位于单独的部分中:
Section -startmenu
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\MyInstall"
CreateShortCut "$SMPROGRAMS\MyInstallOpenAPC\Editor1.lnk" "$INSTDIR\Editor1.exe" "" "$INSTDIR\icon.ico" 0
CreateShortCut "$SMPROGRAMS\MyInstallOpenAPC\Editor2.lnk" "$INSTDIR\Editor2.exe" "" "$INSTDIR\icon.ico" 0
CreateShortCut "$SMPROGRAMS\MyInstallOpenAPC\Editor3.lnk" "$INSTDIR\Editor3.exe" "" "$INSTDIR\icon.ico" 0
CreateShortCut "$SMPROGRAMS\MyInstallOpenAPC\Editor4.lnk" "$INSTDIR\Editor4.exe" "" "$INSTDIR\icon.ico" 0
Sectionend
依赖于可选安装的软件包,我只想创建一些开始菜单条目。
如何做到这一点?如何在开始菜单条目和已安装的部分之间创建关系?
答案 0 :(得分:1)
您可以检查是否选择了相关组件(部分):
!include LogicLib.nsh
InstallDir "$ProgramFiles\MyApp"
Page Components
Page InstFiles
Section "Foo" SID_FOO
SetOutPath "$InstDir\Foo"
; ...
SectionEnd
Section "Bar" SID_BAR
SetOutPath "$InstDir\Bar"
; ...
SectionEnd
Section "Start menu shortcuts"
SetShellVarContext all
${If} ${SectionIsSelected} ${SID_FOO}
CreateDirectory "$SMPROGRAMS\MyApp"
CreateShortcut "$SMPROGRAMS\MyApp\Foo.lnk" "$InstDir\Foo\Foo.exe"
${EndIf}
${If} ${SectionIsSelected} ${SID_BAR}
CreateDirectory "$SMPROGRAMS\MyApp"
CreateShortcut "$SMPROGRAMS\MyApp\Bar.lnk" "$InstDir\Bar\Bar.exe"
${EndIf}
SectionEnd