setup.nsi.in raw

   1  Name "@CLIENT_NAME@"
   2  
   3  RequestExecutionLevel highest
   4  SetCompressor /SOLID lzma
   5  SetDateSave off
   6  Unicode true
   7  
   8  # Uncomment these lines when investigating reproducibility errors
   9  #SetCompress off
  10  #SetDatablockOptimize off
  11  
  12  # General Symbol Definitions
  13  !define REGKEY "SOFTWARE\$(^Name)"
  14  !define COMPANY "@CLIENT_NAME@ project"
  15  !define URL @CLIENT_URL@
  16  
  17  # MUI Symbol Definitions
  18  !define MUI_ICON "@abs_top_srcdir@/share/pixmaps/bitcoin.ico"
  19  !define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp"
  20  !define MUI_HEADERIMAGE
  21  !define MUI_HEADERIMAGE_RIGHT
  22  !define MUI_HEADERIMAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-header.bmp"
  23  !define MUI_FINISHPAGE_NOAUTOCLOSE
  24  !define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
  25  !define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
  26  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
  27  !define MUI_STARTMENUPAGE_DEFAULTFOLDER "@CLIENT_NAME@"
  28  !define MUI_FINISHPAGE_RUN "$WINDIR\explorer.exe"
  29  !define MUI_FINISHPAGE_RUN_PARAMETERS $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
  30  !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
  31  !define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp"
  32  !define MUI_UNFINISHPAGE_NOAUTOCLOSE
  33  
  34  # Included files
  35  !include Sections.nsh
  36  !include MUI2.nsh
  37  !include x64.nsh
  38  
  39  # Variables
  40  Var StartMenuGroup
  41  
  42  # Installer pages
  43  !insertmacro MUI_PAGE_WELCOME
  44  !insertmacro MUI_PAGE_DIRECTORY
  45  !insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
  46  !insertmacro MUI_PAGE_INSTFILES
  47  !insertmacro MUI_PAGE_FINISH
  48  !insertmacro MUI_UNPAGE_CONFIRM
  49  !insertmacro MUI_UNPAGE_INSTFILES
  50  
  51  # Installer languages
  52  !insertmacro MUI_LANGUAGE English
  53  
  54  # Installer attributes
  55  InstallDir $PROGRAMFILES64\Bitcoin
  56  CRCCheck force
  57  XPStyle on
  58  BrandingText " "
  59  ShowInstDetails show
  60  VIProductVersion @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@.@CLIENT_VERSION_BUILD@.0
  61  VIAddVersionKey ProductName "@CLIENT_NAME@"
  62  VIAddVersionKey ProductVersion "@CLIENT_VERSION_STRING@"
  63  VIAddVersionKey CompanyName "${COMPANY}"
  64  VIAddVersionKey CompanyWebsite "${URL}"
  65  VIAddVersionKey FileVersion "@CLIENT_VERSION_STRING@"
  66  VIAddVersionKey FileDescription "Installer for @CLIENT_NAME@"
  67  VIAddVersionKey LegalCopyright "Copyright (C) 2009-@COPYRIGHT_YEAR@ @COPYRIGHT_HOLDERS_FINAL@"
  68  InstallDirRegKey HKCU "${REGKEY}" Path
  69  ShowUninstDetails show
  70  
  71  # Installer sections
  72  Section -Main SEC0000
  73      SetOutPath $INSTDIR
  74      SetOverwrite on
  75      File @abs_top_builddir@/release/@BITCOIN_GUI_NAME@@EXEEXT@
  76      File @abs_top_builddir@/release/@BITCOIN_WRAPPER_NAME@@EXEEXT@
  77      File /oname=COPYING.txt @abs_top_srcdir@/COPYING
  78      File /oname=readme.txt @abs_top_srcdir@/doc/README_windows.txt
  79      File @abs_top_srcdir@/share/examples/bitcoin.conf
  80      SetOutPath $INSTDIR\share\rpcauth
  81      File @abs_top_srcdir@/share/rpcauth/*.*
  82      SetOutPath $INSTDIR\daemon
  83      File @abs_top_builddir@/release/@BITCOIN_DAEMON_NAME@@EXEEXT@
  84      File @abs_top_builddir@/release/@BITCOIN_CLI_NAME@@EXEEXT@
  85      File @abs_top_builddir@/release/@BITCOIN_TX_NAME@@EXEEXT@
  86      File @abs_top_builddir@/release/@BITCOIN_WALLET_TOOL_NAME@@EXEEXT@
  87      File @abs_top_builddir@/release/@BITCOIN_TEST_NAME@@EXEEXT@
  88      SetOutPath $INSTDIR
  89      WriteRegStr HKCU "${REGKEY}\Components" Main 1
  90  SectionEnd
  91  
  92  Section -post SEC0001
  93      WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
  94      SetOutPath $INSTDIR
  95      WriteUninstaller $INSTDIR\uninstall.exe
  96      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  97      CreateDirectory $SMPROGRAMS\$StartMenuGroup
  98      CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
  99      CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-testnet" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 1
 100      CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-signet" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 2
 101      CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-testnet4" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 3
 102      CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe
 103      !insertmacro MUI_STARTMENU_WRITE_END
 104      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
 105      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "@CLIENT_VERSION_STRING@"
 106      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
 107      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
 108      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\bitcoin-qt.exe
 109      WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
 110      WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
 111      WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
 112      WriteRegStr HKCR "@CLIENT_TARNAME@" "URL Protocol" ""
 113      WriteRegStr HKCR "@CLIENT_TARNAME@" "" "URL:Bitcoin"
 114      WriteRegStr HKCR "@CLIENT_TARNAME@\DefaultIcon" "" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
 115      WriteRegStr HKCR "@CLIENT_TARNAME@\shell\open\command" "" '"$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "%1"'
 116  
 117      # Lingering since fb2b05b1259d3e69e6e675adfa30b429424c7625 which removed the suffix
 118      DeleteRegValue HKCU "${REGKEY} (64-bit)\Components" Main
 119      DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name) (64-bit)"
 120      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name) (64-bit).lnk"
 121      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name) (64-bit).lnk"
 122      DeleteRegValue HKCU "${REGKEY} (64-bit)" StartMenuGroup
 123      DeleteRegValue HKCU "${REGKEY} (64-bit)" Path
 124      DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)\Components"
 125      DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)"
 126  
 127      # Lingering since 77b2923f87131a407f7d4193c54db22375130403
 128      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin Core (testnet, 64-bit).lnk"
 129  SectionEnd
 130  
 131  # Macro for selecting uninstaller sections
 132  !macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
 133      Push $R0
 134      ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
 135      StrCmp $R0 1 0 next${UNSECTION_ID}
 136      !insertmacro SelectSection "${UNSECTION_ID}"
 137      GoTo done${UNSECTION_ID}
 138  next${UNSECTION_ID}:
 139      !insertmacro UnselectSection "${UNSECTION_ID}"
 140  done${UNSECTION_ID}:
 141      Pop $R0
 142  !macroend
 143  
 144  # Uninstaller sections
 145  Section /o -un.Main UNSEC0000
 146      Delete /REBOOTOK $INSTDIR\@BITCOIN_WRAPPER_NAME@@EXEEXT@
 147      Delete /REBOOTOK $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
 148      Delete /REBOOTOK $INSTDIR\COPYING.txt
 149      Delete /REBOOTOK $INSTDIR\readme.txt
 150      Delete /REBOOTOK $INSTDIR\bitcoin.conf
 151      RMDir /r /REBOOTOK $INSTDIR\share
 152      RMDir /r /REBOOTOK $INSTDIR\daemon
 153      DeleteRegValue HKCU "${REGKEY}\Components" Main
 154  SectionEnd
 155  
 156  Section -un.post UNSEC0001
 157      DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
 158      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
 159      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk"
 160      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk"
 161      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk"
 162      Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk"
 163      Delete /REBOOTOK "$SMSTARTUP\Bitcoin.lnk"
 164      Delete /REBOOTOK $INSTDIR\uninstall.exe
 165      Delete /REBOOTOK $INSTDIR\debug.log
 166      Delete /REBOOTOK $INSTDIR\db.log
 167      DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
 168      DeleteRegValue HKCU "${REGKEY}" Path
 169      DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
 170      DeleteRegKey /IfEmpty HKCU "${REGKEY}"
 171      DeleteRegKey HKCR "@CLIENT_TARNAME@"
 172      RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
 173      RmDir /REBOOTOK $INSTDIR
 174      Push $R0
 175      StrCpy $R0 $StartMenuGroup 1
 176      StrCmp $R0 ">" no_smgroup
 177  no_smgroup:
 178      Pop $R0
 179  SectionEnd
 180  
 181  # Installer functions
 182  Function .onInit
 183      InitPluginsDir
 184      ${If} ${RunningX64}
 185        ; disable registry redirection (enable access to 64-bit portion of registry)
 186        SetRegView 64
 187      ${Else}
 188        MessageBox MB_OK|MB_ICONSTOP "Cannot install 64-bit version on a 32-bit system."
 189        Abort
 190      ${EndIf}
 191  FunctionEnd
 192  
 193  # Uninstaller functions
 194  Function un.onInit
 195      ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
 196      !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
 197      !insertmacro SELECT_UNSECTION Main ${UNSEC0000}
 198  FunctionEnd
 199