wireshark/packaging/portableapps/win32/Installer.nsi

203 lines
6.7 KiB
Plaintext
Executable File
Raw Blame History

; 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"
;=== 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
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\${APP}.ico"
;=== Icon & Stye ===
!define MUI_ICON "Files\App\AppInfo\wireshark.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