mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-15 00:17:18 +01:00
Prior releases installed using these paths. Especially annoying was that the lingering registry entry for the uninstaller would show up as "Bitcoin Core (64-bit)" besides the current "Bitcoin Core" entry in the list of installed programs, and whichever was uninstalled last would fail to work as they would default to the same install directory.
Github-Pull: #33422
Rebased-From: 79752b9c0b
199 lines
8.5 KiB
NSIS
199 lines
8.5 KiB
NSIS
Name "@CLIENT_NAME@"
|
|
|
|
RequestExecutionLevel highest
|
|
SetCompressor /SOLID lzma
|
|
SetDateSave off
|
|
Unicode true
|
|
|
|
# Uncomment these lines when investigating reproducibility errors
|
|
#SetCompress off
|
|
#SetDatablockOptimize off
|
|
|
|
# General Symbol Definitions
|
|
!define REGKEY "SOFTWARE\$(^Name)"
|
|
!define COMPANY "@CLIENT_NAME@ project"
|
|
!define URL @CLIENT_URL@
|
|
|
|
# MUI Symbol Definitions
|
|
!define MUI_ICON "@abs_top_srcdir@/share/pixmaps/bitcoin.ico"
|
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp"
|
|
!define MUI_HEADERIMAGE
|
|
!define MUI_HEADERIMAGE_RIGHT
|
|
!define MUI_HEADERIMAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-header.bmp"
|
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
|
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
|
|
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
|
|
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
|
|
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "@CLIENT_NAME@"
|
|
!define MUI_FINISHPAGE_RUN "$WINDIR\explorer.exe"
|
|
!define MUI_FINISHPAGE_RUN_PARAMETERS $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
|
|
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
|
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp"
|
|
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
|
|
|
# Included files
|
|
!include Sections.nsh
|
|
!include MUI2.nsh
|
|
!include x64.nsh
|
|
|
|
# Variables
|
|
Var StartMenuGroup
|
|
|
|
# Installer pages
|
|
!insertmacro MUI_PAGE_WELCOME
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
!insertmacro MUI_PAGE_FINISH
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
# Installer languages
|
|
!insertmacro MUI_LANGUAGE English
|
|
|
|
# Installer attributes
|
|
InstallDir $PROGRAMFILES64\Bitcoin
|
|
CRCCheck force
|
|
XPStyle on
|
|
BrandingText " "
|
|
ShowInstDetails show
|
|
VIProductVersion @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@.@CLIENT_VERSION_BUILD@.0
|
|
VIAddVersionKey ProductName "@CLIENT_NAME@"
|
|
VIAddVersionKey ProductVersion "@CLIENT_VERSION_STRING@"
|
|
VIAddVersionKey CompanyName "${COMPANY}"
|
|
VIAddVersionKey CompanyWebsite "${URL}"
|
|
VIAddVersionKey FileVersion "@CLIENT_VERSION_STRING@"
|
|
VIAddVersionKey FileDescription "Installer for @CLIENT_NAME@"
|
|
VIAddVersionKey LegalCopyright "Copyright (C) 2009-@COPYRIGHT_YEAR@ @COPYRIGHT_HOLDERS_FINAL@"
|
|
InstallDirRegKey HKCU "${REGKEY}" Path
|
|
ShowUninstDetails show
|
|
|
|
# Installer sections
|
|
Section -Main SEC0000
|
|
SetOutPath $INSTDIR
|
|
SetOverwrite on
|
|
File @abs_top_builddir@/release/@BITCOIN_GUI_NAME@@EXEEXT@
|
|
File @abs_top_builddir@/release/@BITCOIN_WRAPPER_NAME@@EXEEXT@
|
|
File /oname=COPYING.txt @abs_top_srcdir@/COPYING
|
|
File /oname=readme.txt @abs_top_srcdir@/doc/README_windows.txt
|
|
File @abs_top_srcdir@/share/examples/bitcoin.conf
|
|
SetOutPath $INSTDIR\share\rpcauth
|
|
File @abs_top_srcdir@/share/rpcauth/*.*
|
|
SetOutPath $INSTDIR\daemon
|
|
File @abs_top_builddir@/release/@BITCOIN_DAEMON_NAME@@EXEEXT@
|
|
File @abs_top_builddir@/release/@BITCOIN_CLI_NAME@@EXEEXT@
|
|
File @abs_top_builddir@/release/@BITCOIN_TX_NAME@@EXEEXT@
|
|
File @abs_top_builddir@/release/@BITCOIN_WALLET_TOOL_NAME@@EXEEXT@
|
|
File @abs_top_builddir@/release/@BITCOIN_TEST_NAME@@EXEEXT@
|
|
SetOutPath $INSTDIR
|
|
WriteRegStr HKCU "${REGKEY}\Components" Main 1
|
|
SectionEnd
|
|
|
|
Section -post SEC0001
|
|
WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
|
|
SetOutPath $INSTDIR
|
|
WriteUninstaller $INSTDIR\uninstall.exe
|
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
|
CreateDirectory $SMPROGRAMS\$StartMenuGroup
|
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
|
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-testnet" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 1
|
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-signet" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 2
|
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "-testnet4" "$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" 3
|
|
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe
|
|
!insertmacro MUI_STARTMENU_WRITE_END
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "@CLIENT_VERSION_STRING@"
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\bitcoin-qt.exe
|
|
WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
|
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
|
|
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
|
|
WriteRegStr HKCR "@CLIENT_TARNAME@" "URL Protocol" ""
|
|
WriteRegStr HKCR "@CLIENT_TARNAME@" "" "URL:Bitcoin"
|
|
WriteRegStr HKCR "@CLIENT_TARNAME@\DefaultIcon" "" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
|
|
WriteRegStr HKCR "@CLIENT_TARNAME@\shell\open\command" "" '"$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "%1"'
|
|
|
|
# Lingering since fb2b05b1259d3e69e6e675adfa30b429424c7625 which removed the suffix
|
|
DeleteRegValue HKCU "${REGKEY} (64-bit)\Components" Main
|
|
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name) (64-bit)"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name) (64-bit).lnk"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name) (64-bit).lnk"
|
|
DeleteRegValue HKCU "${REGKEY} (64-bit)" StartMenuGroup
|
|
DeleteRegValue HKCU "${REGKEY} (64-bit)" Path
|
|
DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)\Components"
|
|
DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)"
|
|
|
|
# Lingering since 77b2923f87131a407f7d4193c54db22375130403
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Bitcoin Core (testnet, 64-bit).lnk"
|
|
SectionEnd
|
|
|
|
# Macro for selecting uninstaller sections
|
|
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
|
|
Push $R0
|
|
ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
|
|
StrCmp $R0 1 0 next${UNSECTION_ID}
|
|
!insertmacro SelectSection "${UNSECTION_ID}"
|
|
GoTo done${UNSECTION_ID}
|
|
next${UNSECTION_ID}:
|
|
!insertmacro UnselectSection "${UNSECTION_ID}"
|
|
done${UNSECTION_ID}:
|
|
Pop $R0
|
|
!macroend
|
|
|
|
# Uninstaller sections
|
|
Section /o -un.Main UNSEC0000
|
|
Delete /REBOOTOK $INSTDIR\@BITCOIN_WRAPPER_NAME@@EXEEXT@
|
|
Delete /REBOOTOK $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
|
|
Delete /REBOOTOK $INSTDIR\COPYING.txt
|
|
Delete /REBOOTOK $INSTDIR\readme.txt
|
|
Delete /REBOOTOK $INSTDIR\bitcoin.conf
|
|
RMDir /r /REBOOTOK $INSTDIR\share
|
|
RMDir /r /REBOOTOK $INSTDIR\daemon
|
|
DeleteRegValue HKCU "${REGKEY}\Components" Main
|
|
SectionEnd
|
|
|
|
Section -un.post UNSEC0001
|
|
DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk"
|
|
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk"
|
|
Delete /REBOOTOK "$SMSTARTUP\Bitcoin.lnk"
|
|
Delete /REBOOTOK $INSTDIR\uninstall.exe
|
|
Delete /REBOOTOK $INSTDIR\debug.log
|
|
Delete /REBOOTOK $INSTDIR\db.log
|
|
DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
|
|
DeleteRegValue HKCU "${REGKEY}" Path
|
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
|
|
DeleteRegKey /IfEmpty HKCU "${REGKEY}"
|
|
DeleteRegKey HKCR "@CLIENT_TARNAME@"
|
|
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
|
|
RmDir /REBOOTOK $INSTDIR
|
|
Push $R0
|
|
StrCpy $R0 $StartMenuGroup 1
|
|
StrCmp $R0 ">" no_smgroup
|
|
no_smgroup:
|
|
Pop $R0
|
|
SectionEnd
|
|
|
|
# Installer functions
|
|
Function .onInit
|
|
InitPluginsDir
|
|
${If} ${RunningX64}
|
|
; disable registry redirection (enable access to 64-bit portion of registry)
|
|
SetRegView 64
|
|
${Else}
|
|
MessageBox MB_OK|MB_ICONSTOP "Cannot install 64-bit version on a 32-bit system."
|
|
Abort
|
|
${EndIf}
|
|
FunctionEnd
|
|
|
|
# Uninstaller functions
|
|
Function un.onInit
|
|
ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
|
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
|
|
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
|
|
FunctionEnd
|