!include "MUI2.nsh" !include "LogicLib.nsh" Name "LOGAR Client" OutFile "../dist/LOGAR-Client-Setup.exe" InstallDir "$PROGRAMFILES64\LOGAR" RequestExecutionLevel admin BrandingText "LOGAR Enterprise SIEM & Edge Forwarder" VIProductVersion "0.3.1.0" VIAddVersionKey "ProductName" "LOGAR Client" VIAddVersionKey "CompanyName" "LOGAR Security Systems" VIAddVersionKey "LegalCopyright" "© 2026 LOGAR Security Systems" VIAddVersionKey "FileDescription" "LOGAR Windows Edge Log Forwarder Setup" VIAddVersionKey "FileVersion" "0.3.1.0" VIAddVersionKey "ProductVersion" "0.3.1.0" Var DATADIR # --- UI Pages --- !define MUI_ABORTWARNING # Welcome Page !define MUI_WELCOMEPAGE_TITLE "Welcome to LOGAR Client Setup" !define MUI_WELCOMEPAGE_TEXT "LOGAR Client provides secure, encrypted Windows Event Log forwarding with automatic certificate enrollment and state tracking.\r\n\r\nThis wizard will guide you through installing the forwarder service." !insertmacro MUI_PAGE_WELCOME # Directory Page 1: Installation Directory !define MUI_PAGE_HEADER_TEXT "Choose Installation Location" !define MUI_PAGE_HEADER_SUBTEXT "Choose the folder in which to install program binaries." !define MUI_DIRECTORYPAGE_VARIABLE $INSTDIR !insertmacro MUI_PAGE_DIRECTORY # Directory Page 2: Data Directory !define MUI_PAGE_HEADER_TEXT "Choose Data & Storage Location" !define MUI_PAGE_HEADER_SUBTEXT "Choose where state tracking, certificates, and configuration files should be stored." !define MUI_DIRECTORYPAGE_TEXT_TOP "Choose the folder where LOGAR Client should store state tracking (client_state.json), configuration (client_config.json), and mTLS certificates.$\r$\n$\r$\nDefault is recommended for automatic background service access." !define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Data & Storage Folder" !define MUI_DIRECTORYPAGE_VARIABLE $DATADIR !insertmacro MUI_PAGE_DIRECTORY # Instfiles Page !insertmacro MUI_PAGE_INSTFILES # Finish Page !define MUI_FINISHPAGE_TITLE "Installation Complete" !define MUI_FINISHPAGE_TEXT "LOGAR Client has been successfully installed and configured as an automated background service." !insertmacro MUI_PAGE_FINISH # Uninstaller Pages !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" Function .onInit SetShellVarContext all StrCpy $DATADIR "$APPDATA\LOGAR" FunctionEnd Section "Install" SetShellVarContext all SetOutPath "$INSTDIR" File "../dist/Win_Client.exe" File "../compilation/nssm.exe" File /r "../dist/runtime" CreateDirectory "$DATADIR" ExecWait 'icacls "$DATADIR" /grant "*S-1-5-32-545:(OI)(CI)M" /T /Q' # Install and configure service via NSSM ExecWait '"$INSTDIR\nssm.exe" install LOGAR_Client "$INSTDIR\Win_Client.exe"' ExecWait '"$INSTDIR\nssm.exe" set LOGAR_Client AppDirectory "$INSTDIR"' ExecWait '"$INSTDIR\nssm.exe" set LOGAR_Client AppStdout "$DATADIR\client.log"' ExecWait '"$INSTDIR\nssm.exe" set LOGAR_Client AppStderr "$DATADIR\client_err.log"' ExecWait '"$INSTDIR\nssm.exe" set LOGAR_Client AppParameters "--config \"$DATADIR\client_config.json\""' ExecWait '"$INSTDIR\nssm.exe" start LOGAR_Client' WriteUninstaller "$INSTDIR\uninstall.exe" WriteRegStr HKLM "Software\LOGAR\LOGAR-Client" "DataDir" "$DATADIR" SectionEnd Section "Uninstall" SetShellVarContext all ReadRegStr $DATADIR HKLM "Software\LOGAR\LOGAR-Client" "DataDir" ${If} $DATADIR == "" StrCpy $DATADIR "$APPDATA\LOGAR" ${EndIf} ExecWait '"$INSTDIR\nssm.exe" stop LOGAR_Client' ExecWait '"$INSTDIR\nssm.exe" remove LOGAR_Client confirm' RMDir /r "$INSTDIR\runtime" RMDir /r "$INSTDIR\certs" Delete "$INSTDIR\client_config.json" Delete "$INSTDIR\client_state.json" Delete "$INSTDIR\*.log" Delete "$INSTDIR\Win_Client.exe" Delete "$INSTDIR\nssm.exe" Delete "$INSTDIR\uninstall.exe" RMDir /r "$INSTDIR" RMDir /r "$DATADIR" DeleteRegKey HKLM "Software\LOGAR\LOGAR-Client" SectionEnd