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