Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Copyright (C) 2004-2010 John T. Haller
- ;Copyright (C) 2008-2010 Brandon Cheng (gluxon)
- ;Website: http://PortableApps.com/EclipsePortable
- ;This software is OSI Certified Open Source Software.
- ;OSI Certified is a certification mark of the Open Source Initiative.
- ;This program is free software; you can redistribute it and/or
- ;modify it under the terms of the GNU General Public License
- ;as published by the Free Software Foundation; either version 2
- ;of the License, or (at your option) any later version.
- ;This program is distributed in the hope that it will be useful,
- ;but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;GNU General Public License for more details.
- ;You should have received a copy of the GNU General Public License
- ;along with this program; if not, write to the Free Software
- ;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- !define PORTABLEAPPNAME "Eclipse Portable"
- !define NAME "EclipsePortable"
- !define APPNAME "Eclipse"
- !define VER "1.0.0.0b1"
- !define WEBSITE "PortableApps.com/EclipsePortable"
- !define DEFAULTEXE "eclipse.exe"
- !define DEFAULTAPPDIR "App\Eclipse"
- !define DEFAULTSETTINGSDIR "Data\settings"
- !define LAUNCHERLANGUAGE "English"
- ;=== Program Details
- Name "${PORTABLEAPPNAME}"
- OutFile "..\..\${NAME}.exe"
- Caption "${PORTABLEAPPNAME} | PortableApps.com"
- VIProductVersion "${VER}"
- VIAddVersionKey ProductName "${PORTABLEAPPNAME}"
- VIAddVersionKey Comments "Allows ${APPNAME} to be run from a removable drive. For additional details, visit ${WEBSITE}"
- VIAddVersionKey CompanyName "PortableApps.com"
- VIAddVersionKey LegalCopyright "PortableApps.com & Contributors"
- VIAddVersionKey FileDescription "${PORTABLEAPPNAME}"
- VIAddVersionKey FileVersion "${VER}"
- VIAddVersionKey ProductVersion "${VER}"
- VIAddVersionKey InternalName "${PORTABLEAPPNAME}"
- VIAddVersionKey LegalTrademarks "PortableApps.com is a Trademark of Rare Ideas, LLC."
- VIAddVersionKey OriginalFilename "${NAME}.exe"
- ;VIAddVersionKey PrivateBuild ""
- ;VIAddVersionKey SpecialBuild ""
- ;=== Runtime Switches
- CRCCheck On
- WindowIcon Off
- SilentInstall Silent
- AutoCloseWindow True
- RequestExecutionLevel user
- ;=== Best Compression
- SetCompress Auto
- SetCompressor /SOLID lzma
- SetCompressorDictSize 32
- SetDatablockOptimize On
- ;=== Program Icon
- Icon "..\..\App\AppInfo\appicon.ico"
- ;=== Include
- ;(Standard NSIS)
- !include TextFunc.nsh
- !include FileFunc.nsh
- !include WordFunc.nsh
- !include LogicLib.nsh
- ;(Plugins)
- !include StrRep.nsh
- !include TextReplace.nsh
- ;(Macros)
- !insertmacro WordReplace
- !insertmacro GetParent
- !insertmacro GetParameters
- !insertmacro GetRoot
- ;(Custom)
- !include ReplaceInFile.nsh
- !include ReadINIStrWithDefault.nsh
- !include RepairUpdir.nsh
- !include Explode.nsh
- ;=== Languages
- ;!insertmacro MUI_LANGUAGE "${LAUNCHERLANGUAGE}"
- !include PortableApps.comLauncherLANG_${LAUNCHERLANGUAGE}.nsh
- Var PROGRAMDIRECTORY
- Var SETTINGSDIRECTORY
- Var PROGRAMEXECUTABLE
- Var ADDITIONALPARAMETERS
- Var MISSINGFILEORPATH
- Var ROOT
- Var ROOT2
- Var LASTDRIVE
- Var LASTDRIVE2
- Var APPDIRECTORY
- Var DATADIRECTORY
- Var PARENTDIRECTORY
- Var WORKSPACEDIRECTORY
- Var WORKSPACEDIRECTORY2
- Var JAVAPATH
- Var NSISPATH
- Var MINGWPATH
- Var PARAMETERS
- Var MINGPATJ
- Section Main
- ;Finding out the drive's letter and parent dir
- ${GetParent} "$EXEDIR" "$PARENTDIRECTORY"
- ${GetRoot} "$EXEDIR" "$ROOT"
- ${GetParameters} "$PARAMETERS"
- ${WordReplace} "$ROOT" ":" "\:" "+" "$ROOT2"
- ${If} ${FileExists} "$EXEDIR\${NAME}.ini"
- ;Reading the INI
- ${ReadINIStrWithDefault} "$0" "$EXEDIR\${NAME}.ini" "${NAME}" "${APPNAME}Directory" "${DEFAULTAPPDIR}"
- StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\$0"
- ${ReadINIStrWithDefault} "$0" "$EXEDIR\${NAME}.ini" "${NAME}" "SettingsDirectory" "${DEFAULTSETTINGSDIR}"
- StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\$0"
- ${ReadINIStrWithDefault} "$PROGRAMEXECUTABLE" "$EXEDIR\${NAME}.ini" "${NAME}" "${APPNAME}Executable" "${DEFAULTEXE}"
- ${ReadINIStrWithDefault} "$JAVAPATH" "$EXEDIR\${NAME}.ini" "${NAME}" "JavaPath" "..\CommonFiles\Java\bin"
- ${ReadINIStrWithDefault} "$MINGWPATH" "$EXEDIR\${NAME}.ini" "${NAME}" "MinGWPath" "..\MinGWPortable\App\MinGW\bin"
- ${ReadINIStrWithDefault} "$ADDITIONALPARAMETERS" "$EXEDIR\${NAME}.ini" "${NAME}" "AdditionalParameters" ""
- ${Else}
- ;Using Defaults
- StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\${DEFAULTAPPDIR}"
- StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\${DEFAULTSETTINGSDIR}"
- StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}"
- StrCpy "$JAVAPATH" "..\CommonFiles\Java\bin"
- StrCpy "$MINGWPATH" "..\MinGWPortable\App\MinGW\bin"
- StrCpy "$ADDITIONALPARAMETERS" ""
- ${EndIf}
- ${IfNot} ${FileExists} "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"
- ;No eclipse.exe in [X]:\PortableApps\EclipsePortable\App\Eclipse\ exists
- StrCpy "$MISSINGFILEORPATH" "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(LauncherFileNotFound)"
- Abort
- ${EndIf}
- ;Make relative absolute!
- Push "$EXEDIR\$MINGWPATH"
- Call RepairUpdir
- Pop $MINGWPATH
- Push "$EXEDIR\$JAVAPATH"
- Call RepairUpdir
- Pop $JAVAPATH
- ${If} ${FileExists} "$SETTINGSDIRECTORY\${NAME}Settings.ini"
- ;Read previous launcher settings
- ReadINIStr "$0" "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive"
- StrCpy "$LASTDRIVE" "$0"
- ReadINIStr "$R1" "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "FirstRun"
- ${Else}
- ;No Launcher settings, lets use defaults!
- CreateDirectory "$SETTINGSDIRECTORY"
- SetOutPath "$SETTINGSDIRECTORY"
- StrCpy "$LASTDRIVE" "$ROOT"
- StrCpy "$R1" "true"
- ${EndIf}
- ;Eclipse uses double slashes in paths
- ${WordReplace} "$LASTDRIVE" ":" "\:" "+" "$LASTDRIVE2"
- ;Let's create the settings
- CreateDirectory "$PROGRAMDIRECTORY\configuration\.settings"
- ${IfNot} ${FileExists} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs"
- WriteINIStr "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "${NAME}" "YouShouldNotSeeThis" "IfYouDoThatsBad"
- FileOpen $0 "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" w
- FileWrite $0 ""
- FileClose $0
- ${EndIf}
- ${If} $R1 == "true"
- ;This is the first run of EclipsePortable
- ;Set up workspace directory with double paths
- ${GetParent} "$SETTINGSDIRECTORY" "$DATADIRECTORY"
- StrCpy "$WORKSPACEDIRECTORY" "$DATADIRECTORY\workspace"
- ${WordReplace} "$WORKSPACEDIRECTORY" "\" "\\" "+" "$WORKSPACEDIRECTORY2"
- ${WordReplace} "$WORKSPACEDIRECTORY2" "$ROOT" "$ROOT2" "+" "$WORKSPACEDIRECTORY2"
- ;Set up settings file with workspace
- CreateDirectory "$PROGRAMDIRECTORY\configuration\.settings"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES_PROTOCOL=" "3" "$0"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "MAX_RECENT_WORKSPACES=" "1" "$0"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "SHOW_WORKSPACE_SELECTION_DIALOG=" "false" "$0"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2" "$0"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "eclipse.preferences.version=" "1" "$0"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\config.ini" "osgi.instance.area.default=" "$WORKSPACEDIRECTORY2" "$0"
- ;EclipseNSIS
- StrCpy "$NSISPATH" "$PARENTDIRECTORY\NSISPortable\App\NSIS"
- ${WordReplace} "$NSISPATH" "\\" "\" "+" "$NSISPATH"
- ${Else}
- ;Mananging Eclipse's settings
- ; Get our workspace paths
- ${ConfigRead} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2"
- ${WordReplace} "$WORKSPACEDIRECTORY2" "$LASTDRIVE2" "$ROOT2" "+" "$WORKSPACEDIRECTORY2"
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\.settings\org.eclipse.ui.ide.prefs" "RECENT_WORKSPACES=" "$WORKSPACEDIRECTORY2" "$0"
- ${WordReplace} "$WORKSPACEDIRECTORY2" "\\" "\" "+" "$WORKSPACEDIRECTORY"
- ${WordReplace} "$WORKSPACEDIRECTORY" "$ROOT2" "$ROOT" "+" "$WORKSPACEDIRECTORY"
- ;Explode the workspace directory, so we can support multiple workspaces
- ${Explode} $0 "\n" $WORKSPACEDIRECTORY
- Pop $WORKSPACEDIRECTORY
- ;Update Locations
- ${ReplaceInFile} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml" "$LASTDRIVE" "$ROOT"
- Delete "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.ui.workbench\workbench.xml.old"
- ;Update Workspace with new drive letter path
- ${ConfigWrite} "$PROGRAMDIRECTORY\configuration\config.ini" "osgi.instance.area.default=" "$WORKSPACEDIRECTORY2" "$0"
- ;Get EclipseNSIS Paths
- ${ConfigRead} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.core.runtime\.settings\net.sf.eclipsensis.prefs" "nsisHome=" "$NSISPATH"
- ${WordReplace} "$NSISPATH" "$LASTDRIVE2" "$ROOT2" "+" "$NSISPATH"
- ${EndIf}
- ;Update EclispeNSIS paths
- ${ConfigWrite} "$WORKSPACEDIRECTORY\.metadata\.plugins\org.eclipse.core.runtime\.settings\net.sf.eclipsensis.prefs" "nsisHome=" "$NSISPATH" "$0"
- ;Set up MinGW Toolchain
- ReadEnvStr $0 "PATH"
- StrCpy $MINGPATJ "$MINGWPATH;$0"
- System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("PATH", "$MINGPATJ").r0'
- ReadEnvStr $0 "PATH"
- MessageBox MB_OK "$0"
- quit
- ;Eclipse Portable Settings
- WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "FirstRun" "False"
- WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive" "$ROOT"
- ;Check for Java
- ${IfNot} ${FileExists} "$JAVAPATH\javaw.exe"
- ${If} ${FileExists} "$PARENTDIRECTORY\CommonFiles\Java\bin\javaw.exe"
- Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$PARENTDIRECTORY\CommonFiles\Java\bin" "$ADDITIONALPARAMETERS"'
- ${Else}
- ${GetParent} "$PROGRAMDIRECTORY" "$APPDIRECTORY"
- ${If} ${FileExists} "$APPDIRECTORY\Java\bin\javaw.exe"
- Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$APPDIRECTORY\Java\bin" "$ADDITIONALPARAMETERS"'
- ${Else}
- ;No Java, let's hope it's installed locally, if not, Ecipse will handle the rest of the errors
- Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" "$ADDITIONALPARAMETERS"'
- ${EndIf}
- ${EndIf}
- ${Else}
- Exec '"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" "$PARAMETERS" -vm "$JAVAPATH" "$ADDITIONALPARAMETERS"'
- ${EndIf}
- SectionEnd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement