;Copyright 2007 John T. Haller ;Website: http://PortableApps.com/ ;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. ;EXCEPTION: Can be used with non-GPLed open source apps distributed by PortableApps.com !define NAME "Mozilla Sunbird, Portable Edition" !define SHORTNAME "FSunbirdPortable" !define VERSION "0.5.0.0" !define FILENAME "Sunbird_Portable_0.5_en-us" !define CHECKRUNNING "SunbirdPortable.exe" !define CLOSENAME "Mozilla Sunbird, Portable Edition" !define ADDONSDIRECTORYPRESERVE "NONE" ;=== Program Details Name "${NAME}" OutFile "${FILENAME}.paf.exe" InstallDir "\${SHORTNAME}" Caption "${NAME} | PortableApps.com Installer" VIProductVersion "${VERSION}" VIAddVersionKey ProductName "${NAME}" VIAddVersionKey Comments "For additional details, visit PortableApps.com" VIAddVersionKey CompanyName "PortableApps.com" VIAddVersionKey LegalCopyright "PortableApps.com and contributors" VIAddVersionKey FileDescription "${NAME}" VIAddVersionKey FileVersion "${VERSION}" VIAddVersionKey ProductVersion "${VERSION}" VIAddVersionKey InternalName "${NAME}" VIAddVersionKey LegalTrademarks "PortableApps.com is a Trademark of Rare Ideas, LLC." VIAddVersionKey OriginalFilename "${FILENAME}.paf.exe" ;VIAddVersionKey PrivateBuild "" ;VIAddVersionKey SpecialBuild "" ;=== Runtime Switches ;SetDatablockOptimize on ;SetCompress off SetCompressor /SOLID lzma CRCCheck on AutoCloseWindow True RequestExecutionLevel user ;=== Include !include MUI.nsh !include FileFunc.nsh !include LogicLib.nsh !insertmacro DriveSpace !insertmacro GetOptions !insertmacro GetDrives !insertmacro GetRoot !insertmacro GetSize ;=== Program Icon Icon "Files\App\AppInfo\appicon.ico" ;=== Icon & Stye === !define MUI_ICON "Files\App\AppInfo\appicon.ico" BrandingText "PortableApps.com - Your Digital Life, Anywhere™" ;=== Pages !define MUI_WELCOMEFINISHPAGE_BITMAP wizard.bmp !define MUI_WELCOMEPAGE_TITLE "${NAME}" !define MUI_WELCOMEPAGE_TEXT "$(welcome)" !insertmacro MUI_PAGE_WELCOME !define MUI_LICENSEPAGE_RADIOBUTTONS !insertmacro MUI_PAGE_LICENSE "EULA.txt" !define MUI_DIRECTORYPAGE_VERIFYONLEAVE !define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveDirectory !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_TEXT "$(finish)" !insertmacro MUI_PAGE_FINISH ;=== Languages !insertmacro MUI_LANGUAGE "English" LangString welcome ${LANG_ENGLISH} "This wizard will guide you through the installation of ${NAME}.\r\n\r\nIf you are upgrading an existing installation of ${NAME}, please close it before proceeding.\r\n\r\nClick Next to continue." LangString finish ${LANG_ENGLISH} "${NAME} has been installed on your device.\r\n\r\nClick Finish to close this wizard." LangString runwarning ${LANG_ENGLISH} "Please close all instances of ${CLOSENAME} and then click OK. The portable app can not be upgraded while it is running." LangString invaliddirectory ${LANG_ENGLISH} "The destination folder you selected is invalid. Please choose a valid folder." LangString notenoughspace ${LANG_ENGLISH} "The device you have selected to install to does not have enough free space for this app." ;=== Variables Var FOUNDPORTABLEAPPSPATH Function .onInit ;StrCpy $FOUNDPORTABLEAPPSPATH '' ${GetOptions} "$CMDLINE" "/DESTINATION=" $R0 IfErrors CheckLegacyDestination StrCpy $INSTDIR "$R0${SHORTNAME}" Goto InitDone CheckLegacyDestination: ClearErrors ${GetOptions} "$CMDLINE" "-o" $R0 IfErrors NoDestination StrCpy $INSTDIR "$R0${SHORTNAME}" Goto InitDone NoDestination: ClearErrors ${GetDrives} "HDD+FDD" GetDrivesCallBack StrCmp $FOUNDPORTABLEAPPSPATH "" DefaultDestination StrCpy $INSTDIR "$FOUNDPORTABLEAPPSPATH\${SHORTNAME}" Goto InitDone DefaultDestination: StrCpy $INSTDIR "\${SHORTNAME}" InitDone: FunctionEnd Function GetDrivesCallBack ;=== Skip usual floppy letters StrCmp $8 "FDD" "" CheckForPortableAppsPath StrCmp $9 "A:\" End StrCmp $9 "B:\" End CheckForPortableAppsPath: IfFileExists "$9PortableApps" "" End StrCpy $FOUNDPORTABLEAPPSPATH "$9PortableApps" End: Push $0 FunctionEnd Function LeaveDirectory GetInstDirError $0 ;=== Does it already exist? (upgrade) IfFileExists "$INSTDIR" "" CheckInstallerError ;=== Check if app is running? StrCmp ${CHECKRUNNING} "NONE" CheckInstallerError FindProcDLL::FindProc "${CHECKRUNNING}" StrCmp $R0 "1" "" CheckInstallerError MessageBox MB_OK|MB_ICONINFORMATION `$(runwarning)` Abort CheckInstallerError: ${Switch} $0 ${Case} 0 ;=== Valid directory and enough free space ${Break} ${Case} 1 MessageBox MB_OK `$(invaliddirectory)` Abort ${Break} ${Case} 2 IfFileExists `$INSTDIR` "" NotEnoughSpaceNoUpgrade ;=== Is upgrade SectionGetSize ${SectionMain} $1 ;=== Space Required for App ${GetRoot} `$INSTDIR` $2 ${DriveSpace} `$2\` "/D=F /S=K" $3 ;=== Space Free on Device ${GetSize} `$INSTDIR` "/M=*.* /S=0K /G=1" $4 $5 $6 ;=== Current installation size IntOp $7 $3 + $4 ;=== Space Free + Current Install Size IfFileExists `$INSTDIR\Data` "" CheckPluginsDirectory ${GetSize} `$INSTDIR\Data` "/M=*.* /S=0K /G=1" $4 $5 $6 ;=== Size of Data directory IntOp $7 $7 - $4 ;=== Remove the data directory from the free space calculation CheckPluginsDirectory: StrCmp `${ADDONSDIRECTORYPRESERVE}` "NONE" CalculateSpaceLeft IfFileExists `$INSTDIR\${ADDONSDIRECTORYPRESERVE}` "" CalculateSpaceLeft ${GetSize} `$INSTDIR\${ADDONSDIRECTORYPRESERVE}` "/M=*.* /S=0K /G=1" $4 $5 $6 ;=== Size of Data directory IntOp $7 $7 - $4 ;=== Remove the plugins directory from the free space calculation CalculateSpaceLeft: IntCmp $7 $1 NotEnoughSpaceNoUpgrade NotEnoughSpaceNoUpgrade Goto EndNotEnoughSpace NotEnoughSpaceNoUpgrade: MessageBox MB_OK `$(notenoughspace)` Abort EndNotEnoughSpace: ${Break} ${EndSwitch} FunctionEnd Section "!App Portable (required)" SetOutPath $INSTDIR RMDir /r "$INSTDIR\App\DefaultData\plugins" RMDir /r "$INSTDIR\App\sunbird\defaults\autoconfig" RMDir /r "$INSTDIR\Data\plugins" Delete "$INSTDIR\App\sunbird\dictionaries\en-US.aff" Delete "$INSTDIR\App\sunbird\dictionaries\en-US.dic" RMDir "$INSTDIR\App\sunbird\dictionaries" Delete "$INSTDIR\App\sunbird\components\pluginGlue.js" Delete "$INSTDIR\App\sunbird\components\nsInterfaceInfoToIDL.js" Delete "$INSTDIR\App\sunbird\Microsoft.VC80.CRT.manifest" Delete "$INSTDIR\App\sunbird\msvcm80.dll" Delete "$INSTDIR\App\sunbird\msvcp80.dll" Delete "$INSTDIR\App\sunbird\msvcr80.dll" File /r "Files\*.*" WriteINIStr "$INSTDIR\Data\settings\SunbirdPortableSettings.ini" "SunbirdPortableSettings" "AgreedToLicense" "YES" SectionEnd