Advertisement
Guest User

Untitled

a guest
Mar 4th, 2011
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Copyright (C) 2004-2010 John T. Haller
  2. ;Copyright (C) 2008-2010 Brandon Cheng (gluxon)
  3.  
  4. ;Website: http://PortableApps.com/EclipsePortable
  5.  
  6. ;This software is OSI Certified Open Source Software.
  7. ;OSI Certified is a certification mark of the Open Source Initiative.
  8.  
  9. ;This program is free software; you can redistribute it and/or
  10. ;modify it under the terms of the GNU General Public License
  11. ;as published by the Free Software Foundation; either version 2
  12. ;of the License, or (at your option) any later version.
  13.  
  14. ;This program is distributed in the hope that it will be useful,
  15. ;but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. ;GNU General Public License for more details.
  18.  
  19. ;You should have received a copy of the GNU General Public License
  20. ;along with this program; if not, write to the Free Software
  21. ;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  22.  
  23. !define PORTABLEAPPNAME "Eclipse Portable"
  24. !define NAME "EclipsePortable"
  25. !define APPNAME "Eclipse"
  26. !define VER "1.0.0.0b1"
  27. !define WEBSITE "PortableApps.com/EclipsePortable"
  28. !define DEFAULTEXE "eclipse.exe"
  29. !define DEFAULTAPPDIR "App\Eclipse"
  30. !define DEFAULTSETTINGSDIR "Data\settings"
  31. !define LAUNCHERLANGUAGE "English"
  32.  
  33. ;=== Program Details
  34. Name "${PORTABLEAPPNAME}"
  35. OutFile "..\..\${NAME}.exe"
  36. Caption "${PORTABLEAPPNAME} | PortableApps.com"
  37. VIProductVersion "${VER}"
  38. VIAddVersionKey ProductName "${PORTABLEAPPNAME}"
  39. VIAddVersionKey Comments "Allows ${APPNAME} to be run from a removable drive.  For additional details, visit ${WEBSITE}"
  40. VIAddVersionKey CompanyName "PortableApps.com"
  41. VIAddVersionKey LegalCopyright "PortableApps.com & Contributors"
  42. VIAddVersionKey FileDescription "${PORTABLEAPPNAME}"
  43. VIAddVersionKey FileVersion "${VER}"
  44. VIAddVersionKey ProductVersion "${VER}"
  45. VIAddVersionKey InternalName "${PORTABLEAPPNAME}"
  46. VIAddVersionKey LegalTrademarks "PortableApps.com is a Trademark of Rare Ideas, LLC."
  47. VIAddVersionKey OriginalFilename "${NAME}.exe"
  48. ;VIAddVersionKey PrivateBuild ""
  49. ;VIAddVersionKey SpecialBuild ""
  50.  
  51. ;=== Runtime Switches
  52. CRCCheck On
  53. WindowIcon Off
  54. SilentInstall Silent
  55. AutoCloseWindow True
  56. RequestExecutionLevel user
  57.  
  58. ;=== Best Compression
  59. SetCompress Auto
  60. SetCompressor /SOLID lzma
  61. SetCompressorDictSize 32
  62. SetDatablockOptimize On
  63.  
  64. ;=== Program Icon
  65. Icon "..\..\App\AppInfo\appicon.ico"
  66.  
  67. ;=== Include
  68. ;(Standard NSIS)
  69. !include TextFunc.nsh
  70. !include FileFunc.nsh
  71. !include WordFunc.nsh
  72. !include LogicLib.nsh
  73.  
  74. ;(Plugins)
  75. !include StrRep.nsh
  76. !include TextReplace.nsh
  77.  
  78. ;(Macros)
  79. !insertmacro WordReplace
  80. !insertmacro GetParent
  81. !insertmacro GetParameters
  82. !insertmacro GetRoot
  83.  
  84. ;(Custom)
  85. !include ReplaceInFile.nsh
  86. !include ReadINIStrWithDefault.nsh
  87. !include RepairUpdir.nsh
  88. !include Explode.nsh
  89.  
  90. ;=== Languages
  91. ;!insertmacro MUI_LANGUAGE "${LAUNCHERLANGUAGE}"
  92. !include PortableApps.comLauncherLANG_${LAUNCHERLANGUAGE}.nsh
  93.  
  94. Var PROGRAMDIRECTORY
  95. Var SETTINGSDIRECTORY
  96. Var PROGRAMEXECUTABLE
  97. Var ADDITIONALPARAMETERS
  98. Var MISSINGFILEORPATH
  99.  
  100. Var ROOT
  101. Var ROOT2
  102. Var LASTDRIVE
  103. Var LASTDRIVE2
  104. Var APPDIRECTORY
  105. Var DATADIRECTORY
  106. Var PARENTDIRECTORY
  107. Var WORKSPACEDIRECTORY
  108. Var WORKSPACEDIRECTORY2
  109. Var JAVAPATH
  110. Var NSISPATH
  111. Var MINGWPATH
  112. Var PARAMETERS
  113.  
  114. Var MINGPATJ
  115.  
  116. Section Main
  117.     ;Finding out the drive's letter and parent dir
  118.     ${GetParent} "$EXEDIR" "$PARENTDIRECTORY"
  119.     ${GetRoot} "$EXEDIR" "$ROOT"
  120.     ${GetParameters} "$PARAMETERS"
  121.     ${WordReplace} "$ROOT" ":" "\:" "+" "$ROOT2"
  122.  
  123.     ${If} ${FileExists} "$EXEDIR\${NAME}.ini"
  124.  
  125.         ;Reading the INI
  126.         ${ReadINIStrWithDefault} "$0" "$EXEDIR\${NAME}.ini" "${NAME}" "${APPNAME}Directory" "${DEFAULTAPPDIR}"
  127.         StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\$0"
  128.  
  129.         ${ReadINIStrWithDefault} "$0" "$EXEDIR\${NAME}.ini" "${NAME}" "SettingsDirectory" "${DEFAULTSETTINGSDIR}"
  130.         StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\$0"
  131.  
  132.         ${ReadINIStrWithDefault} "$PROGRAMEXECUTABLE" "$EXEDIR\${NAME}.ini" "${NAME}" "${APPNAME}Executable" "${DEFAULTEXE}"
  133.         ${ReadINIStrWithDefault} "$JAVAPATH" "$EXEDIR\${NAME}.ini" "${NAME}" "JavaPath" "..\CommonFiles\Java\bin"
  134.         ${ReadINIStrWithDefault} "$MINGWPATH" "$EXEDIR\${NAME}.ini" "${NAME}" "MinGWPath" "..\MinGWPortable\App\MinGW\bin"
  135.         ${ReadINIStrWithDefault} "$ADDITIONALPARAMETERS" "$EXEDIR\${NAME}.ini" "${NAME}" "AdditionalParameters" ""
  136.  
  137.     ${Else}
  138.  
  139.         ;Using Defaults
  140.         StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\${DEFAULTAPPDIR}"
  141.         StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\${DEFAULTSETTINGSDIR}"
  142.         StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
  143.         StrCpy "$JAVAPATH" "..\CommonFiles\Java\bin"
  144.         StrCpy "$MINGWPATH" "..\MinGWPortable\App\MinGW\bin"
  145.         StrCpy "$ADDITIONALPARAMETERS" ""
  146.  
  147.     ${EndIf}
  148.  
  149.     ${IfNot} ${FileExists} "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"
  150.  
  151.         ;No eclipse.exe in [X]:\PortableApps\EclipsePortable\App\Eclipse\ exists
  152.         StrCpy "$MISSINGFILEORPATH" "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"
  153.         MessageBox MB_OK|MB_ICONEXCLAMATION "$(LauncherFileNotFound)"
  154.         Abort
  155.  
  156.     ${EndIf}
  157.  
  158.     ;Make relative absolute!
  159.     Push "$EXEDIR\$MINGWPATH"
  160.     Call RepairUpdir
  161.     Pop $MINGWPATH
  162.  
  163.     Push "$EXEDIR\$JAVAPATH"
  164.     Call RepairUpdir
  165.     Pop $JAVAPATH
  166.  
  167.     ${If} ${FileExists} "$SETTINGSDIRECTORY\${NAME}Settings.ini"
  168.  
  169.         ;Read previous launcher settings
  170.         ReadINIStr "$0" "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive"
  171.         StrCpy "$LASTDRIVE" "$0"
  172.         ReadINIStr "$R1" "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "FirstRun"
  173.  
  174.     ${Else}
  175.  
  176.         ;No Launcher settings, lets use defaults!
  177.         CreateDirectory "$SETTINGSDIRECTORY"
  178.         SetOutPath "$SETTINGSDIRECTORY"
  179.         StrCpy "$LASTDRIVE" "$ROOT"
  180.         StrCpy "$R1" "true"
  181.  
  182.     ${EndIf}
  183.  
  184.     ;Eclipse uses double slashes in paths
  185.     ${WordReplace} "$LASTDRIVE" ":" "\:" "+" "$LASTDRIVE2"
  186.  
  187.     ;Let's create the settings
  188.     CreateDirectory "$PROGRAMDIRECTORY\configuration\.settings"
  189.     ${IfNot} ${FileExists} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs"
  190.         WriteINIStr "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "${NAME}" "YouShouldNotSeeThis" "IfYouDoThatsBad"
  191.         FileOpen $0 "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" w
  192.         FileWrite $0 ""
  193.         FileClose $0
  194.     ${EndIf}
  195.  
  196.     ${If} $R1 == "true"
  197.     ;This is the first run of EclipsePortable
  198.  
  199.         ;Set up workspace directory with double paths
  200.         ${GetParent} "$SETTINGSDIRECTORY" "$DATADIRECTORY"
  201.         StrCpy "$WORKSPACEDIRECTORY" "$DATADIRECTORY\workspace"
  202.         ${WordReplace} "$WORKSPACEDIRECTORY" "\" "\\" "+" "$WORKSPACEDIRECTORY2"
  203.         ${WordReplace} "$WORKSPACEDIRECTORY2" "$ROOT" "$ROOT2" "+" "$WORKSPACEDIRECTORY2"
  204.        
  205.         ;Set up settings file with workspace
  206.         CreateDirectory "$PROGRAMDIRECTORY\configuration\.settings"
  207.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES_PROTOCOL=" "3" "$0"
  208.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "MAX_RECENT_WORKSPACES=" "1" "$0"
  209.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "SHOW_WORKSPACE_SELECTION_DIALOG=" "false" "$0"
  210.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2" "$0"
  211.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "eclipse.preferences.version=" "1" "$0"
  212.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\config.ini" "osgi.instance.area.default=" "$WORKSPACEDIRECTORY2" "$0"
  213.  
  214.         ;EclipseNSIS
  215.         StrCpy "$NSISPATH" "$PARENTDIRECTORY\NSISPortable\App\NSIS"
  216.         ${WordReplace} "$NSISPATH" "\\" "\" "+" "$NSISPATH"
  217.  
  218.     ${Else}
  219.     ;Mananging Eclipse's settings
  220.  
  221.         ; Get our workspace paths
  222.         ${ConfigRead} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2"
  223.         ${WordReplace} "$WORKSPACEDIRECTORY2" "$LASTDRIVE2" "$ROOT2" "+" "$WORKSPACEDIRECTORY2"
  224.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2" "$0"
  225.         ${WordReplace} "$WORKSPACEDIRECTORY2" "\\" "\" "+" "$WORKSPACEDIRECTORY"
  226.         ${WordReplace} "$WORKSPACEDIRECTORY" "$ROOT2" "$ROOT" "+" "$WORKSPACEDIRECTORY"
  227.  
  228.         ;Explode the workspace directory, so we can support multiple workspaces
  229.         ${Explode} $0 "\n" $WORKSPACEDIRECTORY
  230.         Pop $WORKSPACEDIRECTORY
  231.  
  232.         ;Update Locations
  233.         ${ReplaceInFile} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml" "$LASTDRIVE" "$ROOT"
  234.         Delete "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml.old"
  235.  
  236.         ;Update Workspace with new drive letter path
  237.         ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\config.ini" "osgi.instance.area.default=" "$WORKSPACEDIRECTORY2" "$0"
  238.  
  239.         ;Get EclipseNSIS Paths
  240.         ${ConfigRead} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.core.runtime\.settings\net.sf.eclipsensis.prefs" "nsisHome=" "$NSISPATH"
  241.         ${WordReplace} "$NSISPATH" "$LASTDRIVE2" "$ROOT2" "+" "$NSISPATH"
  242.  
  243.     ${EndIf}
  244.  
  245.     ;Update EclispeNSIS paths
  246.     ${ConfigWrite} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.core.runtime\.settings\net.sf.eclipsensis.prefs" "nsisHome=" "$NSISPATH" "$0"
  247.  
  248.     ;Set up MinGW Toolchain
  249.     ReadEnvStr $0 "PATH"
  250.     StrCpy $MINGPATJ "$MINGWPATH;$0"
  251.     System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("PATH", "$MINGPATJ").r0'
  252.     ReadEnvStr $0 "PATH"
  253.     MessageBox MB_OK "$0"
  254.     quit
  255.  
  256.     ;Eclipse Portable Settings
  257.     WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "FirstRun" "False"
  258.     WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive" "$ROOT"
  259.  
  260.     ;Check for Java
  261.     ${IfNot} ${FileExists} "$JAVAPATH\javaw.exe"
  262.         ${If} ${FileExists} "$PARENTDIRECTORY\CommonFiles\Java\bin\javaw.exe"
  263.             Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$PARENTDIRECTORY\CommonFiles\Java\bin" "$ADDITIONALPARAMETERS"'
  264.         ${Else}
  265.             ${GetParent} "$PROGRAMDIRECTORY" "$APPDIRECTORY"
  266.             ${If} ${FileExists} "$APPDIRECTORY\Java\bin\javaw.exe"
  267.                 Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$APPDIRECTORY\Java\bin" "$ADDITIONALPARAMETERS"'
  268.             ${Else}
  269.                 ;No Java, let's hope it's installed locally, if not, Ecipse will handle the rest of the errors
  270.                 Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" "$ADDITIONALPARAMETERS"'
  271.             ${EndIf}
  272.         ${EndIf}
  273.     ${Else}
  274.         Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$JAVAPATH" "$ADDITIONALPARAMETERS"'
  275.     ${EndIf}
  276. SectionEnd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement