/ share / setup.nsi.in
setup.nsi.in
  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