github.com/goldbock/go-ethereum@v1.9.7/build/nsis.geth.nsi (about)

     1  # Builds a Windows installer with NSIS.
     2  # It expects the following command line arguments:
     3  # - OUTPUTFILE, filename of the installer (without extension)
     4  # - MAJORVERSION, major build version
     5  # - MINORVERSION, minor build version
     6  # - BUILDVERSION, build id version
     7  #
     8  # The created installer executes the following steps:
     9  # 1. install geth for all users
    10  # 2. install optional development tools such as abigen
    11  # 3. create an uninstaller
    12  # 4. configures the Windows firewall for geth
    13  # 5. create geth, attach and uninstall start menu entries
    14  # 6. configures the registry that allows Windows to manage the package through its platform tools
    15  # 7. adds the environment system wide variable ETHEREUM_SOCKET
    16  # 8. adds the install directory to %PATH%
    17  #
    18  # Requirements:
    19  # - NSIS, http://nsis.sourceforge.net/Main_Page
    20  # - NSIS Large Strings build, http://nsis.sourceforge.net/Special_Builds
    21  # - SFP, http://nsis.sourceforge.net/NSIS_Simple_Firewall_Plugin (put dll in NSIS\Plugins\x86-ansi)
    22  #
    23  # After intalling NSIS extra the NSIS Large Strings build zip and replace the makensis.exe and the
    24  # files found in Stub.
    25  #
    26  # based on: http://nsis.sourceforge.net/A_simple_installer_with_start_menu_shortcut_and_uninstaller
    27  #
    28  # TODO:
    29  # - sign installer
    30  CRCCheck on
    31  
    32  !define GROUPNAME "Ethereum"
    33  !define APPNAME "Geth"
    34  !define DESCRIPTION "Official Go implementation of the Ethereum protocol"
    35  !addplugindir .\
    36  
    37  # Require admin rights on NT6+ (When UAC is turned on)
    38  RequestExecutionLevel admin
    39  
    40  # Use LZMA compression
    41  SetCompressor /SOLID lzma
    42  
    43  !include LogicLib.nsh
    44  !include PathUpdate.nsh
    45  !include EnvVarUpdate.nsh
    46  
    47  !macro VerifyUserIsAdmin
    48  UserInfo::GetAccountType
    49  pop $0
    50  ${If} $0 != "admin" # Require admin rights on NT4+
    51    messageBox mb_iconstop "Administrator rights required!"
    52    setErrorLevel 740 # ERROR_ELEVATION_REQUIRED
    53    quit
    54  ${EndIf}
    55  !macroend
    56  
    57  function .onInit
    58    # make vars are global for all users since geth is installed global
    59    setShellVarContext all
    60    !insertmacro VerifyUserIsAdmin
    61  
    62    ${If} ${ARCH} == "amd64"
    63      StrCpy $InstDir "$PROGRAMFILES64\${APPNAME}"
    64    ${Else}
    65      StrCpy $InstDir "$PROGRAMFILES32\${APPNAME}"
    66    ${Endif}
    67  functionEnd
    68  
    69  !include install.nsh
    70  !include uninstall.nsh