207 lines
6.7 KiB
Text
Executable file
207 lines
6.7 KiB
Text
Executable file
|
||
; Installer.nsi - installs Wireshark Portable onto a PortableApps enabled device
|
||
|
||
; $Id$
|
||
|
||
;Copyright 2007 John T. Haller
|
||
|
||
;Website: http://www.wireshark.org/
|
||
|
||
;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 APP "Wireshark"
|
||
!define NAME "Wireshark Portable"
|
||
!define SHORTNAME "WiresharkPortable"
|
||
!define FILENAME "WiresharkPortable"
|
||
!define CHECKRUNNING "WiresharkPortable.exe"
|
||
!define CLOSENAME "Wireshark Portable"
|
||
!define ADDONSDIRECTORYPRESERVE "NONE"
|
||
|
||
!addplugindir "${EXTRA_PLUGINS}"
|
||
|
||
;=== Program Details
|
||
Name "${NAME}"
|
||
OutFile "${FILENAME}-${WSVERSION}.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
|
||
SetCompressorDictSize 64 ; MB
|
||
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 "..\..\..\image\wiresharkinst.ico"
|
||
BrandingText "PortableApps.com - Your Digital Life, Anywhere<72>"
|
||
|
||
;=== 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
|
||
File /r "Files\*.*"
|
||
SectionEnd
|