feat(nsis): Create installer for Windows

Use nsis to create an installer for Windows user. It installs the binary
for the user (for now) and set the Path to access katenary binary from
cmd or Powershell.
This commit is contained in:
2025-07-07 17:58:21 +02:00
parent 0c0b50b0df
commit c54bc35c9f
3 changed files with 65 additions and 1 deletions

4
.gitignore vendored
View File

@@ -18,3 +18,7 @@ cover*
# will be treated later
/examples/*
# nsis
nsis/*.dll
nsis/*.exe

View File

@@ -36,7 +36,7 @@ SHELL := bash
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
.PHONY: help clean build install tests test doc
.PHONY: help clean build install tests test doc nsis
all: build
@@ -141,6 +141,19 @@ dist/katenary-freebsd-arm64:
@echo -e "\033[1;32mBuilding katenary $(VERSION) for freebsd-arm64...\033[0m"
$(MAKE) katenary GOOS=freebsd GOARCH=arm64 OUT=$@
nsis/EnVar.dll:
curl https://nsis.sourceforge.io/mediawiki/images/7/7f/EnVar_plugin.zip -o nsis/EnVar_plugin.zip
cd nsis
unzip -o EnVar_plugin.zip Plugins/x86-unicode/EnVar.dll
mv Plugins/x86-unicode/EnVar.dll EnVar.dll
rm -rf EnVar_plugin.zip Plugins
nsis: nsis/EnVar.dll dist/katenary.exe
@echo -e "\033[1;32mBuilding katenary $(VERSION) for windows with NSIS...\033[0m"
cd nsis && makensis -DAPP_VERSION=$(VERSION) katenary.nsi
gpg-sign:
rm -f dist/*.asc
$(MAKE) $(ASC_BINARIES)

47
nsis/katenary.nsi Normal file
View File

@@ -0,0 +1,47 @@
!define APP_NAME "Katenary"
!define COMPANY_NAME "Katenary"
OutFile "katenary_installer.exe"
InstallDir "$LOCALAPPDATA\Katenary"
RequestExecutionLevel user
!include "MUI2.nsh"
!addplugindir "."
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
Name "${APP_NAME} ${APP_VERSION}"
Section "Install"
SetOutPath "$INSTDIR"
File "..\dist\katenary.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
; Manipulation PATH utilisateur
EnVar::SetHKCU
Pop $0
EnVar::AddValue "Path" "$INSTDIR"
Pop $0 ; 0 = succès
SectionEnd
Section "Uninstall"
EnVar::SetHKCU
Pop $0
EnVar::DeleteValue "Path" "$INSTDIR"
Pop $0
Delete "$INSTDIR\katenary.exe"
Delete "$INSTDIR\uninstall.exe"
SectionEnd