2026-03-02 22:02:22 -08:00
; ============================================================================
; 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 "
2026-03-02 22:17:42 -08:00
!define APPVERSION " 1.5 "
2026-03-02 22:02:22 -08:00
!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