Autarch/installer.nsi
DigiJ 67b7edc696 v1.5.1 — Fix chat system, add system tray icon, agent mode improvements
- Fix Hal chat: add Chat/Agent mode toggle so users can switch between
  direct LLM streaming (Chat) and tool-using Agent mode
- Fix Agent system: graceful degradation when model can't follow
  structured THOUGHT/ACTION/PARAMS format (falls back to direct answer
  after 2 parse failures instead of looping 20 times)
- Fix frozen build: remove llama_cpp from PyInstaller excludes list
  so LLM works in compiled exe
- Add system tray icon: autarch.ico (from icon.svg) used for exe icons,
  installer shortcuts, and runtime tray icon
- Update tray.py to load .ico file with fallback to programmatic generation
- Add inline critical CSS for FOUC prevention
- Bump version to 1.5.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:13:13 -08:00

145 lines
6.6 KiB
NSIS

; ============================================================================
; AUTARCH NSIS Installer Script
; ============================================================================
;
; Prerequisites:
; 1. Build PyInstaller first: pyinstaller autarch_public.spec
; 2. Install NSIS: https://nsis.sourceforge.io/Download
; 3. Compile this script: makensis installer.nsi
; Or right-click installer.nsi -> "Compile NSIS Script"
;
; Output: AUTARCH_Setup.exe
; ============================================================================
!include "MUI2.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
; ── App metadata ─────────────────────────────────────────────────────────────
!define APPNAME "AUTARCH"
!define APPVERSION "1.5.1"
!define PUBLISHER "darkHal Security Group"
!define DESCRIPTION "Autonomous Tactical Agent for Reconnaissance, Counterintelligence, and Hacking"
; Source directory — PyInstaller onedir output
!define SRCDIR "dist\autarch"
; ── Installer settings ───────────────────────────────────────────────────────
Name "${APPNAME} ${APPVERSION}"
OutFile "AUTARCH_Setup.exe"
InstallDir "$LOCALAPPDATA\${APPNAME}"
InstallDirRegKey HKCU "Software\${APPNAME}" "InstallDir"
RequestExecutionLevel user
SetCompressor /SOLID lzma
SetCompressorDictSize 64
Unicode True
; ── Variables ────────────────────────────────────────────────────────────────
Var StartMenuGroup
; ── MUI configuration ────────────────────────────────────────────────────────
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
!define MUI_WELCOMEPAGE_TITLE "Welcome to ${APPNAME} Setup"
!define MUI_WELCOMEPAGE_TEXT "This wizard will install ${APPNAME} ${APPVERSION} on your computer.$\r$\n$\r$\n${DESCRIPTION}$\r$\n$\r$\nClick Next to continue."
; Finish page — option to launch
!define MUI_FINISHPAGE_RUN "$INSTDIR\autarch_web.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Launch ${APPNAME} Web Dashboard"
!define MUI_FINISHPAGE_SHOWREADME ""
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut"
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut
; ── Pages ────────────────────────────────────────────────────────────────────
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
; Language
!insertmacro MUI_LANGUAGE "English"
; ── Install section ──────────────────────────────────────────────────────────
Section "Install" SecInstall
SetOutPath "$INSTDIR"
; Copy everything from the PyInstaller dist/autarch/ directory
File /r "${SRCDIR}\*.*"
; Write uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
; Registry — install location + Add/Remove Programs entry
WriteRegStr HKCU "Software\${APPNAME}" "InstallDir" "$INSTDIR"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"DisplayName" "${APPNAME}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"DisplayVersion" "${APPVERSION}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"Publisher" "${PUBLISHER}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"UninstallString" '"$INSTDIR\Uninstall.exe"'
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"InstallLocation" "$INSTDIR"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"DisplayIcon" "$INSTDIR\autarch.exe"
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"NoModify" 1
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"NoRepair" 1
; Estimate installed size for Add/Remove Programs
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
"EstimatedSize" "$0"
; ── Start Menu shortcuts ─────────────────────────────────────────────────
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME} Web Dashboard.lnk" \
"$INSTDIR\autarch_web.exe" "" "$INSTDIR\autarch_web.exe" 0
CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME} CLI.lnk" \
"$INSTDIR\autarch.exe" "" "$INSTDIR\autarch.exe" 0
CreateShortcut "$SMPROGRAMS\${APPNAME}\Uninstall ${APPNAME}.lnk" \
"$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
SectionEnd
; ── Desktop shortcut function (called from finish page checkbox) ─────────────
Function CreateDesktopShortcut
CreateShortcut "$DESKTOP\${APPNAME} Web.lnk" \
"$INSTDIR\autarch_web.exe" "" "$INSTDIR\autarch_web.exe" 0
FunctionEnd
; ── Uninstall section ────────────────────────────────────────────────────────
Section "Uninstall"
; Kill running instances
nsExec::ExecToLog 'taskkill /F /IM autarch.exe'
nsExec::ExecToLog 'taskkill /F /IM autarch_web.exe'
; Remove Start Menu
RMDir /r "$SMPROGRAMS\${APPNAME}"
; Remove Desktop shortcut
Delete "$DESKTOP\${APPNAME} Web.lnk"
; Remove install directory (everything)
RMDir /r "$INSTDIR"
; Remove registry entries
DeleteRegKey HKCU "Software\${APPNAME}"
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
SectionEnd