;TODO ADD SECONDARY LAUNCH ALA GIMP ;Copyright (C) 2004-2009 John T. Haller ;Website: http://PortableApps.com/RedNotebookPortable ;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 NAME "RedNotebookPortable" !define PORTABLEAPPNAME "RedNotebook Portable" !define APPNAME "RedNotebook" !define VER "0.0.9.3" !define WEBSITE "PortableApps.com/RedNotebookPortable" !define DEFAULTEXE "rednotebook.exe" !define DEFAULTAPPDIR "RedNotebook" ; =============== Change Made !define DEFAULTGTKDIR "rednotebook" !define DEFAULTSETTINGSDIR "RedNotebook" !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 "John T. Haller" 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 XPStyle on ; Best Compression SetCompress Auto SetCompressor /SOLID lzma SetCompressorDictSize 32 SetDatablockOptimize On ;=== Include ;(Standard NSIS) !include FileFunc.nsh !insertmacro GetParameters !insertmacro GetParent !insertmacro GetRoot !include Registry.nsh ;(NSIS Plugins) !include TextReplace.nsh ;(Custom) !include GetWindowsVersion.nsh !include ReplaceInFileWithTextReplace.nsh !include ReadINIStrWithDefault.nsh ;=== Program Icon Icon "..\..\App\AppInfo\appicon.ico" ;=== Icon & Stye === ;!define MUI_ICON "..\..\App\AppInfo\appicon.ico" ;=== Languages LoadLanguageFile "${NSISDIR}\Contrib\Language files\${LAUNCHERLANGUAGE}.nlf" !include PortableApps.comLauncherLANG_${LAUNCHERLANGUAGE}.nsh Var PROGRAMDIRECTORY Var GTKDIRECTORY ;====== Change Made Var ASPELLDIRECTORY Var SETTINGSDIRECTORY Var ADDITIONALPARAMETERS Var EXECSTRING Var WAITFORPROGRAM Var PROGRAMEXECUTABLE Var DISABLESPLASHSCREEN ;==========Var ISDEFAULTDIRECTORY Var RedNotebookLANGUAGE Var WINDOWSVERSION Var MISSINGFILEORPATH Var EXISTSFILECHOOSER Var EXISTSXBEL Var USERPROFILE Var SECONDARYLAUNCH Section "Main" ${ReadINIStrWithDefault} $ADDITIONALPARAMETERS "$EXEDIR\${NAME}.ini" "${NAME}" "AdditionalParameters" "" ${ReadINIStrWithDefault} $WAITFORPROGRAM "$EXEDIR\${NAME}.ini" "${NAME}" "WaitFor${APPNAME}" "false" ${ReadINIStrWithDefault} $DISABLESPLASHSCREEN "$EXEDIR\${NAME}.ini" "${NAME}" "DisableSplashScreen" "false" IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE StrCpy "$PROGRAMDIRECTORY" "$EXEDIR\App\${DEFAULTAPPDIR}" StrCpy "$GTKDIRECTORY" "$EXEDIR\App\${DEFAULTGTKDIR}" ; ========== Change Made StrCpy "$ASPELLDIRECTORY" "$EXEDIR\App\aspell" StrCpy "$SETTINGSDIRECTORY" "$EXEDIR\Data\${DEFAULTSETTINGSDIR}" ;=====StrCpy "$ISDEFAULTDIRECTORY" "true" StrCpy "$PROGRAMEXECUTABLE" "${DEFAULTEXE}" ${GetWindowsVersion} $WINDOWSVERSION ; ======== StrCpy $WINDOWSVERSION $WINDOWSVERSION 2 ; ======StrCmp $WINDOWSVERSION '95' GTKLegacy ; ==========StrCmp $WINDOWSVERSION '98' GTKLegacy ; =====StrCmp $WINDOWSVERSION 'ME' GTKLegacy ;=========StrCmp $WINDOWSVERSION 'NT' GTKLegacy ;=== Check GTK directory IfFileExists "$EXEDIR\App\${DEFAULTGTKDIR}\bin\*.*" "" GTKCommonFiles StrCpy $GTKDIRECTORY "$EXEDIR\App\${DEFAULTGTKDIR}" Goto EndINI GTKCommonFiles: ${GetParent} "$EXEDIR" $0 StrCpy $GTKDIRECTORY "$0\CommonFiles\GTK" GoTo EndINI ;=======GTKLegacy: ;=== Check GTK directory ;======IfFileExists "$EXEDIR\App\${DEFAULTGTKDIR}Legacy\bin\*.*" "" GTKLegacyCommonFiles ; =========StrCpy $GTKDIRECTORY "$EXEDIR\App\${DEFAULTGTKDIR}Legacy" ;=====Goto EndINI GTKLegacyCommonFiles: ; ========${GetParent} "$EXEDIR" $0 ;===StrCpy $GTKDIRECTORY "$0\CommonFiles\GTKLegacy" ;======GoTo EndINI EndINI: ;=== Check if already running System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}") i .r1 ?e' Pop $0 StrCmp $0 0 CheckForEXE StrCpy $SECONDARYLAUNCH "true" StrCpy $DISABLESPLASHSCREEN "true" CheckForEXE: IfFileExists "$GTKDIRECTORY\bin\*.*" "" GTKNotFound IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE GTKNotFound: StrCpy $MISSINGFILEORPATH $GTKDIRECTORY MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)` Abort NoProgramEXE: ;=== Program executable not where expected StrCpy $MISSINGFILEORPATH $PROGRAMEXECUTABLE MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)` Abort FoundProgramEXE: StrCmp $DISABLESPLASHSCREEN "true" SkipSplashScreen ;=== Show the splash screen before processing the files InitPluginsDir File /oname=$PLUGINSDIR\splash.jpg "${NAME}.jpg" newadvsplash::show /NOUNLOAD 1500 0 0 -1 /L $PLUGINSDIR\splash.jpg SkipSplashScreen: ;=== Get any passed parameters ${GetParameters} $0 StrCmp "'$0'" "''" "" LaunchProgramParameters ;=== No parameters StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" -c [$SETTINGSDIRECTORY]` MessageBox MB_OK "Arrived at EXECSTRING copy" Goto AdditionalParameters LaunchProgramParameters: StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" -c [$SETTINGSDIRECTORY\] $0` AdditionalParameters: StrCmp $ADDITIONALPARAMETERS "" RedNotebookEnvironment ;=== Additional Parameters StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS` RedNotebookEnvironment: ;=== Set the %RedNotebookHOME% directory if we have a path StrCmp $SETTINGSDIRECTORY "" RedNotebookSettingsNotFound IfFileExists "$SETTINGSDIRECTORY\*.*" RedNotebookSettingsFound RedNotebookSettingsNotFound: StrCmp $ISDEFAULTDIRECTORY "true" SetupDefaultSettings StrCpy $MISSINGFILEORPATH $SETTINGSDIRECTORY MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)` Abort SetupDefaultSettings: CreateDirectory "$EXEDIR\Data\settings" CopyFiles /SILENT $EXEDIR\App\DefaultData\settings\*.* $EXEDIR\Data\settings RedNotebookSettingsFound: System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("HOME", "$SETTINGSDIRECTORY").r0' ;=== Add GTK to the %PATH% directory if we have a path, otherwise, skip it StrCpy $0 "$GTKDIRECTORY\bin;$PROGRAMDIRECTORY" System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PATH", "$0").r0' System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("GTK_BASEPATH", "$GTKDIRECTORY").r0' StrCmp $SECONDARYLAUNCH "true" LaunchAndExit ReadEnvStr $RedNotebookLANGUAGE "PortableApps.comLocaleglibc" StrCmp $RedNotebookLANGUAGE "" RedNotebookLanguageSettingsFile StrCmp $RedNotebookLANGUAGE "en_US" SetRedNotebookLanuageVariable IfFileExists "$PROGRAMDIRECTORY\locale\$RedNotebookLANGUAGE\*.*" SetRedNotebookLanuageVariable RedNotebookLanguageSettingsFile RedNotebookLanguageSettingsFile: ReadINIStr $RedNotebookLANGUAGE "$SETTINGSDIRECTORY\${NAME}Settings.ini" "Language" "RedNotebookLANG" ClearErrors ;if any StrCmp $RedNotebookLANGUAGE "" AdjustSettings StrCmp $RedNotebookLANGUAGE "en_US" SetRedNotebookLanuageVariable IfFileExists "$PROGRAMDIRECTORY\locale\$RedNotebookLANGUAGE\*.*" SetRedNotebookLanuageVariable AdjustSettings SetRedNotebookLanuageVariable: System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("RedNotebookLANG", "$RedNotebookLANGUAGE").r0' AdjustSettings: ${GetRoot} $EXEDIR $0 ReadINIStr $1 "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDriveLetter" StrCmp $1 "" StoreCurrentDriveLetter ; ===========StrCmp $1 $0 AspellEnvironment ;==IfFileExists "$SETTINGSDIRECTORY\.purple\prefs.xml" "" StoreCurrentDriveLetter ;==${ReplaceInFile} "$SETTINGSDIRECTORY\.purple\prefs.xml" "'$1\" "'$0\" ;=====IfFileExists "$SETTINGSDIRECTORY\.purple\pounces.xml" "" StoreCurrentDriveLetter ;==========${ReplaceInFile} "$SETTINGSDIRECTORY\.purple\pounces.xml" ">$1\" ">$0\" StoreCurrentDriveLetter: WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDriveLetter" "$0" ;======AspellEnvironment: ;=====IfFileExists "$ASPELLDIRECTORY\bin\*.*" "" CheckForUserProfileFolders ;===== System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("RedNotebook_ASPELL_DIR", "$ASPELLDIRECTORY\bin").r0' ;====== System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PURPLE_ASPELL_DIR", "$ASPELLDIRECTORY\bin").r0' CheckForUserProfileFolders: ReadEnvStr $USERPROFILE "USERPROFILE" IfFileExists "$USERPROFILE\.recently-used.xbel" 0 +2 StrCpy $EXISTSXBEL "true" IfFileExists "$APPDATA\gtk-2.0\gtkfilechooser.ini" 0 CheckForWait StrCpy $EXISTSFILECHOOSER "true" CheckForWait: StrCmp "$EXISTSXBEL-$EXISTSFILECHOOSER" "true-true" LaunchNow StrCpy $WAITFORPROGRAM "true" LaunchNow: MessageBox MB_OK '$execstring' System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("RedNotebook_NO_DLL_CHECK", "true").r0' ;===System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("GAIM_NO_DLL_CHECK", "true").r0' ;===System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PURPLE_NO_DLL_CHECK", "true").r0' System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("RedNotebook_MULTI_INST", "1").r0' StrCmp $WAITFORPROGRAM "true" LaunchAndWait LaunchAndExit LaunchAndWait: ExecWait $EXECSTRING Goto TheEnd LaunchAndExit: Exec $EXECSTRING Goto TheRealEnd TheEnd: StrCmp $EXISTSXBEL "true" +2 Delete "$USERPROFILE\.recently-used.xbel" StrCmp $EXISTSFILECHOOSER "true" TheRealEnd Delete "$APPDATA\gtk-2.0\gtkfilechooser.ini" RmDir "$APPDATA\gtk-2.0\" TheRealEnd: newadvsplash::stop /WAIT SectionEnd