enano-bundle.nsi
author Dan Fuhry <dan@enanocms.org>
Sat, 21 Aug 2010 18:20:18 -0400
changeset 11 b62383876fdb
parent 10 014d58335b6d
parent 9 100ba25b6dba
permissions -rwxr-xr-x
Merged from accidental split
     1 ; Script generated by the HM NIS Edit Script Wizard.
     2 
     3 ; HM NIS Edit Wizard helper defines
     4 !define PRODUCT_NAME "Enano CMS"
     5 !ifndef PRODUCT_VERSION
     6 !define PRODUCT_VERSION "1.1.6"
     7 !endif
     8 !ifndef PRODUCT_VERSION_APPEND
     9 !define PRODUCT_VERSION_APPEND ""
    10 !endif
    11 !define PRODUCT_PUBLISHER "Enano CMS Project"
    12 !define PRODUCT_WEB_SITE "http://enanocms.org"
    13 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
    14 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
    15 !define PRODUCT_SHORTNAME "enanocms"
    16 ; !define UNINSTALL_DEBUG
    17 
    18 !ifndef ENANO_ROOT
    19 !define ENANO_ROOT "Q:\enano-1.1\repo"
    20 !endif
    21 
    22 SetCompressor /FINAL /SOLID lzma
    23 CRCCheck force
    24 
    25 !include "WinMessages.nsh"
    26 
    27 ; ExperienceUI 1.3.1 compatible
    28 !ifndef XPUI_SYSDIR
    29   !define XPUI_SYSDIR "P:\exui\Contrib\ExperienceUI"
    30 !endif
    31 !include "${XPUI_SYSDIR}\XPUI.nsh"
    32 
    33 ; ExperienceUI GUI parameters
    34 !define XPUI_BGIMAGE
    35 !define XPUI_BGIMAGE_BMP "gfx\enano-bg.bmp"
    36 !define XPUI_TEXT_COLOR "F2F2F2"
    37 !define XPUI_TEXT_BGCOLOR "202020" ; irrelevant but still
    38 !define XPUI_TEXT_LIGHTCOLOR "B4C3EA"
    39 !define XPUI_ABORTWARNING
    40 !define XPUI_BRANDINGTEXT "NSIS Installer ${NSIS_VERSION}"
    41 !define XPUI_BRANDINGTEXT_COLOR_FG "b6d9ff"
    42 !define XPUI_BRANDINGTEXT_COLOR_BG "4c5b6b"
    43 !define XPUI_FASTERSKINNING
    44 !define XPUI_UNINSTALLER
    45 
    46 Var wampstack_installed
    47 Var wappstack_installed
    48 Var stack_type
    49 Var stack_instdir
    50 Var stack_portbit
    51 Var db_dbmsname
    52 Var db_rootuser
    53 Var db_rootpass
    54 Var db_needroot
    55 Var db_driver
    56 Var db_port
    57 Var db_user
    58 Var db_password
    59 Var db_name
    60 Var enano_user
    61 Var enano_password
    62 Var admin_email
    63 Var site_name
    64 Var site_desc
    65 Var site_copyright
    66 Var url_scheme
    67 Var start_with
    68 Var skip_install
    69 
    70 !include "inst-resources\bitnamiutils.nsh"
    71 !include "inst-resources\dbal.nsh"
    72 !include "inst-resources\mysql.nsh"
    73 !include "inst-resources\postgresql.nsh"
    74 !include "inst-resources\str_replace.nsh"
    75 !include "inst-resources\kickstart.nsh"
    76 !include "inst-resources\apacheconfig.nsh"
    77 !include "inst-resources\applist.nsh"
    78 
    79 ;
    80 ; INSTALL PAGES
    81 ;
    82 
    83 ; Welcome page
    84 ${Page} Welcome2
    85 
    86 ; License page
    87 ${LicensePage} "licenses\GPL.txt"
    88 
    89 ; Stack selection - automatic unless both stacks are installed
    90 !include "pages\StackSelect.nsi"
    91 
    92 ; Database credentials entry
    93 !include "pages\DatabaseConfig.nsi"
    94 
    95 ; Site config page
    96 !include "pages\SiteConfig.nsi"
    97 
    98 ; User credentials page
    99 !include "pages\Login.nsi"
   100 
   101 ; Components page
   102 ${Page} Components
   103 
   104 ; Instfiles page
   105 ${Page} InstFiles
   106 
   107 ; Finish page
   108 !define XPUI_FINISHPAGE_RUN
   109 !define XPUI_FINISHPAGE_CHECKBOX_RUN "Go to my new $(^Name) website now"
   110 !define XPUI_FINISHPAGE_RUN_FUNCTION OpenBitnamiWebsite
   111 Function OpenBitnamiWebsite
   112   ExecShell open "http://localhost$stack_portbit/${PRODUCT_SHORTNAME}/"
   113 FunctionEnd
   114 ${Page} Finish
   115 ${Page} Abort
   116 
   117 ;
   118 ; UNINSTALL PAGES
   119 ;
   120 
   121 ${UnPage} Welcome2
   122 ${UnPage} InstFiles
   123 ${UnPage} Finish
   124 
   125 ; Reserve files
   126 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
   127 
   128 ; Language files
   129 ${Language} "English"
   130 
   131 ; MUI end ------
   132 
   133 Name "${PRODUCT_NAME}"
   134 Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}${PRODUCT_VERSION_APPEND} Bitnami installer"
   135 OutFile "enano-${PRODUCT_VERSION}${PRODUCT_VERSION_APPEND}-bitnami-setup.exe"
   136 InstallDir "$PROGRAMFILES\Enano CMS"
   137 ShowInstDetails show
   138 ShowUnInstDetails show
   139 
   140 ; File lists
   141 !include "inst-resources\core-files.nsh"
   142 ; End file lists
   143 
   144 Section "-pre"
   145   StrCpy $INSTDIR "$stack_instdir"
   146 SectionEnd
   147 
   148 Section "-DatabaseSetup"
   149   StrCmp $db_needroot 1 +2
   150     Return
   151     
   152   ; Create database
   153   ${db_create} $R0 "$db_rootuser" "$db_rootpass" "$db_name" "$db_user" "$db_password"
   154   IntCmp $R0 0 DatabaseCreateSuccess
   155     !insertmacro XPUI_HEADER_TEXT "Installation failed" "Could not create the database."
   156     DetailPrint "Database creation failed."
   157     MessageBox MB_OK|MB_ICONEXCLAMATION "Setup failed to create the database for $(^Name).$\r$\n\
   158                                          $\r$\n\
   159                                          It's possible that your authentication details were rejected or that there \
   160                                          is a bug in the installer. Try removing any special characters (especially \
   161                                          quote symbols and backslashes) from your password. Make sure to use only \
   162                                          letters, numbers, and underscores in the database name and username."
   163     Abort
   164   DatabaseCreateSuccess:
   165 SectionEnd
   166 
   167 Section "Enano Core" SEC01
   168   SectionIn RO
   169   CreateDirectory "$INSTDIR\apps\${PRODUCT_SHORTNAME}"
   170   WriteUninstaller "$INSTDIR\apps\${PRODUCT_SHORTNAME}\uninstall.exe"
   171   !insertmacro Core_Install
   172 SectionEnd
   173 
   174 Section "Enable GMP in PHP" SecGMP
   175   ClearErrors
   176   IfFileExists "$stack_instdir\php\ext\php_gmp.dll" +3
   177   
   178     ; No GMP
   179     MessageBox MB_OK|MB_ICONEXCLAMATION "The stack you selected does not contain the GMP extension, so it cannot be enabled. Logins will be several seconds slower. Please consider upgrading your stack."
   180     Return
   181   
   182   WriteINIStr "$stack_instdir\php\php.ini" "GMP" "extension" "php_gmp.dll"
   183   IfErrors 0 +2
   184     MessageBox MB_OK|MB_ICONEXCLAMATION "GMP was not automatically enabled in PHP. Logins will be several seconds slower."
   185 SectionEnd
   186 
   187 /*  Plugins components commented out, we do not plan on enabling this until at least 1.2.0 RC1
   188 Section "YubiKey auth plugin" SEC02
   189 SectionEnd
   190 
   191 Section "AjIM2" SEC03
   192 SectionEnd
   193 
   194 Section "Admin Alerts" SEC04
   195 SectionEnd
   196 
   197 Section "RSS Feeds" SEC06
   198 SectionEnd
   199 
   200 Section "News Portal" SEC08
   201 SectionEnd
   202 
   203 Section "Code syntax highlighting" SEC11
   204 SectionEnd
   205 
   206 Section "Wiki functionality extensions" SEC12
   207 SectionEnd
   208 
   209 */
   210 
   211 Section -ConfigureApache
   212   DetailPrint "Configuring Apache web server"
   213   Call write_apache_config
   214   DetailPrint "Restarting Apache"
   215   nsExec::Exec '"$SYSDIR\net.exe" stop "$stack_typestackApache"'
   216   nsExec::Exec '"$SYSDIR\net.exe" start "$stack_typestackApache"'
   217   StrCmp $skip_install 1 0 +2
   218     Return
   219     
   220   SetOutPath "$INSTDIR\apps\${PRODUCT_SHORTNAME}\scripts"
   221   File "inst-resources\selfdestruct.php"
   222     
   223   IfFileExists "$INSTDIR\apps\${PRODUCT_SHORTNAME}\htdocs\config.php" "" SkipDestruct
   224     IntCmp $db_needroot 1 JustDeleteTheConfig
   225 	  nsExec::ExecToLog '"$INSTDIR\php\php.exe" "$INSTDIR\apps\${PRODUCT_SHORTNAME}\scripts\selfdestruct.php" --skip-revoke'
   226     JustDeleteTheConfig:
   227     Delete "$INSTDIR\apps\${PRODUCT_SHORTNAME}\htdocs\config.php"
   228   SkipDestruct:
   229   
   230   Call enano_write_kickstart_script
   231   Call enano_run_kickstart_script
   232 SectionEnd
   233 
   234 Section -InsertApplistEntry
   235   ; Skip if this is WAPPStack, it doesn't have an applications.html. (!)
   236   StrCmp $stack_type "WAPP" 0 +2
   237     Return
   238   
   239   Call enano_add_to_applist
   240 SectionEnd
   241 
   242 Section -AdditionalIcons
   243   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
   244   CreateDirectory "$SMPROGRAMS\Enano CMS"
   245   CreateShortCut "$SMPROGRAMS\Enano CMS\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
   246   CreateShortCut "$SMPROGRAMS\Enano CMS\Uninstall.lnk" "$INSTDIR\apps\${PRODUCT_SHORTNAME}\uninstall.exe"
   247 SectionEnd
   248 
   249 Section -Post
   250   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
   251   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\apps\${PRODUCT_SHORTNAME}\uninstall.exe"
   252   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}${PRODUCT_VERSION_APPEND}"
   253   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
   254   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
   255 SectionEnd
   256 
   257 ; Section descriptions
   258 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
   259   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Core components of Enano CMS, necessary to run Enano"
   260   
   261   /* Components disabled
   262   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Adds support for Yubikey authentication"
   263   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "An AJAX chatbox sidebar gadget for Enano"
   264   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Provides a sidebar block that alerts you about unapproved comments, inactive users, and pages with requested deletion."
   265   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "Provides the ability to generate RSS feeds based on the latest page edits and comments. It also has a plugin API so plugins can add their own feeds."
   266   !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} "Provides a portal with news and static content combined onto one page."
   267   !insertmacro MUI_DESCRIPTION_TEXT ${SEC11} "Parser extension that adds syntax highlighting support using the GeSHi highlighting engine."
   268   !insertmacro MUI_DESCRIPTION_TEXT ${SEC12} "Adds several parser extensions that provide MediaWiki-like behavior, including references (footnotes) and Table of Contents support."
   269   */
   270   
   271   !insertmacro MUI_DESCRIPTION_TEXT ${SecGMP} "Enables PHP's GMP extension, which speeds up cryptographic operations."
   272 !insertmacro MUI_FUNCTION_DESCRIPTION_END
   273 
   274 Function .onInit
   275   !ifdef UNINSTALL_DEBUG
   276     WriteUninstaller "$EXEDIR\uninstall.exe"
   277     MessageBox MB_OKCANCEL "Uninstaller written. OK to run installer, Cancel to quit" IDOK +2
   278       Abort
   279   !endif
   280   Call BNSetWAMPInstalledFlag
   281   Call BNSetWAPPInstalledFlag
   282   
   283   ; If neither WAMP nor WAPP is installed, die
   284   StrCmp $wampstack_installed 0 "" FoundStack
   285   StrCmp $wampstack_installed 0 "" FoundStack
   286 
   287     MessageBox MB_OK|MB_ICONEXCLAMATION "Setup could not find any BitNami stacks on your server.$\r$\n\
   288                                          $\r$\n\
   289                                          Please install a BitNami stack and re-run setup. You can download a BitNami stack for free from http://www.bitnami.org."
   290     Abort
   291 
   292   FoundStack:
   293 FunctionEnd
   294 
   295 Function un.onInit
   296   
   297   StrCpy $stack_instdir "$INSTDIR\..\.."
   298   ; this is probably a bad way to determine the stack type
   299   ClearErrors
   300   StrCpy $stack_type "wamp"
   301   ReadINIStr $0 "$stack_instdir\properties.ini" "MySQL" "mysql_port"
   302   IfErrors 0 +2
   303     StrCpy $stack_type "wapp"
   304     
   305 FunctionEnd
   306 
   307 Section Uninstall
   308   
   309   ; Confirm uninstall
   310   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you really sure you want to uninstall ${PRODUCT_NAME}?$\r$\n\
   311                                                  $\r$\n\
   312                                                  Removing ${PRODUCT_NAME} will delete everything that it installed, including your database. If you do not want to \
   313                                                  lose data, cancel this uninstaller and back up your database before uninstalling.$\r$\n\
   314                                                  $\r$\n\
   315                                                  The ${PRODUCT_NAME} uninstaller also deletes any uploaded files, plugins and themes that you may have installed." IDYES +2
   316     Abort
   317   
   318   Delete "$INSTDIR\apps\${PRODUCT_SHORTNAME}\${PRODUCT_NAME}.url"
   319 
   320   ; Remove from Apache config
   321   DetailPrint "Removing ${PRODUCT_NAME} from Apache configuration"
   322   Call un.disable_in_apache_config
   323   
   324   ; Remove from applications.html
   325   ; SON OF A BITCH. BitNami, please, PLEASE make applications.html a PHP script that includes all files in a directory.
   326   DetailPrint "Removing ${PRODUCT_NAME} from applications.html"
   327   Call un.disable_in_applications_html
   328   
   329   ; Restart Apache
   330   DetailPrint "Restarting Apache"
   331   nsExec::Exec '"$SYSDIR\net.exe" stop "$stack_typestackApache"'
   332   nsExec::Exec '"$SYSDIR\net.exe" start "$stack_typestackApache"'
   333   
   334   DetailPrint "Uninstalling database"
   335   nsExec::ExecToLog '"$stack_instdir\php\php.exe" "$INSTDIR\scripts\selfdestruct.php"'
   336   
   337   DetailPrint "Deleting files..."
   338   SetDetailsPrint listonly
   339   
   340 ; Remove shortcut stored in $INSTDIR
   341   Delete "$INSTDIR\${PRODUCT_NAME}.url"
   342   
   343   !insertmacro Core_Uninstall
   344   SetDetailsPrint both
   345 
   346   ; Remove shortcuts in Start Menu
   347   Delete "$SMPROGRAMS\Enano CMS\Website.lnk" 
   348   Delete "$SMPROGRAMS\Enano CMS\Uninstall.lnk"
   349   RMDir "$SMPROGRAMS\Enano CMS"
   350 
   351   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
   352   SetAutoClose true
   353 SectionEnd
   354 
   355 ; Version Information
   356 
   357 VIProductVersion "${PRODUCT_VERSION}.0"
   358 VIAddVersionKey /LANG=1033 "ProductName" "Enano CMS"
   359 VIAddVersionKey /LANG=1033 "Setup Information" "Enano CMS installer module for Windows Apache stacks"
   360 VIAddVersionKey /LANG=1033 "Comments" "This installer contains a beta build of Enano CMS, use with caution!"
   361 VIAddVersionKey /LANG=1033 "Publisher Name" "Neal Gompa (King InuYasha), Enano CMS Project"
   362 VIAddVersionKey /LANG=1033 "LegalCopyright" "©2009 Enano CMS Project"
   363 VIAddVersionKey /LANG=1033 "FileDescription" "Enano - The CMS that focuses on what matters most: content."
   364 VIAddVersionKey /LANG=1033 "FileVersion" "${PRODUCT_VERSION}${PRODUCT_VERSION_APPEND}"