Some checks failed
Build Release / create-release (push) Successful in 1s
Lint & Test / test (push) Failing after 15s
Build Release / build-linux (push) Successful in 1m20s
Build Release / build-docker (push) Failing after 9s
Build Release / build-windows (push) Successful in 3m19s
- Replace nuget approach (doesn't contain tkinter) with extracting from the official Python amd64.exe installer using 7z - Remove MUI_ICON/MUI_UNICON (no .ico file available, use NSIS default) - Add p7zip-full to CI dependencies
147 lines
5.5 KiB
NSIS
147 lines
5.5 KiB
NSIS
; LedGrab NSIS Installer Script
|
|
; Cross-compilable on Linux: apt install nsis && makensis installer.nsi
|
|
;
|
|
; Expects the portable build to already exist at build/LedGrab/
|
|
; (run build-dist-windows.sh first)
|
|
|
|
!include "MUI2.nsh"
|
|
!include "FileFunc.nsh"
|
|
|
|
; ── Metadata ────────────────────────────────────────────────
|
|
|
|
!define APPNAME "LedGrab"
|
|
!define DESCRIPTION "Ambient lighting system — captures screen content and drives LED strips in real time"
|
|
!define VERSIONMAJOR 0
|
|
!define VERSIONMINOR 1
|
|
!define VERSIONBUILD 0
|
|
|
|
; Set from command line: makensis -DVERSION=0.1.0 installer.nsi
|
|
!ifndef VERSION
|
|
!define VERSION "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}"
|
|
!endif
|
|
|
|
Name "${APPNAME} v${VERSION}"
|
|
OutFile "build\${APPNAME}-v${VERSION}-win-x64-setup.exe"
|
|
InstallDir "$LOCALAPPDATA\${APPNAME}"
|
|
InstallDirRegKey HKCU "Software\${APPNAME}" "InstallDir"
|
|
RequestExecutionLevel user
|
|
SetCompressor /SOLID lzma
|
|
|
|
; ── Modern UI Configuration ─────────────────────────────────
|
|
|
|
!define MUI_ABORTWARNING
|
|
|
|
; ── Pages ───────────────────────────────────────────────────
|
|
|
|
!insertmacro MUI_PAGE_WELCOME
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_COMPONENTS
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
!insertmacro MUI_PAGE_FINISH
|
|
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
; ── Installer Sections ──────────────────────────────────────
|
|
|
|
Section "!${APPNAME} (required)" SecCore
|
|
SectionIn RO
|
|
|
|
SetOutPath "$INSTDIR"
|
|
|
|
; Copy the entire portable build
|
|
File /r "build\LedGrab\python"
|
|
File /r "build\LedGrab\app"
|
|
File "build\LedGrab\LedGrab.bat"
|
|
|
|
; Create data and logs directories
|
|
CreateDirectory "$INSTDIR\data"
|
|
CreateDirectory "$INSTDIR\logs"
|
|
|
|
; Create uninstaller
|
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
|
|
|
; Start Menu shortcuts
|
|
CreateDirectory "$SMPROGRAMS\${APPNAME}"
|
|
CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\LedGrab.bat" \
|
|
"" "" "" SW_SHOWMINIMIZED "" "${DESCRIPTION}"
|
|
CreateShortcut "$SMPROGRAMS\${APPNAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
|
|
|
|
; Registry: install location + Add/Remove Programs entry
|
|
WriteRegStr HKCU "Software\${APPNAME}" "InstallDir" "$INSTDIR"
|
|
WriteRegStr HKCU "Software\${APPNAME}" "Version" "${VERSION}"
|
|
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
|
"DisplayName" "${APPNAME}"
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
|
"DisplayVersion" "${VERSION}"
|
|
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}" \
|
|
"Publisher" "Alexei Dolgolyov"
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
|
"URLInfoAbout" "https://git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed"
|
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
|
"NoModify" 1
|
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
|
|
"NoRepair" 1
|
|
|
|
; Calculate 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"
|
|
SectionEnd
|
|
|
|
Section "Desktop shortcut" SecDesktop
|
|
CreateShortcut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\LedGrab.bat" \
|
|
"" "" "" SW_SHOWMINIMIZED "" "${DESCRIPTION}"
|
|
SectionEnd
|
|
|
|
Section "Start with Windows" SecAutostart
|
|
CreateShortcut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\LedGrab.bat" \
|
|
"" "" "" SW_SHOWMINIMIZED "" "${DESCRIPTION}"
|
|
SectionEnd
|
|
|
|
; ── Section Descriptions ────────────────────────────────────
|
|
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecCore} \
|
|
"Install ${APPNAME} server and all required files."
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} \
|
|
"Create a shortcut on your desktop."
|
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecAutostart} \
|
|
"Start ${APPNAME} automatically when you log in."
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
|
|
; ── Uninstaller ─────────────────────────────────────────────
|
|
|
|
Section "Uninstall"
|
|
; Remove shortcuts
|
|
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
|
|
Delete "$SMPROGRAMS\${APPNAME}\Uninstall.lnk"
|
|
RMDir "$SMPROGRAMS\${APPNAME}"
|
|
Delete "$DESKTOP\${APPNAME}.lnk"
|
|
Delete "$SMSTARTUP\${APPNAME}.lnk"
|
|
|
|
; Remove application files (but NOT data/ — preserve user config)
|
|
RMDir /r "$INSTDIR\python"
|
|
RMDir /r "$INSTDIR\app"
|
|
Delete "$INSTDIR\LedGrab.bat"
|
|
Delete "$INSTDIR\uninstall.exe"
|
|
|
|
; Remove logs (but keep data/)
|
|
RMDir /r "$INSTDIR\logs"
|
|
|
|
; Try to remove install dir (only succeeds if empty — data/ may remain)
|
|
RMDir "$INSTDIR"
|
|
|
|
; Remove registry keys
|
|
DeleteRegKey HKCU "Software\${APPNAME}"
|
|
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
|
|
SectionEnd
|