mirror of
https://github.com/netdata/netdata.git
synced 2025-04-13 09:11:50 +00:00
Windows Installer (Silent mode) (#18613)
This commit is contained in:
parent
6c6b8e1292
commit
59d806e23b
3 changed files with 174 additions and 128 deletions
packaging
|
@ -1,128 +0,0 @@
|
|||
!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
|
||||
|
50
packaging/windows/WINDOWS_INSTALLER.md
Normal file
50
packaging/windows/WINDOWS_INSTALLER.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
# Netdata Windows Installer
|
||||
|
||||
Netdata offers a convenient Windows installer for easy setup. This executable provides two distinct installation modes, outlined below.
|
||||
|
||||
## Graphical User Interface (GUI)
|
||||
|
||||
Double-clicking the installer initiates the setup process. Since Netdata adds a service to your system, you'll need to provide administrator privileges.
|
||||
The installer will then guide you through these steps:
|
||||
|
||||
1. **Welcome**: This screen provides a summary of the actions the installer will perform.
|
||||
2. **License Agreements**:
|
||||
- [Netdata Cloud UI License](/src/web/gui/v2/LICENSE.md): Review and accept the license terms to proceed.
|
||||
- [GPLv3 License](/LICENSE): Read the GNU General Public License v3, which governs the Netdata software.
|
||||
3. **Destination**: Choose the installation directory. By default, Netdata installs in `C:\Program Files\Netdata`.
|
||||
4. **Installation**: The installer will copy the necessary files to the chosen directory.
|
||||
5. **Claiming**: [Connecting](/src/claim/README.md) your Netdata Agent to your Netdata Cloud Space. Here's what you can configure:
|
||||
- **Token**: The claiming token for your Netdata Cloud Space.
|
||||
- **Rooms**: Specify the Room IDs where you want your node to appear (comma-separated list).
|
||||
- **Proxy**: Enter the address of a proxy server if required for communication with Netdata Cloud.
|
||||
- **Insecure connection**: By default, Netdata verifies the server's certificate. Enabling this option bypasses verification (use only if necessary).
|
||||
- **Open Terminal**: Select this option to launch the `MSYS2` terminal after installation completes.
|
||||
6. **Finish**: The installation process is complete!
|
||||
|
||||
## Silent Mode
|
||||
|
||||
This section provides instructions for installing Netdata in silent mode, which is ideal for automated deployments.
|
||||
Silent mode skips displaying license agreements, but requires explicitly accepting them using the `/A` option.
|
||||
|
||||
**Available Options**:
|
||||
|
||||
| Option | Description |
|
||||
|-----------|--------------------------------------------------------------------------------------------------|
|
||||
| `/S` | Enables silent mode installation. |
|
||||
| `/A` | Accepts all Netdata licenses. This option is mandatory for silent installations. |
|
||||
| `/D` | Specifies the desired installation directory (defaults to `C:\Program Files\Netdata`). |
|
||||
| `/T` | Opens the `MSYS2` terminal after installation. |
|
||||
| `/I` | Forces insecure connections, bypassing hostname verification (use only if absolutely necessary). |
|
||||
| `/TOKEN=` | Sets the claiming token for your Netdata Cloud Space. |
|
||||
| `/ROOMS=` | Comma-separated list of Room IDs where you want your node to appear. |
|
||||
| `/PROXY=` | Sets the proxy server address if your network requires one. |
|
||||
|
||||
**Example Usage**
|
||||
|
||||
Connect your Agent to your Netdata Cloud Space with token `<YOUR_TOKEN>` and room `<YOUR_ROOM>`:
|
||||
|
||||
```bash
|
||||
netdata-installer.exe /S /A /TOKEN=<YOUR_TOKEN> /ROOMS=<YOUR_ROOM>
|
||||
```
|
||||
|
||||
Replace `<YOUR_TOKEN>` and `<YOUR_ROOM>` with your actual Netdata Cloud Space claim token and room ID, respectively.
|
|
@ -29,6 +29,39 @@ Page Custom NetdataConfigPage NetdataConfigLeave
|
|||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
!define INSTALLERLOCKFILEGUID "f787d5ef-5c41-4dc0-a115-a1fb654fad1c"
|
||||
|
||||
# https://nsis.sourceforge.io/Allow_only_one_installer_instance
|
||||
!macro SingleInstanceFile
|
||||
!if "${NSIS_PTR_SIZE}" > 4
|
||||
!include "Util.nsh"
|
||||
!else ifndef IntPtrCmp
|
||||
!define IntPtrCmp IntCmp
|
||||
!endif
|
||||
|
||||
!ifndef NSIS_PTR_SIZE & SYSTYPE_PTR
|
||||
!define SYSTYPE_PTR i ; NSIS v2.x
|
||||
!else
|
||||
!define /ifndef SYSTYPE_PTR p ; NSIS v3.0+
|
||||
!endif
|
||||
|
||||
!if "${NSIS_CHAR_SIZE}" < 2
|
||||
Push "$TEMP\${INSTALLERLOCKFILEGUID}.lock"
|
||||
!else
|
||||
Push "$APPDATA\${INSTALLERLOCKFILEGUID}.lock"
|
||||
!endif
|
||||
|
||||
System::Call 'KERNEL32::CreateFile(ts,i0x40000000,i0,${SYSTYPE_PTR}0,i4,i0x04000000,${SYSTYPE_PTR}0)${SYSTYPE_PTR}.r0'
|
||||
${IntPtrCmp} $0 -1 "" launch launch
|
||||
System::Call 'kernel32::AttachConsole(i -1)i.r0'
|
||||
${If} $0 != 0
|
||||
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
||||
FileWrite $0 "The installer is already running.$\r$\n"
|
||||
${EndIf}
|
||||
Quit
|
||||
launch:
|
||||
!macroend
|
||||
|
||||
var hStartMsys
|
||||
var startMsys
|
||||
|
||||
|
@ -40,10 +73,13 @@ var hProxy
|
|||
var proxy
|
||||
var hInsecure
|
||||
var insecure
|
||||
var accepted
|
||||
|
||||
var avoidClaim
|
||||
|
||||
Function .onInit
|
||||
!insertmacro SingleInstanceFile
|
||||
|
||||
nsExec::ExecToLog '$SYSDIR\sc.exe stop Netdata'
|
||||
pop $0
|
||||
${If} $0 == 0
|
||||
|
@ -54,6 +90,59 @@ Function .onInit
|
|||
StrCpy $startMsys ${BST_UNCHECKED}
|
||||
StrCpy $insecure ${BST_UNCHECKED}
|
||||
StrCpy $avoidClaim ${BST_UNCHECKED}
|
||||
StrCpy $accepted ${BST_UNCHECKED}
|
||||
|
||||
${GetParameters} $R0
|
||||
${GetOptions} $R0 "/s" $0
|
||||
IfErrors +2 0
|
||||
SetSilent silent
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/t" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $startMsys ${BST_CHECKED}
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/i" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $insecure ${BST_CHECKED}
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/a" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $accepted ${BST_CHECKED}
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/token=" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $cloudToken $0
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/rooms=" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $cloudRooms $0
|
||||
ClearErrors
|
||||
|
||||
${GetOptions} $R0 "/proxy=" $0
|
||||
IfErrors +2 0
|
||||
StrCpy $proxy $0
|
||||
ClearErrors
|
||||
|
||||
IfSilent checklicense goahead
|
||||
checklicense:
|
||||
${If} $accepted == ${BST_UNCHECKED}
|
||||
System::Call 'kernel32::AttachConsole(i -1)i.r0'
|
||||
${If} $0 != 0
|
||||
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
||||
FileWrite $0 "You must accept the licenses (/A) to continue.$\r$\n"
|
||||
${EndIf}
|
||||
Quit
|
||||
${EndIf}
|
||||
goahead:
|
||||
FunctionEnd
|
||||
|
||||
Function un.onInit
|
||||
!insertmacro SingleInstanceFile
|
||||
FunctionEnd
|
||||
|
||||
Function NetdataConfigPage
|
||||
|
@ -199,6 +288,41 @@ Section "Install Netdata"
|
|||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
Call NetdataUninstallRegistry
|
||||
|
||||
IfSilent runcmds goodbye
|
||||
runcmds:
|
||||
nsExec::ExecToLog '$SYSDIR\sc.exe start Netdata'
|
||||
pop $0
|
||||
|
||||
System::Call 'kernel32::AttachConsole(i -1)i.r0'
|
||||
${If} $0 != 0
|
||||
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
||||
FileWrite $0 "Netdata installed with success.$\r$\n"
|
||||
${EndIf}
|
||||
${If} $startMsys == ${BST_CHECKED}
|
||||
nsExec::ExecToLog '$INSTDIR\msys2.exe'
|
||||
pop $0
|
||||
${EndIf}
|
||||
|
||||
StrLen $0 $cloudToken
|
||||
StrLen $1 $cloudRooms
|
||||
${If} $0 == 0
|
||||
${OrIf} $1 == 0
|
||||
Goto goodbye
|
||||
${EndIf}
|
||||
|
||||
${If} $0 == 135
|
||||
${AndIf} $1 >= 36
|
||||
nsExec::ExecToLog '$INSTDIR\usr\bin\NetdataClaim.exe /T $cloudToken /R $cloudRooms /P $proxy /I $insecure'
|
||||
pop $0
|
||||
${Else}
|
||||
System::Call 'kernel32::AttachConsole(i -1)i.r0'
|
||||
${If} $0 != 0
|
||||
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
||||
FileWrite $0 "Room(s) or Token invalid.$\r$\n"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
goodbye:
|
||||
SectionEnd
|
||||
|
||||
Section "Uninstall"
|
||||
|
|
Loading…
Add table
Reference in a new issue