summaryrefslogtreecommitdiffstats
path: root/packaging/installer/installer.nsi
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packaging/installer/installer.nsi128
1 files changed, 128 insertions, 0 deletions
diff --git a/packaging/installer/installer.nsi b/packaging/installer/installer.nsi
new file mode 100644
index 00000000..c14ccb59
--- /dev/null
+++ b/packaging/installer/installer.nsi
@@ -0,0 +1,128 @@
+!include "MUI2.nsh"
+!include "nsDialogs.nsh"
+!include "FileFunc.nsh"
+
+Name "Netdata"
+Outfile "netdata-installer.exe"
+InstallDir "$PROGRAMFILES\Netdata"
+RequestExecutionLevel admin
+
+!define MUI_ICON "NetdataWhite.ico"
+!define MUI_UNICON "NetdataWhite.ico"
+
+!define ND_UININSTALL_REG "Software\Microsoft\Windows\CurrentVersion\Uninstall\Netdata"
+
+!define MUI_ABORTWARNING
+!define MUI_UNABORTWARNING
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "C:\msys64\gpl-3.0.txt"
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+!insertmacro MUI_LANGUAGE "English"
+
+Function .onInit
+ nsExec::ExecToLog '$SYSDIR\sc.exe stop Netdata'
+ pop $0
+ ${If} $0 == 0
+ nsExec::ExecToLog '$SYSDIR\sc.exe delete Netdata'
+ pop $0
+ ${EndIf}
+FunctionEnd
+
+Function NetdataUninstallRegistry
+ ClearErrors
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "DisplayName" "Netdata - Real-time system monitoring."
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "DisplayIcon" "$INSTDIR\Uninstall.exe,0"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "UninstallString" "$INSTDIR\Uninstall.exe"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "RegOwner" "Netdata Inc."
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "RegCompany" "Netdata Inc."
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "Publisher" "Netdata Inc."
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "HelpLink" "https://learn.netdata.cloud/"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "URLInfoAbout" "https://www.netdata.cloud/"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "DisplayVersion" "${CURRVERSION}"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "VersionMajor" "${MAJORVERSION}"
+ WriteRegStr HKLM "${ND_UININSTALL_REG}" \
+ "VersionMinor" "${MINORVERSION}"
+
+ IfErrors 0 +2
+ MessageBox MB_ICONEXCLAMATION|MB_OK "Unable to create an entry in the Control Panel!" IDOK end
+
+ ClearErrors
+ ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+ IntFmt $0 "0x%08X" $0
+ WriteRegDWORD HKLM "${ND_UININSTALL_REG}" "EstimatedSize" "$0"
+
+ IfErrors 0 +2
+ MessageBox MB_ICONEXCLAMATION|MB_OK "Cannot estimate the installation size." IDOK end
+ end:
+FunctionEnd
+
+Section "Install Netdata"
+ SetOutPath $INSTDIR
+ SetCompress off
+
+ File /r "C:\msys64\opt\netdata\*.*"
+
+ ClearErrors
+ nsExec::ExecToLog '$SYSDIR\sc.exe create Netdata binPath= "$INSTDIR\usr\bin\netdata.exe" start= delayed-auto'
+ pop $0
+ ${If} $0 != 0
+ DetailPrint "Warning: Failed to create Netdata service."
+ ${EndIf}
+
+ ClearErrors
+ nsExec::ExecToLog '$SYSDIR\sc.exe description Netdata "Real-time system monitoring service"'
+ pop $0
+ ${If} $0 != 0
+ DetailPrint "Warning: Failed to add Netdata service description."
+ ${EndIf}
+
+ ClearErrors
+ nsExec::ExecToLog '$SYSDIR\sc.exe start Netdata'
+ pop $0
+ ${If} $0 != 0
+ DetailPrint "Warning: Failed to start Netdata service."
+ ${EndIf}
+
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+
+ Call NetdataUninstallRegistry
+SectionEnd
+
+Section "Uninstall"
+ ClearErrors
+ nsExec::ExecToLog '$SYSDIR\sc.exe stop Netdata'
+ pop $0
+ ${If} $0 != 0
+ DetailPrint "Warning: Failed to stop Netdata service."
+ ${EndIf}
+
+ ClearErrors
+ nsExec::ExecToLog '$SYSDIR\sc.exe delete Netdata'
+ pop $0
+ ${If} $0 != 0
+ DetailPrint "Warning: Failed to delete Netdata service."
+ ${EndIf}
+
+ RMDir /r "$INSTDIR"
+
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Netdata"
+SectionEnd
+