1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # Builds a Windows installer with NSIS.
- # It expects the following command line arguments:
- # - OUTPUTFILE, filename of the installer (without extension)
- # - MAJORVERSION, major build version
- # - MINORVERSION, minor build version
- # - BUILDVERSION, build id version
- #
- # The created installer executes the following steps:
- # 1. install geth for all users
- # 2. install optional development tools such as abigen
- # 3. create an uninstaller
- # 4. configures the Windows firewall for geth
- # 5. create geth, attach and uninstall start menu entries
- # 6. configures the registry that allows Windows to manage the package through its platform tools
- # 7. adds the environment system wide variable ETHEREUM_SOCKET
- # 8. adds the install directory to %PATH%
- #
- # Requirements:
- # - NSIS, http://nsis.sourceforge.net/Main_Page
- # - NSIS Large Strings build, http://nsis.sourceforge.net/Special_Builds
- # - SFP, http://nsis.sourceforge.net/NSIS_Simple_Firewall_Plugin (put dll in NSIS\Plugins\x86-ansi)
- #
- # After intalling NSIS extra the NSIS Large Strings build zip and replace the makensis.exe and the
- # files found in Stub.
- #
- # based on: http://nsis.sourceforge.net/A_simple_installer_with_start_menu_shortcut_and_uninstaller
- #
- # TODO:
- # - sign installer
- CRCCheck on
- !define GROUPNAME "Ethereum"
- !define APPNAME "Geth"
- !define DESCRIPTION "Official Go implementation of the Ethereum protocol"
- !addplugindir .\
- # Require admin rights on NT6+ (When UAC is turned on)
- RequestExecutionLevel admin
- # Use LZMA compression
- SetCompressor /SOLID lzma
- !include LogicLib.nsh
- !include PathUpdate.nsh
- !include EnvVarUpdate.nsh
- !macro VerifyUserIsAdmin
- UserInfo::GetAccountType
- pop $0
- ${If} $0 != "admin" # Require admin rights on NT4+
- messageBox mb_iconstop "Administrator rights required!"
- setErrorLevel 740 # ERROR_ELEVATION_REQUIRED
- quit
- ${EndIf}
- !macroend
- function .onInit
- # make vars are global for all users since geth is installed global
- setShellVarContext all
- !insertmacro VerifyUserIsAdmin
- ${If} ${ARCH} == "amd64"
- StrCpy $InstDir "$PROGRAMFILES64\${APPNAME}"
- ${Else}
- StrCpy $InstDir "$PROGRAMFILES32\${APPNAME}"
- ${Endif}
- functionEnd
- !include install.nsh
- !include uninstall.nsh
|