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_builddir@/src/qt/res/rendered_icons/limenka.ico"
19 !define MUI_WELCOMEFINISHPAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/nsis-wizard.bmp"
20 !define MUI_HEADERIMAGE
21 !define MUI_HEADERIMAGE_RIGHT
22 !define MUI_HEADERIMAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/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\@LIMENKA_GUI_NAME@@EXEEXT@
30 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
31 !define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_builddir@/src/qt/res/rendered_icons/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\Limenka
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/@LIMENKA_GUI_NAME@@EXEEXT@
76 File /oname=COPYING.txt @abs_top_srcdir@/COPYING
77 File /oname=readme.txt @abs_top_srcdir@/doc/README_windows.txt
78 File @abs_top_srcdir@/share/examples/limenka.conf
79 SetOutPath $INSTDIR\share\rpcauth
80 File @abs_top_srcdir@/share/rpcauth/*.*
81 SetOutPath $INSTDIR\daemon
82 File @abs_top_builddir@/release/@LIMENKA_DAEMON_NAME@@EXEEXT@
83 File @abs_top_builddir@/release/@LIMENKA_CLI_NAME@@EXEEXT@
84 File @abs_top_builddir@/release/@LIMENKA_TX_NAME@@EXEEXT@
85 File @abs_top_builddir@/release/@LIMENKA_WALLET_TOOL_NAME@@EXEEXT@
86 File @abs_top_builddir@/release/@LIMENKA_TEST_NAME@@EXEEXT@
87 SetOutPath $INSTDIR
88 WriteRegStr HKCU "${REGKEY}\Components" Main 1
89 SectionEnd
90
91 Section -post SEC0001
92 WriteRegStr HKCU "${REGKEY}" Path $INSTDIR
93 SetOutPath $INSTDIR
94 WriteUninstaller $INSTDIR\uninstall.exe
95 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
96 CreateDirectory $SMPROGRAMS\$StartMenuGroup
97 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@
98 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" "-testnet" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" 1
99 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" "-signet" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" 2
100 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" "-testnet4" "$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" 3
101 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe
102 !insertmacro MUI_STARTMENU_WRITE_END
103 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
104 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "@CLIENT_VERSION_STRING@"
105 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
106 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
107 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\limenka-qt.exe
108 WriteRegStr HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
109 WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
110 WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
111 WriteRegStr HKCR "@CLIENT_TARNAME@" "URL Protocol" ""
112 WriteRegStr HKCR "@CLIENT_TARNAME@" "" "URL:Limenka"
113 WriteRegStr HKCR "@CLIENT_TARNAME@\DefaultIcon" "" $INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@
114 WriteRegStr HKCR "@CLIENT_TARNAME@\shell\open\command" "" '"$INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@" "%1"'
115
116 DeleteRegValue HKCU "${REGKEY} (64-bit)\Components" Main
117 DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name) (64-bit)"
118 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name) (64-bit).lnk"
119 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name) (64-bit).lnk"
120 DeleteRegValue HKCU "${REGKEY} (64-bit)" StartMenuGroup
121 DeleteRegValue HKCU "${REGKEY} (64-bit)" Path
122 DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)\Components"
123 DeleteRegKey /IfEmpty HKCU "${REGKEY} (64-bit)"
124 SectionEnd
125
126 # Macro for selecting uninstaller sections
127 !macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
128 Push $R0
129 ReadRegStr $R0 HKCU "${REGKEY}\Components" "${SECTION_NAME}"
130 StrCmp $R0 1 0 next${UNSECTION_ID}
131 !insertmacro SelectSection "${UNSECTION_ID}"
132 GoTo done${UNSECTION_ID}
133 next${UNSECTION_ID}:
134 !insertmacro UnselectSection "${UNSECTION_ID}"
135 done${UNSECTION_ID}:
136 Pop $R0
137 !macroend
138
139 # Uninstaller sections
140 Section /o -un.Main UNSEC0000
141 Delete /REBOOTOK $INSTDIR\@LIMENKA_GUI_NAME@@EXEEXT@
142 Delete /REBOOTOK $INSTDIR\COPYING.txt
143 Delete /REBOOTOK $INSTDIR\readme.txt
144 Delete /REBOOTOK $INSTDIR\limenka.conf
145 RMDir /r /REBOOTOK $INSTDIR\share
146 RMDir /r /REBOOTOK $INSTDIR\daemon
147 DeleteRegValue HKCU "${REGKEY}\Components" Main
148 SectionEnd
149
150 Section -un.post UNSEC0001
151 DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
152 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
153 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk"
154 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet).lnk"
155 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (testnet4).lnk"
156 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@CLIENT_NAME@ (test signet).lnk"
157 Delete /REBOOTOK "$SMSTARTUP\Limenka.lnk"
158 Delete /REBOOTOK $INSTDIR\uninstall.exe
159 Delete /REBOOTOK $INSTDIR\debug.log
160 Delete /REBOOTOK $INSTDIR\db.log
161 DeleteRegValue HKCU "${REGKEY}" StartMenuGroup
162 DeleteRegValue HKCU "${REGKEY}" Path
163 DeleteRegKey /IfEmpty HKCU "${REGKEY}\Components"
164 DeleteRegKey /IfEmpty HKCU "${REGKEY}"
165 DeleteRegKey HKCR "@CLIENT_TARNAME@"
166 RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
167 RmDir /REBOOTOK $INSTDIR
168 Push $R0
169 StrCpy $R0 $StartMenuGroup 1
170 StrCmp $R0 ">" no_smgroup
171 no_smgroup:
172 Pop $R0
173 SectionEnd
174
175 # Installer functions
176 Function .onInit
177 InitPluginsDir
178 ${If} ${RunningX64}
179 ; disable registry redirection (enable access to 64-bit portion of registry)
180 SetRegView 64
181 ${Else}
182 MessageBox MB_OK|MB_ICONSTOP "Cannot install 64-bit version on a 32-bit system."
183 Abort
184 ${EndIf}
185 FunctionEnd
186
187 # Uninstaller functions
188 Function un.onInit
189 ReadRegStr $INSTDIR HKCU "${REGKEY}" Path
190 !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
191 !insertmacro SELECT_UNSECTION Main ${UNSEC0000}
192 FunctionEnd
193