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