!include "MUI2.nsh" ;-------------------------------- ;Interface Configuration !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "@CMAKE_HOME_DIRECTORY@\doc\webcruft\simgrid_logo_win_2011.bmp" ; optional !define MUI_ABORTWARNING ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "@CMAKE_HOME_DIRECTORY@\LICENSE-LGPL-2.1" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "French" ;-------------------------------- Name "Simgrid" outFile "SimGrid@SIMGRID_VERSION_MAJOR@.@SIMGRID_VERSION_MINOR@.@SIMGRID_VERSION_PATCH@_@NSIS_WIN_VERSION@@BIN_EXE@" Icon "@CMAKE_HOME_DIRECTORY@\doc\webcruft\SimGrid.ico" # set the default installation directory InstallDir c:\SimGrid@SIMGRID_VERSION_MAJOR@.@SIMGRID_VERSION_MINOR@.@SIMGRID_VERSION_PATCH@ Section "Libraries and Headers" LibSection setOutPath $INSTDIR file @CMAKE_HOME_DIRECTORY@\AUTHORS file @CMAKE_HOME_DIRECTORY@\Changelog file @CMAKE_HOME_DIRECTORY@\COPYING file @CMAKE_HOME_DIRECTORY@\LICENSE-LGPL-2.1 file @CMAKE_HOME_DIRECTORY@\NEWS # install lib CreateDirectory $INSTDIR\lib setOutPath $INSTDIR\lib file lib\libgras.@LIB_EXE@ file lib\libsimgrid.@LIB_EXE@ #install headers CreateDirectory $INSTDIR\include setOutPath $INSTDIR\include file @CMAKE_HOME_DIRECTORY@\include\gras.h file @CMAKE_HOME_DIRECTORY@\include\xbt.h file include\simgrid_config.h CreateDirectory $INSTDIR\include\xbt setOutPath $INSTDIR\include\xbt file @CMAKE_HOME_DIRECTORY@\include\xbt\misc.h file @CMAKE_HOME_DIRECTORY@\include\xbt\sysdep.h file @CMAKE_HOME_DIRECTORY@\include\xbt\virtu.h file @CMAKE_HOME_DIRECTORY@\include\xbt\str.h file @CMAKE_HOME_DIRECTORY@\include\xbt\strbuff.h file @CMAKE_HOME_DIRECTORY@\include\xbt\hash.h file @CMAKE_HOME_DIRECTORY@\include\xbt\function_types.h file @CMAKE_HOME_DIRECTORY@\include\xbt\asserts.h file @CMAKE_HOME_DIRECTORY@\include\xbt\ex.h file @CMAKE_HOME_DIRECTORY@\include\xbt\log.h file @CMAKE_HOME_DIRECTORY@\include\xbt\module.h file @CMAKE_HOME_DIRECTORY@\include\xbt\mallocator.h file @CMAKE_HOME_DIRECTORY@\include\xbt\dynar.h file @CMAKE_HOME_DIRECTORY@\include\xbt\dict.h file @CMAKE_HOME_DIRECTORY@\include\xbt\set.h file @CMAKE_HOME_DIRECTORY@\include\xbt\heap.h file @CMAKE_HOME_DIRECTORY@\include\xbt\graph.h file @CMAKE_HOME_DIRECTORY@\include\xbt\fifo.h file @CMAKE_HOME_DIRECTORY@\include\xbt\swag.h file @CMAKE_HOME_DIRECTORY@\include\xbt\lib.h file @CMAKE_HOME_DIRECTORY@\include\xbt\matrix.h file @CMAKE_HOME_DIRECTORY@\include\xbt\peer.h file @CMAKE_HOME_DIRECTORY@\include\xbt\config.h file @CMAKE_HOME_DIRECTORY@\include\xbt\cunit.h file @CMAKE_HOME_DIRECTORY@\include\xbt\graphxml_parse.h file @CMAKE_HOME_DIRECTORY@\include\xbt\graphxml.h file @CMAKE_HOME_DIRECTORY@\include\xbt\time.h file @CMAKE_HOME_DIRECTORY@\include\xbt\synchro.h file @CMAKE_HOME_DIRECTORY@\include\xbt\synchro_core.h file @CMAKE_HOME_DIRECTORY@\include\xbt\queue.h file @CMAKE_HOME_DIRECTORY@\include\xbt\setset.h file @CMAKE_HOME_DIRECTORY@\include\xbt\mmalloc.h file @CMAKE_HOME_DIRECTORY@\include\xbt\replay_trace_reader.h file @CMAKE_HOME_DIRECTORY@\include\xbt\parmap.h file @CMAKE_HOME_DIRECTORY@\include\xbt\automaton.h file @CMAKE_HOME_DIRECTORY@\include\xbt\automatonparse_promela.h CreateDirectory $INSTDIR\include\simgrid setOutPath $INSTDIR\include\simgrid file @CMAKE_HOME_DIRECTORY@\include\simgrid\platf.h CreateDirectory $INSTDIR\include\mc setOutPath $INSTDIR\include\mc file @CMAKE_HOME_DIRECTORY@\include\mc\modelchecker.h CreateDirectory $INSTDIR\include\msg setOutPath $INSTDIR\include\msg file @CMAKE_HOME_DIRECTORY@\include\msg\msg.h file @CMAKE_HOME_DIRECTORY@\include\msg\datatypes.h CreateDirectory $INSTDIR\include\simdag setOutPath $INSTDIR\include\simdag file @CMAKE_HOME_DIRECTORY@\include\simdag\simdag.h file @CMAKE_HOME_DIRECTORY@\include\simdag\datatypes.h CreateDirectory $INSTDIR\include\smpi setOutPath $INSTDIR\include\smpi file @CMAKE_HOME_DIRECTORY@\include\smpi\smpi.h file @CMAKE_HOME_DIRECTORY@\include\smpi\mpi.h file @CMAKE_HOME_DIRECTORY@\include\smpi\mpif.h file @CMAKE_HOME_DIRECTORY@\include\smpi\smpi_cocci.h file include\smpi\smpif.h CreateDirectory $INSTDIR\include\surf setOutPath $INSTDIR\include\surf file @CMAKE_HOME_DIRECTORY@\include\surf\surfxml_parse.h file @CMAKE_HOME_DIRECTORY@\include\surf\simgrid_dtd.h file @CMAKE_HOME_DIRECTORY@\include\surf\surf_routing.h CreateDirectory $INSTDIR\include\gras setOutPath $INSTDIR\include\gras file @CMAKE_HOME_DIRECTORY@\include\gras\datadesc.h file @CMAKE_HOME_DIRECTORY@\include\gras\transport.h file @CMAKE_HOME_DIRECTORY@\include\gras\virtu.h file @CMAKE_HOME_DIRECTORY@\include\gras\emul.h file @CMAKE_HOME_DIRECTORY@\include\gras\process.h file @CMAKE_HOME_DIRECTORY@\include\gras\module.h file @CMAKE_HOME_DIRECTORY@\include\gras\messages.h file @CMAKE_HOME_DIRECTORY@\include\gras\timer.h CreateDirectory $INSTDIR\include\amok setOutPath $INSTDIR\include\amok file @CMAKE_HOME_DIRECTORY@\include\amok\peermanagement.h file @CMAKE_HOME_DIRECTORY@\include\amok\bandwidth.h CreateDirectory $INSTDIR\include\instr setOutPath $INSTDIR\include\instr file @CMAKE_HOME_DIRECTORY@\include\instr\instr.h CreateDirectory $INSTDIR\include\simix setOutPath $INSTDIR\include\simix file @CMAKE_HOME_DIRECTORY@\include\simix\simix.h file @CMAKE_HOME_DIRECTORY@\include\simix\datatypes.h file @CMAKE_HOME_DIRECTORY@\include\simix\context.h SectionEnd Section "Binaries" BinSection # insatll bin CreateDirectory $INSTDIR\bin setOutPath $INSTDIR\bin file bin\colorize file bin\graphicator@BIN_EXE@ file bin\gras_stub_generator@BIN_EXE@ file bin\simgrid_update_xml file bin\smpicc file bin\smpif2c file bin\smpiff file bin\smpirun file bin\tesh SectionEnd Section "Documentation" DocSection # install doc CreateDirectory $INSTDIR\doc setOutPath $INSTDIR\doc file /nonfatal /r @CMAKE_HOME_DIRECTORY@\doc\html # create a shortcut in the start menu programs directory CreateDirectory "$SMPROGRAMS\SimGrid" createShortCut "$SMPROGRAMS\SimGrid\Documentation.lnk" "$INSTDIR\doc\html\index.html" createShortCut "$SMPROGRAMS\SimGrid\Website.lnk" "http://simgrid.gforge.inria.fr/" SectionEnd Section "Examples" ExamplesSection CreateDirectory $INSTDIR\examples setOutPath $INSTDIR\examples #install examples for platforms file /r @CMAKE_HOME_DIRECTORY@\examples\platforms # install example HelloWorld file /r @CMAKE_HOME_DIRECTORY@\doc\HelloWorld # install example MasterSlave CreateDirectory $INSTDIR\examples\MasterSlave setOutPath $INSTDIR\examples\MasterSlave file @CMAKE_HOME_DIRECTORY@\examples\msg\masterslave\masterslave_forwarder.c file @CMAKE_HOME_DIRECTORY@\examples\msg\masterslave\deployment_masterslave_forwarder.xml file @CMAKE_HOME_DIRECTORY@\examples\msg\msg_platform.xml file @CMAKE_HOME_DIRECTORY@\doc\HelloWorld\CMakeLists.txt file @CMAKE_HOME_DIRECTORY@\doc\HelloWorld\FindPCRE.cmake # create shortcuts in the start menu programs directory CreateDirectory "$SMPROGRAMS\SimGrid\Examples\" createShortCut "$SMPROGRAMS\SimGrid\Examples\HelloWorld project.lnk" "$INSTDIR\examples\HelloWorld" createShortCut "$SMPROGRAMS\SimGrid\Examples\MasterSlave project.lnk" "$INSTDIR\examples\MasterSlave" SectionEnd Section "Pcre library" PCRESection # install pcre library CreateDirectory $INSTDIR\GnuWin32 setOutPath $INSTDIR\GnuWin32 file /r "@PCRE_LIBRARY_PATH@\lib" file /r "@PCRE_LIBRARY_PATH@\include" file /nonfatal /r "@PCRE_LIBRARY_PATH@\bin" file /nonfatal /r "@PCRE_LIBRARY_PATH@\man" file /nonfatal /r "@PCRE_LIBRARY_PATH@\share" SectionEnd # default section start section # define uninstaller name writeUninstaller $INSTDIR\uninstaller@BIN_EXE@ # create a shortcut in the start menu programs directory CreateDirectory "$SMPROGRAMS\SimGrid" createShortCut "$SMPROGRAMS\SimGrid\Uninstall simgrid.lnk" "$INSTDIR\uninstaller@BIN_EXE@" # Include for some of the windows message defines !include "winmessages.nsh" # HKLM (all users) vs HKCU (current user) defines !define env_hklm 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' !define env_hkcu 'HKCU "Environment"' # Set Variables WriteRegExpandStr ${env_hklm} SIMGRID_ROOT $INSTDIR WriteRegExpandStr ${env_hklm} SIMGRID_VERSION @SIMGRID_VERSION_MAJOR@.@SIMGRID_VERSION_MINOR@.@SIMGRID_VERSION_PATCH@ WriteRegExpandStr ${env_hklm} SIMGRID_PCRE_LIBRARY_PATH $INSTDIR\GnuWin32 WriteRegExpandStr ${env_hklm} SIMGRID_PCRE_LIBRARY_VERSION "8.21" WriteRegStr HKCU "SOFTWARE\SimGrid" "Version" "@SIMGRID_VERSION_MAJOR@.@SIMGRID_VERSION_MINOR@.@SIMGRID_VERSION_PATCH@" WriteRegStr HKCU "SOFTWARE\SimGrid" "InstallPath" "$INSTDIR" SetRebootFlag true # default section end sectionEnd LangString DESC_LibSection ${LANG_ENGLISH} "Install Simgrid and gras libraries with associated headers." LangString DESC_BinSection ${LANG_ENGLISH} "Install some useful tools for Simgrid." LangString DESC_DocSection ${LANG_ENGLISH} "Generated (doxygen) documentation." LangString DESC_ExamplesSection ${LANG_ENGLISH} "Simgrid's HelloWorld example and some classical platforms." LangString DESC_PCRESection ${LANG_ENGLISH} "Install the PCRE and PCREPOSIX libraries for SimGrid." LangString DESC_LibSection ${LANG_FRENCH} "Installer les librairies Simgrid et Gras et leurs Entêtes." LangString DESC_BinSection ${LANG_FRENCH} "Installer les outils optionnels." LangString DESC_DocSection ${LANG_FRENCH} "Installer la documentation." LangString DESC_ExamplesSection ${LANG_FRENCH} "Installer un exemple 'HelloWorld' et des fichiers de plate-formes types." LangString DESC_PCRESection ${LANG_FRENCH} "Installer les librairies PCRE et PCREPOSIX for SimGrid." !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${LibSection} $(DESC_LibSection) !insertmacro MUI_DESCRIPTION_TEXT ${BinSection} $(DESC_BinSection) !insertmacro MUI_DESCRIPTION_TEXT ${DocSection} $(DESC_DocSection) !insertmacro MUI_DESCRIPTION_TEXT ${ExamplesSection} $(DESC_ExamplesSection) !insertmacro MUI_DESCRIPTION_TEXT ${PCRESection} $(DESC_PCRESection) !insertmacro MUI_FUNCTION_DESCRIPTION_END # create a section to define what the uninstaller does. # the section will always be named "Uninstall" section "Uninstall" # always delete uninstaller first delete $INSTDIR\uninstaller@BIN_EXE@ # delete installed libs delete $INSTDIR\lib\libgras.@LIB_EXE@ delete $INSTDIR\lib\libsimgrid.@LIB_EXE@ # delete installed bin delete $INSTDIR\bin\colorize delete $INSTDIR\bin\graphicator@BIN_EXE@ delete $INSTDIR\bin\gras_stub_generator@BIN_EXE@ delete $INSTDIR\bin\simgrid_update_xml delete $INSTDIR\bin\smpicc delete $INSTDIR\bin\smpif2c delete $INSTDIR\bin\smpiff delete $INSTDIR\bin\smpirun delete $INSTDIR\bin\tesh # delete installed headers delete $INSTDIR\include\gras.h delete $INSTDIR\include\xbt.h delete $INSTDIR\include\simgrid_config.h delete $INSTDIR\include\xbt\misc.h delete $INSTDIR\include\xbt\sysdep.h delete $INSTDIR\include\xbt\virtu.h delete $INSTDIR\include\xbt\str.h delete $INSTDIR\include\xbt\strbuff.h delete $INSTDIR\include\xbt\hash.h delete $INSTDIR\include\xbt\function_types.h delete $INSTDIR\include\xbt\asserts.h delete $INSTDIR\include\xbt\ex.h delete $INSTDIR\include\xbt\log.h delete $INSTDIR\include\xbt\module.h delete $INSTDIR\include\xbt\mallocator.h delete $INSTDIR\include\xbt\dynar.h delete $INSTDIR\include\xbt\dict.h delete $INSTDIR\include\xbt\set.h delete $INSTDIR\include\xbt\heap.h delete $INSTDIR\include\xbt\graph.h delete $INSTDIR\include\xbt\fifo.h delete $INSTDIR\include\xbt\swag.h delete $INSTDIR\include\xbt\lib.h delete $INSTDIR\include\xbt\matrix.h delete $INSTDIR\include\xbt\peer.h delete $INSTDIR\include\xbt\config.h delete $INSTDIR\include\xbt\cunit.h delete $INSTDIR\include\xbt\graphxml_parse.h delete $INSTDIR\include\xbt\graphxml.h delete $INSTDIR\include\xbt\time.h delete $INSTDIR\include\xbt\synchro.h delete $INSTDIR\include\xbt\synchro_core.h delete $INSTDIR\include\xbt\queue.h delete $INSTDIR\include\xbt\setset.h delete $INSTDIR\include\xbt\mmalloc.h delete $INSTDIR\include\xbt\replay_trace_reader.h delete $INSTDIR\include\xbt\parmap.h delete $INSTDIR\include\mc\modelchecker.h delete $INSTDIR\include\msg\msg.h delete $INSTDIR\include\msg\datatypes.h delete $INSTDIR\include\simdag\simdag.h delete $INSTDIR\include\simdag\datatypes.h delete $INSTDIR\include\smpi\smpi.h delete $INSTDIR\include\smpi\mpi.h delete $INSTDIR\include\smpi\mpif.h delete $INSTDIR\include\smpi\smpi_cocci.h delete $INSTDIR\include\smpi\smpif.h delete $INSTDIR\include\surf\surfxml_parse.h delete $INSTDIR\include\surf\simgrid_dtd.h delete $INSTDIR\include\surf\surf_routing.h delete $INSTDIR\include\gras\datadesc.h delete $INSTDIR\include\gras\transport.h delete $INSTDIR\include\gras\virtu.h delete $INSTDIR\include\gras\emul.h delete $INSTDIR\include\gras\process.h delete $INSTDIR\include\gras\module.h delete $INSTDIR\include\gras\messages.h delete $INSTDIR\include\gras\timer.h delete $INSTDIR\include\amok\peermanagement.h delete $INSTDIR\include\amok\bandwidth.h delete $INSTDIR\include\instr\instr.h delete $INSTDIR\include\simix\simix.h delete $INSTDIR\include\simix\datatypes.h delete $INSTDIR\include\simix\context.h # delete link delete "$SMPROGRAMS\SimGrid\Uninstall simgrid.lnk" delete "$SMPROGRAMS\SimGrid\Documentation.lnk" delete "$SMPROGRAMS\SimGrid\Website.lnk" delete "$SMPROGRAMS\SimGrid\Examples\HelloWorld project.lnk" delete "$SMPROGRAMS\SimGrid\Examples\MasterSlave project.lnk" # delete EXTRA FILES delete $INSTDIR\AUTHORS delete $INSTDIR\Changelog delete $INSTDIR\COPYING delete $INSTDIR\LICENSE-LGPL-2.1 delete $INSTDIR\NEWS # now delete directories RMDir "$INSTDIR\bin" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\include\simix" RMDir "$INSTDIR\include\instr" RMDir "$INSTDIR\include\amok" RMDir "$INSTDIR\include\gras" RMDir "$INSTDIR\include\surf" RMDir "$INSTDIR\include\smpi" RMDir "$INSTDIR\include\simdag" RMDir "$INSTDIR\include\msg" RMDir "$INSTDIR\include\mc" RMDir "$INSTDIR\include\xbt" RMDir "$INSTDIR\include" RMDir /r "$INSTDIR\doc" RMDir /r "$INSTDIR\examples" RMDir "$SMPROGRAMS\SimGrid\Examples" RMDir "$SMPROGRAMS\SimGrid" # delete PCRE RMDir /r "$INSTDIR\GnuWin32" # Delete variable DeleteRegValue ${env_hklm} SIMGRID_ROOT DeleteRegValue ${env_hklm} SIMGRID_VERSION DeleteRegValue ${env_hklm} SIMGRID_PCRE_LIBRARY_PATH DeleteRegValue ${env_hklm} SIMGRID_PCRE_LIBRARY_VERSION DeleteRegKey HKCU "SOFTWARE\SimGrid" # delete INSTDIR RMDir /r "$INSTDIR" # uninstall section end sectionEnd