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