home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / fwp_installer.nsi < prev    next >
Encoding:
Text File  |  2005-01-22  |  7.8 KB  |  250 lines

  1. ;================================
  2. ;NSIS Installer for FWP
  3. ;Written by Karsten Schwenk
  4. ;
  5. ;NOTE: I'm not an expert for NSIS, so it is very likely that I did some stupid mistakes - feel free to correct them.
  6. ;
  7. ;================================
  8.  
  9. !include "MUI.nsh"
  10.   
  11. ;--------------------------------
  12. ;Configuration
  13.  
  14. !define FWP_INSTALL_FROM_DIR "..\.."
  15. !define FWP_NAME "FWP"
  16. !define FWP_VERSION "0.0.6"
  17.  
  18.   ;General
  19.   Name "${FWP_NAME} ${FWP_VERSION}"
  20.   OutFile "fwp-${FWP_VERSION}-win32-installer.exe"
  21.  
  22.   ;Folder selection page
  23.   InstallDir "$PROGRAMFILES\${FWP_NAME}"
  24.   
  25.   ;Remember install folder
  26.   InstallDirRegKey HKCU "Software\${FWP_NAME}" ""
  27.  
  28.   ;Remember the Start Menu Folder
  29.   !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" 
  30.   !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${FWP_NAME}" 
  31.   !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
  32.   !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${FWP_NAME}"
  33.  
  34.   ;Finish page
  35.   !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Readme.txt"
  36.   !define MUI_FINISHPAGE_RUN "$INSTDIR\fwp.exe"
  37.   !define MUI_FINISHPAGE_RUN_TEXT "Run FWP"
  38.  
  39. ;--------------------------------
  40. ;Variables
  41.  
  42.   Var SM_TEMP
  43.   Var STARTMENU_FOLDER
  44.   Var INI_VALUE
  45.  
  46. ;--------------------------------
  47. ; Interface
  48.   !define MUI_ABORTWARNING
  49.  
  50. ;--------------------------------
  51. ;Modern UI Configuration
  52.  
  53.   !insertmacro MUI_PAGE_WELCOME
  54.   !insertmacro MUI_PAGE_LICENSE "${FWP_INSTALL_FROM_DIR}\License.txt"
  55.   !insertmacro MUI_PAGE_COMPONENTS
  56.   !insertmacro MUI_PAGE_DIRECTORY
  57.   !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
  58.   Page custom DesktopIconPage
  59.   !insertmacro MUI_PAGE_INSTFILES
  60.   !insertmacro MUI_PAGE_FINISH
  61.   
  62.   !insertmacro MUI_UNPAGE_CONFIRM
  63.   !insertmacro MUI_UNPAGE_INSTFILES
  64.   
  65. ;--------------------------------
  66. ;Languages
  67.  
  68.   !insertmacro MUI_LANGUAGE "English"
  69.   
  70. ;--------------------------------
  71. ;Language Strings
  72.  
  73.   ;Description
  74.   LangString DESC_SecCopyMain ${LANG_ENGLISH} "Install FWP game. (The only thing needed to play...)"
  75.   LangString DESC_SecCopySource ${LANG_ENGLISH} "Install FWP source code and API-docs. (You will also need 'FWP game' for models, textures, etc.)"
  76.  
  77. ;--------------------------------
  78. ;Data
  79.   
  80. ;  LicenseData "${FWP_INSTALL_FROM_DIR}\License.txt"
  81.   
  82. ;--------------------------------
  83. ;Reserve Files
  84.  
  85.   ;Things that need to be extracted on first (keep these lines before any File command!)
  86.   ;Only useful for BZIP2 compression
  87. ;  !insertmacro MUI_RESERVEFILE_WELCOMEFINISHPAGE
  88.   ReserveFile "desktop_icon_page.ini"
  89. ;  ReserveFile "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
  90.   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
  91.  
  92. ;--------------------------------
  93. ;Installer Sections
  94.  
  95. Section "FWP game" SecCopyMain
  96.  
  97.   ;Add your stuff here
  98.  
  99.   SetOutPath "$INSTDIR"
  100.   File "${FWP_INSTALL_FROM_DIR}\*.*"
  101.  
  102.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\arenas"
  103.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\weapons"
  104.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\vehicles"
  105.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\gui"
  106. ;  File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\icons"
  107.  
  108.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\configs"
  109.   File /nonfatal /r "${FWP_INSTALL_FROM_DIR}\docs"
  110.  
  111.   
  112.   ;Store install folder
  113.   WriteRegStr HKCU "Software\${FWP_NAME}" "" $INSTDIR
  114.     
  115.   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  116.     
  117.     ;Create shortcuts
  118.     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
  119.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\play fwp.lnk" "$INSTDIR\fwp.exe" "" "$INSTDIR\fwp.exe" 0 \
  120.         "SW_SHOWMINIMIZED" "" "This starts FWP"
  121.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\view readme.lnk" "$INSTDIR\Readme.txt"
  122.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\view manual.lnk" "$INSTDIR\docs\manual\index.html"
  123.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\visit our homepage.lnk" "http://fightwinprevail.sourceforge.net"
  124.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
  125.  
  126.   !insertmacro MUI_STARTMENU_WRITE_END
  127.  
  128.   ;Read a value from an InstallOptions INI file
  129.   !insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE "desktop_icon_page.ini" "Field 2" "State"
  130.   
  131.   ;Create desktop shortcut if check box was checked
  132.   StrCmp $INI_VALUE "1" "" +2
  133.     CreateShortCut "$DESKTOP\play FWP.lnk" "$INSTDIR\fwp.exe" "" "$INSTDIR\fwp.exe" 0 "SW_SHOWMINIMIZED" "" "This starts FWP"
  134.   
  135.  
  136.   ;Create uninstaller
  137.   WriteUninstaller "$INSTDIR\Uninstall.exe"
  138.  
  139. SectionEnd
  140.  
  141.  
  142. Section "FWP source code" SecCopySource
  143.  
  144.   ;Add your stuff here
  145.  
  146.   SetOutPath "$INSTDIR"
  147.   File /r "${FWP_INSTALL_FROM_DIR}\source"
  148.  
  149.   
  150.   ;Store install folder
  151.   WriteRegStr HKCU "Software\${FWP_NAME}" "" $INSTDIR
  152.     
  153.   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  154.     
  155.     ;Create shortcuts
  156.     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
  157.     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER\source"
  158.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\source\source readme.lnk" "$INSTDIR\source\Readme_source.txt"
  159.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\source\source license.lnk" "$INSTDIR\source\License_source.txt"
  160.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\source\API documentation.lnk" "$INSTDIR\source\api-doc\html\index.html"
  161.     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\source\msvc workspace file.lnk" "$INSTDIR\source\msvc\fwp\fwp.dsw"
  162.   
  163.   !insertmacro MUI_STARTMENU_WRITE_END
  164.  
  165.   ;Create uninstaller
  166.   WriteUninstaller "$INSTDIR\Uninstall.exe"
  167.  
  168. SectionEnd
  169.  
  170. ;--------------------------------
  171. ;Installer Functions
  172.  
  173. Function .onInit
  174.  
  175.   ;Extract InstallOptions INI files
  176.   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "desktop_icon_page.ini"
  177.   
  178. FunctionEnd
  179.  
  180. LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Additional Icons"
  181. LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Choose which additional icons the installer should create for you."
  182.  
  183. Function DesktopIconPage
  184.  
  185.   !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
  186.   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "desktop_icon_page.ini"
  187.  
  188. FunctionEnd
  189.  
  190. ;--------------------------------
  191. ;Descriptions
  192.  
  193. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  194.   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyMain} $(DESC_SecCopyMain)
  195.   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopySource} $(DESC_SecCopySource)
  196. !insertmacro MUI_FUNCTION_DESCRIPTION_END
  197.  
  198. ;--------------------------------
  199. ;Uninstaller Section
  200.  
  201. Section "Uninstall"
  202.  
  203.   ;Add your stuff here
  204.  
  205.   Delete "$INSTDIR\*.*"
  206.  
  207.   RMDir /r "$INSTDIR\arenas"
  208.   RMDir /r "$INSTDIR\vehicles"
  209.   RMDir /r "$INSTDIR\weapons"
  210.   RMDir /r "$INSTDIR\configs"
  211.   RMDir /r "$INSTDIR\docs"
  212. ;  RMDir /r "$INSTDIR\icons"
  213.   RMDir /r "$INSTDIR\gui"
  214.  
  215.   RMDir /r "$INSTDIR\source"
  216.  
  217.   Delete "$INSTDIR\Uninstall.exe"
  218.  
  219.   ;Remove shortcut
  220. ;  ReadRegStr ${TEMP} "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
  221.   !insertmacro MUI_STARTMENU_GETFOLDER Application $SM_TEMP
  222.   
  223.   StrCmp $SM_TEMP "" noshortcuts
  224.   
  225.     Delete "$SMPROGRAMS\$SM_TEMP\play fwp.lnk"
  226.     Delete "$SMPROGRAMS\$SM_TEMP\view readme.lnk"
  227.     Delete "$SMPROGRAMS\$SM_TEMP\view manual.lnk"
  228.     Delete "$SMPROGRAMS\$SM_TEMP\visit our homepage.lnk"
  229.     Delete "$SMPROGRAMS\$SM_TEMP\Uninstall.lnk"
  230.  
  231.     Delete "$SMPROGRAMS\$SM_TEMP\source\msvc workspace file.lnk"
  232.     Delete "$SMPROGRAMS\$SM_TEMP\source\API documentation.lnk"
  233.     Delete "$SMPROGRAMS\$SM_TEMP\source\source readme.lnk"
  234.     Delete "$SMPROGRAMS\$SM_TEMP\source\source license.lnk"
  235.     RmDir "$SMPROGRAMS\$SM_TEMP\source"
  236.  
  237.     RMDir "$SMPROGRAMS\$SM_TEMP" ;Only if empty, so it won't delete other shortcuts
  238.  
  239.     Delete "$DESKTOP\play FWP.lnk"    ; FIXME
  240.     
  241.   noshortcuts:
  242.  
  243.   RMDir "$INSTDIR"
  244.  
  245.   DeleteRegKey /ifempty HKCU "Software\${FWP_NAME}"
  246.  
  247. ;  !insertmacro MUI_UNFINISHHEADER
  248.  
  249. SectionEnd
  250.