!include "MUI2.nsh" !include "x64.nsh" !include "FileFunc.nsh" !include "LogicLib.nsh" Name "@PRODUCT_NAME@" Caption "@PRODUCT_NAME@ - @PACKAGE_DESCRIPTION@" !ifdef WITHGTK outfile "@PRODUCT_NAME@-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@-gtk-@GTK_MODVERSION@-@host_cpu@.exe" !else outfile "@PRODUCT_NAME@-@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@-requires-gtk-@GTK_MODVERSION@-@host_cpu@.exe" !endif XPStyle on installDir "$@PROGRAMFILES@\@PRODUCT_NAME@" #define the installer icon !define MUI_ICON "@PACKAGE@.ico" !define MUI_UNICON "@PACKAGE@.ico" icon "@PACKAGE@.ico" # Get installation folder from registry if available InstallDirRegKey HKLM "Software\@PRODUCT_NAME@" "InstallLocation" RequestExecutionLevel admin # Properties VIProductVersion "@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@" VIFileVersion "@WIN32_VERSION@" # Reference: https://nsis.sourceforge.io/Reference/VIAddVersionKey VIAddVersionKey "ProductVersion" "@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@" VIAddVersionKey "FileVersion" "@WIN32_VERSION@" VIAddVersionKey "ProductName" "@PRODUCT_NAME@" VIAddVersionKey "FileDescription" "@PACKAGE_DESCRIPTION@" VIAddVersionKey "LegalCopyright" "(C) 2017 Banco do Brasil S/A. All Rights Reserved" # VIAddVersionKey "PrivateBuild" "" # 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 "@PRODUCT_NAME@" SecMain Section "Core" SecCore SetRegView @WINARCH@ ${DisableX64FSRedirection} # define the output path for this file setOutPath $INSTDIR SetShellVarContext all createShortCut "$SMPROGRAMS\@PRODUCT_NAME@.lnk" "$INSTDIR\@PRODUCT_NAME@.exe" createShortCut "$DESKTOP\@PRODUCT_NAME@.lnk" "$INSTDIR\@PRODUCT_NAME@.exe" # Binary files file "/oname=$INSTDIR\@PRODUCT_NAME@.exe" "@PACKAGE@.exe" file "/oname=$INSTDIR\@PRODUCT_NAME@.ico" "@PACKAGE@.ico" file "/oname=$INSTDIR\lib@LIBRARY_NAME@.dll" "lib@LIBRARY_NAME@.dll" file "/oname=$INSTDIR\libv3270.dll" "libv3270.dll" file "/oname=$INSTDIR\@PACKAGE@.dll" "@PACKAGE@.dll" file "/oname=$SYSDIR\libipc3270.dll" "libipc3270.dll" # Configuration files file "/oname=$INSTDIR\@PRODUCT_NAME@-logo.png" "@PRODUCT_NAME@\@PRODUCT_NAME@-logo.png" file "/oname=$INSTDIR\@PRODUCT_NAME@.png" "@PRODUCT_NAME@\@PRODUCT_NAME@.png" file "/oname=$INSTDIR\colors.conf" "@PRODUCT_NAME@\colors.conf" # Documentation files file "/oname=$INSTDIR\AUTHORS" "AUTHORS" file "/oname=$INSTDIR\LICENSE" "LICENSE" # Misc folders CreateDirectory "$INSTDIR\certs" CreateDirectory "$INSTDIR\plugins" # UI definition files CreateDirectory "$INSTDIR\ui" file "/oname=$INSTDIR\ui\00default.xml" "@PRODUCT_NAME@\ui\00default.xml" # Charset definition files CreateDirectory "$INSTDIR\remap" file "/oname=$INSTDIR\remap\bracket.xml" "@PRODUCT_NAME@\remap\bracket.xml" # Locale files CreateDirectory "$INSTDIR\locale\pt_BR\LC_MESSAGES" file "/oname=$INSTDIR\locale\pt_BR\LC_MESSAGES\@PACKAGE@.mo" "locale\pt_BR\LC_MESSAGES\@PACKAGE@.mo" # define uninstaller name SetRegView 32 writeUninstaller $INSTDIR\uninstall.exe WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "DisplayName" "@PRODUCT_NAME@ - @PACKAGE_DESCRIPTION@" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "DisplayIcon" "$INSTDIR\@PRODUCT_NAME@.ico" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "DisplayVersion" "@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.@PACKAGE_MINOR_RELEASE@" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "UninstallString" "$INSTDIR\uninstall.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "InstallLocation" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "NoModify" "1" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" \ "NoRepair" "1" # Customized options SetRegView @WINARCH@ # Required for IPC Library. WriteRegStr HKLM "Software\@PRODUCT_NAME@" "InstallLocation" "$INSTDIR" sectionEnd !ifdef WITHCERTS Section "SSL Certificates" SSLCerts setOutPath $INSTDIR\certs file /r "sslcerts\*.*" sectionEnd !endif SubSection "Plugins" SecPLugin Section /o "Remote control" IPCPlugin setOutPath $INSTDIR ${DisableX64FSRedirection} CreateDirectory "$INSTDIR\plugins" file "/oname=$INSTDIR\plugins\ipcserver.dll" "@PRODUCT_NAME@-plugins\ipcserver.dll" sectionEnd SubSectionEnd !ifdef WITHEXTRAS SubSection "Extra modules" Languages !ifdef WITHLIBHLLAPI Section /o "HLLAPI" HLLAPIBinding ${DisableX64FSRedirection} file "/oname=$SYSDIR\hllapi.dll" "libhllapi.dll" # Install with "lib" prefix for compatibility. file "/oname=$SYSDIR\libhllapi.dll" "libhllapi.dll" SectionEnd !endif !ifdef WITHMONO-TN3270 Section /o ".NET" DOTNET ${DisableX64FSRedirection} CreateDirectory "$INSTDIR\dotnet" file "/oname=$INSTDIR\dotnet\tn3270.dll" "mono/lib/tn3270-5.2/tn3270.dll" file "/oname=$INSTDIR\dotnet\tn3270.xml" "mono/gapi-2.0/tn3270/tn3270.xml" file "/oname=$SYSDIR\mono-tn3270.dll" "mono-tn3270.dll" SectionEnd !endif SubSectionEnd !endif SubSection "Menus, Keypads & Toolbars" SecMenu Section "Keypad" KeypadMenu file "/oname=$INSTDIR\ui\10keypad.xml" "@PRODUCT_NAME@\ui\10keypad.xml" SectionEnd Section "Functions" FunctionsMenu file "/oname=$INSTDIR\ui\10functions.xml" "@PRODUCT_NAME@\ui\10functions.xml" SectionEnd Section /o "View trace Menu" TraceMenu file "/oname=$INSTDIR\ui\98trace.xml" "@PRODUCT_NAME@\ui\98trace.xml" SectionEnd Section /o "Application debug" DBGMenu file "/oname=$INSTDIR\ui\99debug.xml" "@PRODUCT_NAME@\ui\99debug.xml" SectionEnd SubSectionEnd !ifdef WITHSDK Section /o "Software Development Kit" SDK setOutPath $INSTDIR\sdk\include file /r "include\*.*" CreateDirectory "$INSTDIR\sdk" CreateDirectory "$INSTDIR\sdk\def" CreateDirectory "$INSTDIR\sdk\lib" file "/oname=$INSTDIR\sdk\def\lib@LIBRARY_NAME@.def" "@PRODUCT_NAME@\def\lib@LIBRARY_NAME@.def" file "/oname=$INSTDIR\sdk\lib\lib3270.dll.a" "lib@LIBRARY_NAME@.dll.a" file "/oname=$INSTDIR\sdk\lib\lib3270.delayed.a" "lib@LIBRARY_NAME@.delayed.a" file "/oname=$INSTDIR\sdk\lib\lib3270.static.a" "lib@LIBRARY_NAME@.static.a" file "/oname=$INSTDIR\sdk\def\libv3270.def" "@PRODUCT_NAME@\def\libv3270.def" file "/oname=$INSTDIR\sdk\lib\libv3270.dll.a" "libv3270.dll.a" file "/oname=$INSTDIR\sdk\def\libipc3270.def" "@PRODUCT_NAME@\def\libipc3270.def" file "/oname=$INSTDIR\sdk\lib\libipc3270.dll.a" "libipc3270.dll.a" file "/oname=$INSTDIR\sdk\lib\libipc3270.static.a" "libipc3270.static.a" file "/oname=$INSTDIR\sdk\def\libhllapi.def" "@PRODUCT_NAME@\def\libhllapi.def" file "/oname=$INSTDIR\sdk\lib\libhllapi.dll.a" "libhllapi.dll.a" SectionEnd !endif SubSectionEnd !ifdef WITHGTK Section /o "GTK+ Runtime" SecGTK setOutPath $INSTDIR file /r "runtime\*.*" SectionEnd !endif Section "Uninstall" # Always delete uninstaller first delete $INSTDIR\uninstaller.exe # Set SMPROGRAMS and DESKTOP path SetShellVarContext all # now delete installed files delete $INSTDIR\@PRODUCT_NAME@.exe delete $SMPROGRAMS\@PRODUCT_NAME@.lnk delete $DESKTOP\@PRODUCT_NAME@.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 SetRegView 32 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@PRODUCT_NAME@" DeleteRegKey HKLM "Software\@PRODUCT_NAME@" SetRegView @WINARCH@ DeleteRegKey HKLM "Software\@PRODUCT_NAME@" # Delete System libraries delete $SYSDIR\libipc3270.dll !ifdef WITHHLLAPI delete $SYSDIR\libhllapi.dll delete $SYSDIR\hllapi.dll !endif !ifdef WITHMONO delete $SYSDIR\mono-tn3270.dll !endif RMDir /r "$INSTDIR" SectionEnd Function .onInit #---[ Check DOTNET Command line option ]0------------------------------------------------------------- !ifdef WITHMONO Push $0 ${GetParameters} $R0 ClearErrors ${GetOptions} $R0 /DOTNET= $0 ${if} $0 == "NO" SectionGetFlags ${DOTNET} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${DOTNET} $0 ${else} SectionGetFlags ${DOTNET} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${DOTNET} $0 SectionGetFlags ${IPCPlugin} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${IPCPlugin} $0 ${EndIf} Pop $0 !endif #---[ Check HLLAPI Command line option ]------------------------------------------------------------- !ifdef WITHHLLAPI Push $0 ${GetParameters} $R0 ClearErrors ${GetOptions} $R0 /HLLAPI= $0 ${if} $0 == "NO" SectionGetFlags ${HLLAPIBinding} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${HLLAPIBinding} $0 ${else} SectionGetFlags ${HLLAPIBinding} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${HLLAPIBinding} $0 SectionGetFlags ${IPCPlugin} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${IPCPlugin} $0 ${EndIf} Pop $0 !endif #---[ Check for GTK runtime ]------------------------------------------------------------------------ !ifdef WITHGTK SetRegView @WINARCH@ ReadRegStr $4 HKLM "Software\gtkwin\@GTK_MODVERSION@" "path" ${if} $4 == "" SectionGetFlags ${SecGTK} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${SecGTK} $0 ${Else} ${if} ${FileExists} `$4\*.*` SectionGetFlags ${SecGTK} $0 IntOp $0 $0 & ${SECTION_OFF} SectionSetFlags ${SecGTK} $0 ${Else} SectionGetFlags ${SecGTK} $0 IntOp $0 $0 | ${SF_SELECTED} SectionSetFlags ${SecGTK} $0 ${EndIf} ${EndIf} !endif FunctionEnd