I am trying to run an installer inside the Script of another installer. The parent installer needs to be finished to run the embedded installer inside properly.
!include "MUI2.nsh"
Icon "C:\Users\user\Pictures\logo.ico"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section
ExecWait "$INSTDIR/CM/CMInstaller.exe"
SectionEnd
So how do I wait for the parent installer before executing the CMInstaller.exe?
Thanks for answering!
EDIT:
As Anders pointed out, the -POST
is not a specific section name, just place this section (containing your child installer) after the main install section, or use .onInstSuccess callback function
Original answer:
In our project, we use -Post
section to do some post-installation operations like placing the uninstaller or shortcut on the desktop, which might not be the best practice because there's a -FinishComponents
section for the specified situation, check here
Section -Post
SetShellVarContext all
SetOutPath "$INSTDIR"
WriteUninstaller "$INSTDIR\Uninst.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\Uninst.exe"
;Write install path registry
WriteRegStr HKLM "${PRODUCT_INSTALL_DIR_REGKEY}" "${PRODUCT_INSTALL_DIR_SUBKEY}" $INSTDIR
!insertmacro WriteInstallLog "Install_log.log" "Installation completed"
;Execute CMInstaller here
ExecWait "$INSTDIR/CM/CMInstaller.exe"
SectionEnd
And according to the NSIS documentation, there's also a callback function .onInstSuccess when the installation is done successfully