pw3270.nsi.in 6.77 KB
!include "MUI2.nsh"

Name "@PACKAGE@"
Caption "@PACKAGE@ - 3270 Emulator for windows/gtk"
outfile "@PACKAGE@-@PACKAGE_VERSION@.@PACKAGE_LEVEL@-@host_cpu@-install.exe"
XPStyle on

# define the directory to install to
installDir $PROGRAMFILES\@PACKAGE@

#define the installer icon
!define MUI_ICON "src\pw3270\@PACKAGE@.ico"
!define MUI_UNICON "src\pw3270\@PACKAGE@.ico"
icon "src\pw3270\@PACKAGE@.ico"

# Get installation folder from registry if available
InstallDirRegKey HKLM "Software\@PACKAGE@" "datadir"

RequestExecutionLevel admin

# Properties
VIProductVersion "@PACKAGE_VERSION@.@PACKAGE_LEVEL@.@PACKAGE_REVISION@"
VIAddVersionKey "ProductName" "@PACKAGE@"
VIAddVersionKey "FileDescription" "3270 Emulator for windows/gtk"
VIAddVersionKey "FileVersion" "@PACKAGE_REVISION@"
VIAddVersionKey "LegalCopyright" "GPL-2.0"

# Interface

!define MUI_ABORTWARNING
# !insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "LICENSE"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

# !insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
# !insertmacro MUI_UNPAGE_FINISH

# Languages
!insertmacro MUI_LANGUAGE "English"

# Section scripts
!include Sections.nsh

# default section
SubSection "@PACKAGE@" SecMain

	Section "Core" SecCore

		# define the output path for this file
		setOutPath $INSTDIR
		SetShellVarContext all

		createShortCut "$SMPROGRAMS\@PACKAGE@.lnk" "$INSTDIR\@PACKAGE@.exe"
		createShortCut "$DESKTOP\@PACKAGE@.lnk" "$INSTDIR\@PACKAGE@.exe"

		# Binary files
		file "/oname=$INSTDIR\@PACKAGE@.exe"	".bin\Release\@PACKAGE@.exe"
		file "/oname=$INSTDIR\@PACKAGE@.ico"	"src\pw3270\@PACKAGE@.ico"

		# Configuration files
		file "/oname=$INSTDIR\@PACKAGE@-logo.png"	"src/pw3270/@PACKAGE@-logo.png"
		file "/oname=$INSTDIR\@PACKAGE@.png"		"src/pw3270/@PACKAGE@.png"
		file "/oname=$INSTDIR\colors.conf"		"colors.conf"

		# Documentation files
		file "/oname=$INSTDIR\ChangeLog"		"ChangeLog"
		file "/oname=$INSTDIR\AUTHORS"			"AUTHORS"
		file "/oname=$INSTDIR\LICENSE"			"LICENSE"

		# UI definition files
		CreateDirectory "$INSTDIR\ui"

		file "/oname=$INSTDIR\ui\00default.xml" 	"ui\00default.xml"

		# Locale files
		CreateDirectory "$INSTDIR\@localedir@\pt_BR\LC_MESSAGES"
		file "/oname=$INSTDIR\@localedir@\pt_BR\LC_MESSAGES\@PACKAGE@.mo" ".bin\Release\@localedir@\pt_BR\LC_MESSAGES\@PACKAGE@.mo"

		# define uninstaller name
		writeUninstaller $INSTDIR\uninstall.exe

		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "DisplayName" "@PACKAGE@ - 3270 emulator for windows/gtk"
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "DisplayIcon" "$INSTDIR\@PACKAGE@.ico"
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "DisplayVersion" "@PACKAGE_VERSION@ (Rev: @PACKAGE_REVISION@)"


		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "UninstallString" "$INSTDIR\uninstall.exe"
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "InstallLocation" "$INSTDIR"
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "NoModify" "1"
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@" \
			         "NoRepair" "1"

		# Save instalation dir
		WriteRegStr HKCU "Software\@PACKAGE@" "" $INSTDIR

		# Main library
		file "/oname=$SYSDIR\lib3270.dll.@PACKAGE_VERSION@"	".bin\Release\lib3270.dll.@PACKAGE_VERSION@"
		file "/oname=$SYSDIR\libpw3270.dll.@PACKAGE_VERSION@"	".bin\Release\libpw3270.dll.@PACKAGE_VERSION@"

	sectionEnd

#
#	SubSection "Plugins" SecPLugin
#
#		Section /o "Rexx" RexxPlugin
#			setOutPath $INSTDIR
#
#			CreateDirectory "$INSTDIR"
#			file src\plugins\rexx\rx3270.cls
#
#			CreateDirectory "$INSTDIR\plugins"
#			file "/oname=$INSTDIR\plugins\rx3270.dll" ".bin\Release\plugins\rx3270.dll"
#			file "/oname=$INSTDIR\ui\rexx.xml" ui\rexx.xml
#
#		sectionEnd
#
SubSectionEnd

Section /o "GTK+ Runtime" SecGTK

	setOutPath $INSTDIR
	file /r ".bin\gtkruntime\*.*"

SectionEnd

Section /o "Software Development Kit" SecSDK

	CreateDirectory "$INSTDIR\sdk"
	CreateDirectory "$INSTDIR\sdk\include"
	CreateDirectory "$INSTDIR\sdk\include\lib3270"

	file "/oname=$INSTDIR\sdk\include\lib3270.h" "src\include\lib3270.h"
	file "/oname=$INSTDIR\sdk\include\pw3270.h" "src\include\pw3270.h"
	file "/oname=$INSTDIR\sdk\include\v3270.h" "src\include\v3270.h"

	file "/oname=$INSTDIR\sdk\include\lib3270\config.h" "src\include\lib3270\config.h"
	file "/oname=$INSTDIR\sdk\include\lib3270\rules.mak" "src\include\rules.mak"

SectionEnd

# create a section to define what the uninstaller does.
# the section will always be named "Uninstall"
section "Uninstall"

	# Always delete uninstaller first
	delete $INSTDIR\uninstaller.exe

	# Set SMPROGRAMS and DESKTOP path
	SetShellVarContext all

	# now delete installed files
	delete $INSTDIR\@PACKAGE@.exe

	delete $SMPROGRAMS\@PACKAGE@.lnk
	delete $DESKTOP\@PACKAGE@.lnk

	RMDir /r "$INSTDIR\locale"
	RMDir /r "$INSTDIR\share"
	RMDir /r "$INSTDIR\etc"
	RMDir /r "$INSTDIR\plugins"
	RMDir /r "$INSTDIR\sdk"
	RMDir /r "$INSTDIR\gtk2-runtime"

	# Delete all files
	delete "$INSTDIR\*.dll"

	# Remove registry
	DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@"

	# Delete System libraries
	delete $SYSDIR\lib3270.dll.@PACKAGE_VERSION@
	delete $SYSDIR\libpw3270.dll.@PACKAGE_VERSION@

	# Delete extension libraries
#	delete $PROGRAMFILES\ooRexx\rx3270.dll

	RMDir /r "$INSTDIR"

sectionEnd

Function .onInit

#FindProcDLL::FindProc "@PACKAGE@.exe"
#IntCmp $R0 1 0 notRunning
#
#    MessageBox MB_OK|MB_ICONEXCLAMATION "@PACKAGE@ is running. Please close it first" /SD IDOK
#    Abort
#
#notRunning:

#IfFileExists $PROGRAMFILES\ooRexx\rexx.exe RexxOK RexxNOK
#
#RexxOK:
#	SectionGetFlags "${RexxPlugin}" $0
#	IntOp $0 $0 | ${SF_SELECTED}
#	SectionSetFlags "${RexxPlugin}" $0
#
#	SectionGetFlags "${SecRexxLib}" $0
#	IntOp $0 $0 | ${SF_SELECTED}
#	SectionSetFlags "${SecRexxLib}" $0
#
#goto PastRexxCheck
#
#RexxNOK:
#	SectionGetFlags "${RexxPlugin}" $0
#	IntOp $0 $0 | ${SF_RO}
#	SectionSetFlags "${RexxPlugin}" $0
#
#	SectionGetFlags "${SecRexxLib}" $0
#	IntOp $0 $0 | ${SF_RO}
#	SectionSetFlags "${SecRexxLib}" $0
#
#PastRexxCheck:

	ReadRegStr $4 HKLM "Software\GTK2-Runtime" "DllPath"

	# remove trailing back slash
	Push $4
	Exch $EXEDIR
	Exch $EXEDIR
	Pop $4

	# if Gtk runtime DLL path exists gtk runtime is already installed.
	IfFileExists $4 gtkOK gtkNOK

gtkOK:

	SectionGetFlags "${SecGTK}" $0
	IntOp $0 $0 & ${SECTION_OFF}
	SectionSetFlags "${SecGTK}" $0

goto PastGTKCheck

gtkNOK:

	SectionGetFlags "${SecGTK}" $0
	IntOp $0 $0 | ${SF_SELECTED}
	SectionSetFlags "${SecGTK}" $0

goto PastGTKCheck



PastGTKCheck:


FunctionEnd