Compare commits

..

12 Commits

Author SHA1 Message Date
Krystie 069f42d6d0 v5.5.3: Per-user installer (no UAC), network drive support, branding
Build All Platforms / test-linux-unit (push) Failing after 40s
Build All Platforms / build-linux-qt (push) Failing after 40s
Build All Platforms / build-linux-daemon (push) Failing after 40s
Build All Platforms / build-windows-qt (push) Has been cancelled
Build All Platforms / build-windows-daemon (push) Has been cancelled
Build All Platforms / build-macos (push) Has been cancelled
Build All Platforms / release (push) Has been cancelled
2026-04-03 00:58:39 -07:00
Krystie 6c87931901 Triangles branding + fix Qt platform plugin for Windows installer
Build All Platforms / test-linux-unit (push) Failing after 40s
Build All Platforms / build-linux-qt (push) Failing after 40s
Build All Platforms / build-linux-daemon (push) Failing after 40s
Build All Platforms / build-windows-qt (push) Has been cancelled
Build All Platforms / build-windows-daemon (push) Has been cancelled
Build All Platforms / build-macos (push) Has been cancelled
Build All Platforms / release (push) Has been cancelled
2026-04-03 00:10:32 -07:00
Krystie b31d8d08dd Bump clientversion.h to 5.5.2 (match tag) 2026-04-02 23:38:52 -07:00
Krystie e3705a66b8 Install NSIS via MSYS2 pacman (SourceForge downloads unreliable in CI) 2026-04-02 23:07:04 -07:00
Krystie f0a2c0e237 Use NSIS portable zip instead of installer (corrupted download fix) 2026-04-02 22:57:45 -07:00
Krystie 7120df3989 Fully self-contained on ALL platforms — zero external dependencies
Linux Qt .deb: bundles all .so files + LD_LIBRARY_PATH wrapper
Linux daemon .deb: same + systemd Environment= for LD_LIBRARY_PATH
Windows: already handled (ldd scan for DLLs)
macOS: already handled (install_name_tool into Frameworks)

Removed all Depends: from .deb control files. Every package
runs on a clean machine with nothing pre-installed.
2026-04-02 22:48:31 -07:00
Krystie a031795aea Bundle ALL runtime libraries for every platform
Windows Qt: ldd scan copies every MSYS2 DLL into installer
Windows daemon: ships with DLLs + Tor in a zip
macOS: copies Homebrew dylibs into .app/Frameworks with install_name_tool
Linux: unchanged (.deb Depends handles it via apt)
2026-04-02 22:46:41 -07:00
Krystie 3eb436bcd2 Install NSIS directly from SourceForge instead of Chocolatey
Chocolatey had a 503 outage. Direct download is more reliable for CI.
2026-04-02 22:43:48 -07:00
Krystie 6ca0770d72 Fix Tor download: use dist.torproject.org v15.0.8 (14.0.8 was 404) 2026-04-02 22:28:38 -07:00
Krystie 7e8ae1a25b Proper installers for all platforms
Windows: NSIS setup.exe — double-click to install with Start Menu
  shortcuts, desktop icon, uninstaller in Add/Remove Programs.
  Tor bundled in tor/ subfolder, auto-detected by wallet.

Linux: .deb packages (dpkg -i) for both Qt wallet and daemon.
  Wallet gets desktop entry + app icon. Daemon gets systemd service.
  Tor bundled in /usr/lib/cryptographic-triangles/tor/.

macOS: DMG with Tor inside .app bundle (unchanged).

All platforms: download one file, install, run. Zero configuration.
2026-04-02 22:11:29 -07:00
Krystie 552809e359 Bundle Tor Expert Bundle in all platform releases
Every release now ships with Tor integrated:
- Windows Qt/daemon: tor.exe + geoip data in tor/ subfolder
- Linux Qt/daemon: tor binary + geoip data in tor/ subfolder
- macOS DMG: tor binary inside .app/Contents/MacOS/tor/

The wallet auto-detects tor in the tor/ subfolder next to the binary.
No user configuration needed - Tor starts automatically on launch.

Release assets now packaged as archives (zip/tar.gz) to include
the tor/ directory alongside the wallet binary.
2026-04-02 21:58:32 -07:00
Krystie 099f78efea Bundle Tor binary with all platform releases
Every release now ships with the Tor Expert Bundle included:
- Windows Qt: tor/ directory alongside triangles-qt.exe
- Windows daemon: tor/ directory alongside trianglesd.exe
- Linux Qt: tor/ directory in release tarball
- Linux daemon: tor/ directory in release tarball
- macOS: tor/ inside .app bundle (Contents/MacOS/tor/)

The wallet already auto-detects tor binary next to itself or in
a tor/ subfolder. Zero configuration needed for users - Tor starts
automatically with the wallet and stops when it exits.

Release assets now packaged as zip/tar.gz to include tor directory.
2026-04-02 21:55:33 -07:00
7 changed files with 413 additions and 31 deletions
+315 -30
View File
@@ -63,6 +63,13 @@ jobs:
ln -sf /mingw64/bin/lrelease-qt5.exe /mingw64/bin/lrelease.exe 2>/dev/null || true
ln -sf /mingw64/bin/windeployqt-qt5.exe /mingw64/bin/windeployqt.exe 2>/dev/null || true
- name: Set VERSION from source
run: |
MAJOR=$(grep 'CLIENT_VERSION_MAJOR' src/clientversion.h | awk '{print $3}')
MINOR=$(grep 'CLIENT_VERSION_MINOR' src/clientversion.h | awk '{print $3}')
REV=$(grep 'CLIENT_VERSION_REVISION' src/clientversion.h | awk '{print $3}')
echo "VERSION=${MAJOR}.${MINOR}.${REV}" >> $GITHUB_ENV
- name: Clean stale build artifacts
run: rm -rf build/*.o build/*.h
@@ -73,31 +80,98 @@ jobs:
CC=gcc CXX=g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE make OPT="-fno-keep-inline-dllexport -march=nocona -msahf -mtune=generic -Wa,-mbig-obj -O2" libleveldb.a libmemenv.a
- name: Run qmake
run: |
qmake triangles-qt.pro "RELEASE=1"
run: qmake triangles-qt.pro "RELEASE=1"
- name: Build
run: |
make -j$(nproc)
run: make -j$(nproc)
- name: Package
run: |
mkdir -p dist
cp release/triangles-qt.exe dist/
windeployqt dist/triangles-qt.exe || true
# Copy runtime DLLs
# Copy ALL runtime DLLs the binary needs
# MinGW runtime
for dll in libgcc_s_seh-1.dll libstdc++-6.dll libwinpthread-1.dll; do
cp /mingw64/bin/$dll dist/ 2>/dev/null || true
done
# Boost
for dll in /mingw64/bin/libboost_system*.dll /mingw64/bin/libboost_filesystem*.dll \
/mingw64/bin/libboost_thread*.dll /mingw64/bin/libboost_program_options*.dll \
/mingw64/bin/libboost_chrono*.dll; do
cp $dll dist/ 2>/dev/null || true
done
# OpenSSL
for dll in /mingw64/bin/libssl*.dll /mingw64/bin/libcrypto*.dll; do
cp $dll dist/ 2>/dev/null || true
done
# BerkeleyDB, libevent, miniupnpc, zlib
for dll in /mingw64/bin/libdb*.dll /mingw64/bin/libevent*.dll \
/mingw64/bin/libminiupnpc*.dll /mingw64/bin/zlib1.dll; do
cp $dll dist/ 2>/dev/null || true
done
- name: Strip binary
run: strip --strip-all dist/triangles-qt.exe
# Catch anything we missed: scan ldd output for /mingw64 deps
ldd dist/triangles-qt.exe | grep '/mingw64' | awk '{print $3}' | while read dll; do
cp "$dll" dist/ 2>/dev/null || true
done
- name: Upload artifact
# Write qt.conf so the exe finds plugins relative to itself
printf '[Paths]\nPlugins = .\n' > dist/qt.conf
# Ensure Qt platform plugins are present (windeployqt sometimes misses them in MSYS2)
if [ ! -f dist/platforms/qwindows.dll ]; then
echo "WARNING: windeployqt did not copy platform plugins, copying manually..."
mkdir -p dist/platforms
cp /mingw64/share/qt5/plugins/platforms/qwindows.dll dist/platforms/ 2>/dev/null || \
cp /mingw64/lib/qt5/plugins/platforms/qwindows.dll dist/platforms/ 2>/dev/null || \
find /mingw64 -name 'qwindows.dll' -exec cp {} dist/platforms/ \; 2>/dev/null
fi
# Also copy styles and imageformats for good measure
for plugdir in styles imageformats; do
if [ ! -d "dist/$plugdir" ]; then
srcdir=$(find /mingw64 -type d -name "$plugdir" -path "*/plugins/*" 2>/dev/null | head -1)
if [ -n "$srcdir" ]; then
cp -r "$srcdir" dist/
fi
fi
done
strip --strip-all dist/triangles-qt.exe
echo "=== dist/ contents ==="
find dist/ -type f | head -50
- name: Download Tor
shell: powershell
run: |
$TOR_VERSION = "15.0.8"
$TOR_URL = "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-windows-x86_64-${TOR_VERSION}.tar.gz"
Invoke-WebRequest -Uri $TOR_URL -OutFile tor-bundle.tar.gz
New-Item -ItemType Directory -Path tor-extract -Force
tar -xzf tor-bundle.tar.gz -C tor-extract
New-Item -ItemType Directory -Path tor-files -Force
Copy-Item tor-extract/tor/tor.exe tor-files/
Copy-Item tor-extract/tor/tor-gencert.exe tor-files/ -ErrorAction SilentlyContinue
if (Test-Path tor-extract/tor/pluggable_transports) {
Copy-Item -Recurse tor-extract/tor/pluggable_transports tor-files/
}
if (Test-Path tor-extract/data) {
Copy-Item -Recurse tor-extract/data tor-files/data
}
- name: Install NSIS via MSYS2
run: pacman -S --noconfirm mingw-w64-x86_64-nsis
- name: Build NSIS installer
run: makensis //DVERSION=$VERSION contrib/nsis/setup.nsi
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: windows-qt
path: dist/
name: windows-qt-setup
path: contrib/nsis/Cryptographic-Triangles-*-setup.exe
build-windows-daemon:
runs-on: windows-latest
@@ -133,13 +207,34 @@ jobs:
mkdir -p obj
make -f makefile.mingw DEPSDIR=/mingw64 all -j$(nproc) 2>&1
strip --strip-all trianglesd.exe
cp trianglesd.exe ../trianglesd.exe
- name: Package daemon with DLLs
run: |
mkdir -p daemon-dist/tor
cp src/trianglesd.exe daemon-dist/
# Copy all linked DLLs from MSYS2
ldd src/trianglesd.exe | grep '/mingw64' | awk '{print $3}' | while read dll; do
cp "$dll" daemon-dist/ 2>/dev/null || true
done
- name: Bundle Tor for daemon
shell: powershell
run: |
$TOR_VERSION = "15.0.8"
Invoke-WebRequest -Uri "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-windows-x86_64-${TOR_VERSION}.tar.gz" -OutFile tor-bundle.tar.gz
New-Item -ItemType Directory -Path tor-extract -Force
tar -xzf tor-bundle.tar.gz -C tor-extract
Copy-Item tor-extract/tor/tor.exe daemon-dist/tor/
if (Test-Path tor-extract/data) {
Copy-Item -Recurse tor-extract/data daemon-dist/tor/data
}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: windows-daemon
path: trianglesd.exe
path: daemon-dist/
build-linux-qt:
runs-on: ubuntu-22.04
@@ -179,14 +274,83 @@ jobs:
- name: Strip binary
run: strip --strip-all triangles-qt
- name: Rename
run: mv triangles-qt Cryptographic-Triangles-v${VERSION}-linux-x64-qt
- name: Build .deb package (fully self-contained)
run: |
TOR_VERSION="15.0.8"
curl -sL "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-linux-x86_64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz
mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract
- name: Upload artifact
PKG="cryptographic-triangles_${VERSION}_amd64"
mkdir -p ${PKG}/DEBIAN
mkdir -p ${PKG}/usr/lib/cryptographic-triangles/lib
mkdir -p ${PKG}/usr/lib/cryptographic-triangles/tor
mkdir -p ${PKG}/usr/bin
mkdir -p ${PKG}/usr/share/applications
mkdir -p ${PKG}/usr/share/pixmaps
cp triangles-qt ${PKG}/usr/lib/cryptographic-triangles/
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
# Bundle ALL shared library dependencies (except glibc/kernel)
ldd triangles-qt | grep '=> /' | awk '{print $3}' | while read lib; do
case "$lib" in
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
;; # Skip glibc core — always present
*)
cp -L "$lib" ${PKG}/usr/lib/cryptographic-triangles/lib/ 2>/dev/null || true
;;
esac
done
echo "=== Bundled libs ==="
ls ${PKG}/usr/lib/cryptographic-triangles/lib/ | wc -l
ls ${PKG}/usr/lib/cryptographic-triangles/lib/
# Launcher with LD_LIBRARY_PATH
cat > ${PKG}/usr/bin/cryptographic-triangles << 'LAUNCHER'
#!/bin/bash
INSTALL_DIR=/usr/lib/cryptographic-triangles
export LD_LIBRARY_PATH="${INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
exec "${INSTALL_DIR}/triangles-qt" "$@"
LAUNCHER
sed -i 's/^ //' ${PKG}/usr/bin/cryptographic-triangles
chmod +x ${PKG}/usr/bin/cryptographic-triangles
cat > ${PKG}/usr/share/applications/cryptographic-triangles.desktop << 'DESKTOP'
[Desktop Entry]
Name=Cryptographic Triangles
Comment=Triangles Cryptocurrency Wallet
Exec=cryptographic-triangles
Terminal=false
Type=Application
Icon=cryptographic-triangles
Categories=Finance;Network;
DESKTOP
sed -i 's/^ //' ${PKG}/usr/share/applications/cryptographic-triangles.desktop
cp src/qt/res/icons/triangles.ico ${PKG}/usr/share/pixmaps/cryptographic-triangles.ico 2>/dev/null || true
cat > ${PKG}/DEBIAN/control << CTRL
Package: cryptographic-triangles
Version: ${VERSION}
Architecture: amd64
Maintainer: Cryptographic Triangles <dev@cryptographic-triangles.org>
Description: Cryptographic Triangles wallet with integrated Tor
Fully self-contained wallet with all libraries and Tor bundled.
No external dependencies required — runs on any x86_64 Linux.
Section: finance
Priority: optional
CTRL
sed -i 's/^ //' ${PKG}/DEBIAN/control
dpkg-deb --build ${PKG}
- name: Upload .deb
uses: actions/upload-artifact@v4
with:
name: linux-qt
path: Cryptographic-Triangles-v*-linux-x64-qt
name: linux-qt-deb
path: cryptographic-triangles_*_amd64.deb
build-linux-daemon:
runs-on: ubuntu-22.04
@@ -222,14 +386,97 @@ jobs:
- name: Strip binary
run: strip --strip-all src/trianglesd
- name: Rename
run: mv src/trianglesd Cryptographic-Triangles-v${VERSION}-linux-x64-daemon
- name: Build .deb package (fully self-contained)
run: |
TOR_VERSION="15.0.8"
curl -sL "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-linux-x86_64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz
mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract
- name: Upload artifact
PKG="cryptographic-triangles-daemon_${VERSION}_amd64"
mkdir -p ${PKG}/DEBIAN
mkdir -p ${PKG}/usr/lib/cryptographic-triangles/lib
mkdir -p ${PKG}/usr/lib/cryptographic-triangles/tor
mkdir -p ${PKG}/usr/bin
mkdir -p ${PKG}/etc/systemd/system
cp src/trianglesd ${PKG}/usr/lib/cryptographic-triangles/
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
# Bundle ALL shared library dependencies (except glibc/kernel)
ldd src/trianglesd | grep '=> /' | awk '{print $3}' | while read lib; do
case "$lib" in
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
;; # Skip glibc core — always present
*)
cp -L "$lib" ${PKG}/usr/lib/cryptographic-triangles/lib/ 2>/dev/null || true
;;
esac
done
echo "=== Bundled libs ==="
ls ${PKG}/usr/lib/cryptographic-triangles/lib/ | wc -l
ls ${PKG}/usr/lib/cryptographic-triangles/lib/
# Launcher with LD_LIBRARY_PATH
cat > ${PKG}/usr/bin/trianglesd << 'LAUNCHER'
#!/bin/bash
INSTALL_DIR=/usr/lib/cryptographic-triangles
export LD_LIBRARY_PATH="${INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
exec "${INSTALL_DIR}/trianglesd" "$@"
LAUNCHER
sed -i 's/^ //' ${PKG}/usr/bin/trianglesd
chmod +x ${PKG}/usr/bin/trianglesd
cat > ${PKG}/etc/systemd/system/trianglesd.service << 'SVC'
[Unit]
Description=Cryptographic Triangles Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
Environment=LD_LIBRARY_PATH=/usr/lib/cryptographic-triangles/lib
ExecStart=/usr/lib/cryptographic-triangles/trianglesd
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
SVC
sed -i 's/^ //' ${PKG}/etc/systemd/system/trianglesd.service
cat > ${PKG}/DEBIAN/control << CTRL
Package: cryptographic-triangles-daemon
Version: ${VERSION}
Architecture: amd64
Maintainer: Cryptographic Triangles <dev@cryptographic-triangles.org>
Description: Cryptographic Triangles daemon with integrated Tor
Fully self-contained headless node with all libraries, Tor, and systemd service.
No external dependencies required — runs on any x86_64 Linux.
Section: finance
Priority: optional
CTRL
sed -i 's/^ //' ${PKG}/DEBIAN/control
cat > ${PKG}/DEBIAN/postinst << 'POST'
#!/bin/bash
systemctl daemon-reload
echo ""
echo "Cryptographic Triangles daemon installed."
echo " Start: sudo systemctl start trianglesd"
echo " On boot: sudo systemctl enable trianglesd"
echo ""
POST
chmod +x ${PKG}/DEBIAN/postinst
dpkg-deb --build ${PKG}
- name: Upload .deb
uses: actions/upload-artifact@v4
with:
name: linux-daemon
path: Cryptographic-Triangles-v*-linux-x64-daemon
name: linux-daemon-deb
path: cryptographic-triangles-daemon_*_amd64.deb
build-macos:
runs-on: macos-15
@@ -284,6 +531,43 @@ jobs:
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
macdeployqt Triangles-Qt.app -verbose=1
- name: Bundle non-Qt dylibs into app
run: |
FRAMEWORKS="Triangles-Qt.app/Contents/Frameworks"
MACOS="Triangles-Qt.app/Contents/MacOS"
BINARY="$MACOS/Triangles-Qt"
# Copy Homebrew dylibs that macdeployqt doesn't handle
for lib in boost_system boost_filesystem boost_thread boost_program_options boost_chrono; do
DYLIB=$(otool -L "$BINARY" | grep "$lib" | awk '{print $1}')
if [ -n "$DYLIB" ] && [ -f "$DYLIB" ]; then
cp "$DYLIB" "$FRAMEWORKS/"
BASENAME=$(basename "$DYLIB")
install_name_tool -change "$DYLIB" "@executable_path/../Frameworks/$BASENAME" "$BINARY"
fi
done
for lib in libssl libcrypto libevent libdb_cxx libminiupnpc libsodium; do
DYLIB=$(otool -L "$BINARY" | grep "$lib" | awk '{print $1}')
if [ -n "$DYLIB" ] && [ -f "$DYLIB" ]; then
cp "$DYLIB" "$FRAMEWORKS/"
BASENAME=$(basename "$DYLIB")
install_name_tool -change "$DYLIB" "@executable_path/../Frameworks/$BASENAME" "$BINARY"
fi
done
echo "=== Final dylib dependencies ==="
otool -L "$BINARY" | head -30
- name: Bundle Tor into app
run: |
TOR_VERSION="15.0.8"
curl -sL "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-macos-aarch64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz
mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract
mkdir -p Triangles-Qt.app/Contents/MacOS/tor
cp tor-extract/tor/tor Triangles-Qt.app/Contents/MacOS/tor/
chmod +x Triangles-Qt.app/Contents/MacOS/tor/tor
[ -d tor-extract/data ] && cp -r tor-extract/data Triangles-Qt.app/Contents/MacOS/tor/data
- name: Create DMG
run: |
mkdir -p dmg_contents
@@ -318,14 +602,15 @@ jobs:
- name: Prepare release assets
run: |
mkdir -p release
# Windows
cd artifacts/windows-qt && zip -r ../../release/Cryptographic-Triangles-${VERSION}-win-x64.zip . && cd ../..
cp artifacts/windows-qt/triangles-qt.exe release/Cryptographic-Triangles-${VERSION}-win-x64-qt.exe
cp artifacts/windows-daemon/trianglesd.exe release/Cryptographic-Triangles-${VERSION}-win-x64-daemon.exe
# Linux
cp artifacts/linux-qt/Cryptographic-Triangles-* release/
cp artifacts/linux-daemon/Cryptographic-Triangles-* release/
# macOS
# Windows Qt installer (setup.exe — includes Tor, Start Menu shortcuts, uninstaller)
cp artifacts/windows-qt-setup/*.exe release/
# Windows daemon (zip with DLLs + Tor)
cd artifacts/windows-daemon && zip -r "../../release/Cryptographic-Triangles-${VERSION}-win-x64-daemon.zip" . && cd ../..
# Linux Qt .deb (dpkg -i to install — includes Tor, desktop entry, icon)
cp artifacts/linux-qt-deb/*.deb release/
# Linux daemon .deb (dpkg -i to install — includes Tor, systemd service)
cp artifacts/linux-daemon-deb/*.deb release/
# macOS DMG (drag to Applications — Tor inside .app bundle)
cp artifacts/macos-arm64-dmg/*.dmg release/
ls -la release/
+97
View File
@@ -0,0 +1,97 @@
; Cryptographic Triangles NSIS Installer
; Produces a single setup.exe with wallet + Tor bundled
; Uses per-user install (no UAC elevation) so network drives stay visible
!include "MUI2.nsh"
!include "FileFunc.nsh"
!ifndef VERSION
!define VERSION "0.0.0"
!endif
!define APPNAME "Cryptographic Triangles"
!define COMPANYNAME "Cryptographic Triangles"
!define EXENAME "triangles-qt.exe"
Name "${APPNAME} v${VERSION}"
OutFile "Cryptographic-Triangles-${VERSION}-win-x64-setup.exe"
InstallDir "$LOCALAPPDATA\${APPNAME}"
InstallDirRegKey HKCU "Software\${APPNAME}" "InstallDir"
RequestExecutionLevel user
; UI — icons and bitmaps are relative to THIS .nsi file
!define MUI_ICON "..\..\src\qt\res\icons\triangles.ico"
!define MUI_UNICON "..\..\src\qt\res\icons\triangles.ico"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "..\..\share\pixmaps\nsis-header.bmp"
!define MUI_WELCOMEFINISHPAGE_BITMAP "..\..\share\pixmaps\nsis-wizard.bmp"
!define MUI_ABORTWARNING
!define MUI_FINISHPAGE_RUN "$INSTDIR\${EXENAME}"
!define MUI_FINISHPAGE_RUN_TEXT "Launch ${APPNAME}"
!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"
Section "Install"
SetOutPath "$INSTDIR"
; Wallet + Qt DLLs (prepared by the Package step into dist/)
File /r "..\..\dist\*.*"
; Tor binary + data (prepared by Download Tor step into tor-files/)
SetOutPath "$INSTDIR\tor"
File /r "..\..\tor-files\*.*"
; Create data directory
CreateDirectory "$APPDATA\Triangles"
; Uninstaller
WriteUninstaller "$INSTDIR\uninstall.exe"
; Start menu
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\${EXENAME}" "" "$INSTDIR\${EXENAME}" 0
CreateShortcut "$SMPROGRAMS\${APPNAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
; Desktop shortcut
CreateShortcut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXENAME}" "" "$INSTDIR\${EXENAME}" 0
; Add/Remove Programs (per-user)
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\${EXENAME}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${COMPANYNAME}"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
WriteRegStr HKCU "Software\${APPNAME}" "InstallDir" "$INSTDIR"
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" "$0"
SectionEnd
Section "Uninstall"
; Stop running processes
nsExec::ExecToLog 'taskkill /F /IM triangles-qt.exe'
nsExec::ExecToLog 'taskkill /F /IM trianglesd.exe'
nsExec::ExecToLog 'taskkill /F /IM tor.exe'
; Remove installation
RMDir /r "$INSTDIR"
; Remove shortcuts
RMDir /r "$SMPROGRAMS\${APPNAME}"
Delete "$DESKTOP\${APPNAME}.lnk"
; Remove registry
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
DeleteRegKey HKCU "Software\${APPNAME}"
SectionEnd
Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 151 KiB

+1 -1
View File
@@ -8,7 +8,7 @@
// These need to be macros, as version.cpp's and triangles-qt.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 5
#define CLIENT_VERSION_MINOR 5
#define CLIENT_VERSION_REVISION 1
#define CLIENT_VERSION_REVISION 3
#define CLIENT_VERSION_BUILD 0
// Converts the parameter X to a string after macro replacement on X has been performed.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB