diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml deleted file mode 100644 index 3325c16..0000000 --- a/.gitea/workflows/release.yml +++ /dev/null @@ -1,278 +0,0 @@ -# Сборка BiLauncher под Windows, Linux и macOS и публикация в Gitea Releases. -# -# push тега vX.Y.Z (или vX.Y.Z-rc1 → pre-release): -# create-release создаёт черновик релиза → три сборки прикладывают к нему файлы → -# publish добавляет SHA256SUMS.txt и снимает флаг черновика. Если какая-то сборка -# упала, релиз остаётся черновиком и пользователям не виден. -# Ручной запуск (workflow_dispatch): те же сборки, но результат — артефакты прогона, -# релиз не создаётся. -# -# Пути к Qt на раннерах задаются в их config.yaml (runner.envs): QT_ROOT — kit Qt, -# QT_TOOLS — папка Tools из Qt Online Installer (там CMake и Ninja). -# Секрет RELEASE_TOKEN — PAT с правом repository: write. - -name: release - -on: - push: - tags: ["v*"] - workflow_dispatch: - -env: - API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }} - -jobs: - create-release: - runs-on: linux - outputs: - version: ${{ steps.meta.outputs.version }} - tag: ${{ steps.meta.outputs.tag }} - release_id: ${{ steps.release.outputs.id }} - steps: - - uses: actions/checkout@v4 - - - id: meta - name: Версия из CMakeLists.txt и сверка с тегом - run: | - version=$(sed -nE 's/^project\(BiLauncher VERSION ([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' CMakeLists.txt) - [ -n "$version" ] || { echo "Не нашёл project(BiLauncher VERSION ...)"; exit 1; } - tag="" - if [ "${GITHUB_REF_TYPE}" = "tag" ]; then - tag="${GITHUB_REF_NAME}" - base="${tag#v}"; base="${base%%-*}" - if [ "$base" != "$version" ]; then - echo "Тег $tag не совпадает с версией $version в CMakeLists.txt"; exit 1 - fi - version="${tag#v}" - fi - echo "version=$version" >> "$GITHUB_OUTPUT" - echo "tag=$tag" >> "$GITHUB_OUTPUT" - echo "Версия: $version, тег: ${tag:-нет}" - - - id: release - name: Черновик релиза - if: steps.meta.outputs.tag != '' - env: - TOKEN: ${{ secrets.RELEASE_TOKEN }} - TAG: ${{ steps.meta.outputs.tag }} - run: | - # Описание релиза — раздел CHANGELOG.md для этой версии - base="${TAG#v}"; base="${base%%-*}" - notes=$(awk -v v="$base" ' - /^## \[/ { if (on) exit; if (index($0, "[" v "]")) { on=1; next } } - on' CHANGELOG.md) - prerelease=false; case "$TAG" in *-*) prerelease=true;; esac - body=$(python3 -c 'import json,sys; print(json.dumps({"tag_name":sys.argv[1],"name":"BiLauncher "+sys.argv[1],"body":sys.argv[2],"draft":True,"prerelease":sys.argv[3]=="true"}))' \ - "$TAG" "$notes" "$prerelease") - id=$(curl -fsS -X POST "$API/releases" \ - -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ - -d "$body" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])') - echo "id=$id" >> "$GITHUB_OUTPUT" - echo "Создан черновик релиза $TAG (id $id)" - - build-linux: - needs: create-release - runs-on: linux - env: - VERSION: ${{ needs.create-release.outputs.version }} - RELEASE_ID: ${{ needs.create-release.outputs.release_id }} - outputs: - sums: ${{ steps.pack.outputs.sums }} - steps: - - uses: actions/checkout@v4 - - - name: Сборка - run: | - export PATH="$QT_TOOLS/CMake/bin:$QT_TOOLS/Ninja:$PATH" - rm -rf build AppDir dist - # LIBDIR=lib: zlibreference.cpp ищет libz рядом, в ../lib/BiLauncher, - # а на Ubuntu по умолчанию был бы lib/x86_64-linux-gnu. - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH="$QT_ROOT" \ - -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib - # На ВМ 6 ГБ памяти: без ограничения 42 параллельных компилятора уходят в OOM. - cmake --build build -j 8 - cmake --install build --prefix "$PWD/AppDir/usr" - - - id: pack - name: AppImage и tar.gz - run: | - mkdir -p dist - cp AppDir/usr/share/applications/bilauncher.desktop AppDir/ - cp AppDir/usr/share/icons/hicolor/256x256/apps/bilauncher.png AppDir/ - ln -sf usr/bin/BiLauncher AppDir/AppRun - ARCH=x86_64 appimagetool --no-appstream AppDir "dist/BiLauncher-$VERSION-x86_64.AppImage" - cp -a AppDir/usr "BiLauncher-$VERSION" - tar -czf "dist/BiLauncher-$VERSION-linux-x86_64.tar.gz" "BiLauncher-$VERSION" - rm -rf "BiLauncher-$VERSION" - ls -lh dist - echo "sums=$(cd dist && sha256sum * | base64 -w0)" >> "$GITHUB_OUTPUT" - - - name: Загрузка в релиз - if: env.RELEASE_ID != '' - env: - TOKEN: ${{ secrets.RELEASE_TOKEN }} - run: | - for f in dist/*; do - curl -fsS -X POST -H "Authorization: token $TOKEN" \ - -F "attachment=@$f" "$API/releases/$RELEASE_ID/assets?name=$(basename "$f")" > /dev/null - echo "Загружен $(basename "$f")" - done - - - name: Артефакты прогона - if: env.RELEASE_ID == '' - uses: actions/upload-artifact@v4 - with: - name: linux - path: dist/ - - build-windows: - needs: create-release - runs-on: windows - env: - VERSION: ${{ needs.create-release.outputs.version }} - RELEASE_ID: ${{ needs.create-release.outputs.release_id }} - outputs: - sums: ${{ steps.build.outputs.sums }} - steps: - - uses: actions/checkout@v4 - - - id: build - name: Сборка, установщик и portable-архив - shell: powershell - run: | - $ErrorActionPreference = "Stop" - # Короткие пути: дерево WebEngine легко вылезает за MAX_PATH. - $build = "C:\r\bl-build"; $stage = "C:\r\bl-stage"; $dist = "$PWD\dist" - Remove-Item -Recurse -Force $build, $stage, $dist -ErrorAction SilentlyContinue - - $vs = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * ` - -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath - Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" - Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64" - $env:PATH = "$env:QT_TOOLS\CMake_64\bin;$env:QT_TOOLS\Ninja;$env:PATH" - - cmake -S . -B $build -G Ninja -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$env:QT_ROOT" - if ($LASTEXITCODE) { throw "cmake configure" } - cmake --build $build - if ($LASTEXITCODE) { throw "cmake build" } - cmake --install $build --prefix $stage - if ($LASTEXITCODE) { throw "cmake install" } - - New-Item -ItemType Directory -Force $dist | Out-Null - & "$env:ISCC_DIR\ISCC.exe" /Q "/DAppVersion=$env:VERSION" "/DSourceDir=$stage" "/DOutputDir=$dist" packaging\windows\BiLauncher.iss - if ($LASTEXITCODE) { throw "iscc" } - - # Portable: то же дерево, что ставит установщик, без vc_redist - # (в portable-варианте среда выполнения MSVC должна уже стоять в системе). - Remove-Item "$stage\bin\vc_redist.x64.exe" -ErrorAction SilentlyContinue - $portable = "C:\r\BiLauncher-$env:VERSION" - Remove-Item -Recurse -Force $portable -ErrorAction SilentlyContinue - Move-Item $stage $portable - tar.exe -a -c -f "$dist\BiLauncher-$env:VERSION-win64-portable.zip" -C C:\r "BiLauncher-$env:VERSION" - if ($LASTEXITCODE) { throw "zip" } - Remove-Item -Recurse -Force $portable - - Get-ChildItem $dist | Format-Table Name, Length - $sums = Get-ChildItem $dist | ForEach-Object { - "{0} {1}" -f (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower(), $_.Name } - $b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(($sums -join "`n") + "`n")) - # Не Out-File: PowerShell 5.1 пишет UTF-8 с BOM, и имя первой переменной ломается. - [IO.File]::AppendAllText($env:GITHUB_OUTPUT, "sums=$b64`n") - - - name: Загрузка в релиз - if: env.RELEASE_ID != '' - shell: powershell - env: - TOKEN: ${{ secrets.RELEASE_TOKEN }} - run: | - foreach ($f in Get-ChildItem dist) { - curl.exe -fsS -X POST -H "Authorization: token $env:TOKEN" ` - -F "attachment=@$($f.FullName)" "$env:API/releases/$env:RELEASE_ID/assets?name=$($f.Name)" | Out-Null - if ($LASTEXITCODE) { throw "Не удалось загрузить $($f.Name)" } - "Загружен $($f.Name)" - } - - - name: Артефакты прогона - if: env.RELEASE_ID == '' - uses: actions/upload-artifact@v4 - with: - name: windows - path: dist/ - - build-macos: - needs: create-release - runs-on: macos - env: - VERSION: ${{ needs.create-release.outputs.version }} - RELEASE_ID: ${{ needs.create-release.outputs.release_id }} - outputs: - sums: ${{ steps.pack.outputs.sums }} - steps: - - uses: actions/checkout@v4 - - - name: Сборка (universal, arm64 + x86_64) - run: | - export PATH="$QT_TOOLS/CMake/CMake.app/Contents/bin:$QT_TOOLS/Ninja:$PATH" - rm -rf build stage dist dmgroot - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH="$QT_ROOT" \ - -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" - cmake --build build - cmake --install build --prefix "$PWD/stage" - - - id: pack - name: Ad-hoc подпись и DMG - run: | - # Без Developer ID: ad-hoc подпись нужна, чтобы приложение вообще - # запускалось на Apple Silicon; Gatekeeper всё равно спросит подтверждение. - codesign --force --deep --sign - stage/BiLauncher.app - codesign --verify --deep --strict stage/BiLauncher.app - mkdir -p dmgroot dist - cp -R stage/BiLauncher.app dmgroot/ - ln -s /Applications dmgroot/Applications - hdiutil create -volname "BiLauncher" -srcfolder dmgroot -ov -format UDZO \ - "dist/BiLauncher-$VERSION-macOS-universal.dmg" - rm -rf dmgroot - ls -lh dist - echo "sums=$(cd dist && shasum -a 256 * | base64 | tr -d '\n')" >> "$GITHUB_OUTPUT" - - - name: Загрузка в релиз - if: env.RELEASE_ID != '' - env: - TOKEN: ${{ secrets.RELEASE_TOKEN }} - run: | - for f in dist/*; do - curl -fsS -X POST -H "Authorization: token $TOKEN" \ - -F "attachment=@$f" "$API/releases/$RELEASE_ID/assets?name=$(basename "$f")" > /dev/null - echo "Загружен $(basename "$f")" - done - - - name: Артефакты прогона - if: env.RELEASE_ID == '' - uses: actions/upload-artifact@v4 - with: - name: macos - path: dist/ - - publish: - needs: [create-release, build-linux, build-windows, build-macos] - if: needs.create-release.outputs.release_id != '' - runs-on: linux - env: - RELEASE_ID: ${{ needs.create-release.outputs.release_id }} - TOKEN: ${{ secrets.RELEASE_TOKEN }} - steps: - - name: SHA256SUMS.txt и публикация - run: | - { - echo "${{ needs.build-windows.outputs.sums }}" | base64 -d - echo "${{ needs.build-linux.outputs.sums }}" | base64 -d - echo "${{ needs.build-macos.outputs.sums }}" | base64 -d - } | tr -d '\r' | sed '/^$/d' > SHA256SUMS.txt - cat SHA256SUMS.txt - curl -fsS -X POST -H "Authorization: token $TOKEN" \ - -F "attachment=@SHA256SUMS.txt" "$API/releases/$RELEASE_ID/assets?name=SHA256SUMS.txt" > /dev/null - curl -fsS -X PATCH -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ - -d '{"draft": false}' "$API/releases/$RELEASE_ID" > /dev/null - echo "Релиз опубликован" diff --git a/CMakeLists.txt b/CMakeLists.txt index d0fdea7..bc3eee2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,12 +70,8 @@ qt_add_resources(BiLauncher "appicon" icons/icon_512x512@2x.png ) -# OUTPUT_DIRECTORY: по умолчанию модуль с URI BiLauncher кладёт qmldir в -# ${CMAKE_BINARY_DIR}/BiLauncher — на Linux это имя занято самим исполняемым -# файлом (у него нет расширения), и линковка падает с «Is a directory». qt_add_qml_module(BiLauncher URI BiLauncher - OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/qml/BiLauncher" SOURCES localization.h localization.cpp @@ -131,9 +127,12 @@ qt_add_qml_module(BiLauncher ${LAUNCHER_MSA_QML_FILES} RESOURCES images/Folder/Folder_Active.svg images/Folder/Folder_Idle.svg images/Folder/Folder_Pressed.svg images/Options/Options_active.svg images/Options/Options_Idle.svg images/Options/Options_Pressed.svg images/Play_Button/Play_Active.svg images/Play_Button/Play_Idle.svg images/Play_Button/Play_pressed.svg images/Profile_Box/Asset_23.jpg images/Profile_Box/Asset_23.svg images/Profile_Box/Asset_24.jpg images/Profile_Box/Asset_24.svg images/Profile_Box/Kishka_Profile_Active.svg images/Profile_Box/Kishka_Profile_Idle.svg images/Profile_Box/Kishka_Profile_open.svg images/Scroll/Scroll_Lever.svg images/Scroll/Scroll_palka.svg images/Version_box/Kishka_Profile_Open.svg images/Version_box/Kishka_Ver_Active.svg images/Version_box/Kishka_Ver_idle.svg images/Trash.svg images/Pencil.svg images/GovuztTW8AAHqBf.jpeg images/photo_2025-12-16_15-04-17.jpg images/photo_2025-12-21_02-30-09.jpg i18n/translations.json RESOURCES images/launcherBackground.png - RESOURCES images/launcherBackground2static.jpg + RESOURCES images/launcherBackground2.mp4 images/launcherBackground2static.jpg RESOURCES CHANGELOG.md RESOURCES LICENSE + RESOURCES icons/icon.rc + RESOURCES icons/icon.rc.in + RESOURCES icons/icon.rc RESOURCES README.md ) diff --git a/ci/setup-runner-linux.sh b/ci/setup-runner-linux.sh deleted file mode 100755 index 43c2133..0000000 --- a/ci/setup-runner-linux.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash -# Подготовка Linux-раннера Gitea Actions для сборки BiLauncher (Ubuntu 22.04). -# -# Qt (~/Qt/6.11.1/gcc_64 с WebEngine), CMake и Ninja (~/Qt/Tools) ставятся заранее -# через Qt Online Installer — скрипт их не трогает, а докачивает только то, чего Qt -# не даёт: компилятор, системные библиотеки для сборки и деплоя, Node.js (для -# actions/checkout), appimagetool и сам gitea-runner. Повторный запуск безопасен. -# -# Запуск от пользователя, которому принадлежит Qt (нужен sudo без пароля): -# ./setup-runner-linux.sh [токен регистрации] -set -euo pipefail - -TOKEN="${1:-}" -INSTANCE="${INSTANCE:-https://projects-live.galeonworx.com}" -RUNNER_NAME="${RUNNER_NAME:-linux-vm}" -RUNNER_VERSION="${RUNNER_VERSION:-4.1.0}" -QT_ROOT="${QT_ROOT:-$HOME/Qt/6.11.1/gcc_64}" -QT_TOOLS="${QT_TOOLS:-$HOME/Qt/Tools}" -RDIR="$HOME/act_runner" - -[ -d "$QT_ROOT/lib/cmake/Qt6WebEngineQuick" ] || { echo "Нет Qt с WebEngine в $QT_ROOT" >&2; exit 1; } - -# --- Компилятор и библиотеки --------------------------------------------------- -# libgl1-mesa-dev — заголовки OpenGL для Qt6::Gui; xcb-* и прочие — то, что -# Linux-деплой Qt и плагин xcb ищут при упаковке и запуске; libfuse2 — для -# запуска самого appimagetool (он тоже AppImage). -sudo apt-get update -q -sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ - build-essential patchelf file curl git xz-utils \ - libgl1-mesa-dev libfuse2 libfontconfig1 libdbus-1-3 \ - libxkbcommon-x11-0 libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \ - libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 libxcb-xkb1 \ - libnss3 libxcomposite1 libxdamage1 libxrandr2 libxtst6 libxkbfile1 libxshmfence1 libasound2 - -# --- Node.js LTS --------------------------------------------------------------- -if ! command -v node >/dev/null; then - NODE_VER=$(curl -fsSL https://nodejs.org/dist/index.json \ - | python3 -c 'import json,sys; print(next(r["version"] for r in json.load(sys.stdin) if r["lts"]))') - curl -fsSL "https://nodejs.org/dist/$NODE_VER/node-$NODE_VER-linux-x64.tar.xz" -o /tmp/node.tar.xz - sudo rm -rf /opt/node && sudo mkdir -p /opt/node - sudo tar -xJf /tmp/node.tar.xz -C /opt/node --strip-components=1 - sudo ln -sf /opt/node/bin/node /opt/node/bin/npm /opt/node/bin/npx /usr/local/bin/ -fi - -# --- appimagetool ---------------------------------------------------------------- -if ! command -v appimagetool >/dev/null; then - sudo curl -fsSL -o /usr/local/bin/appimagetool \ - https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage - sudo chmod +x /usr/local/bin/appimagetool -fi - -# --- gitea-runner ------------------------------------------------------------------ -mkdir -p "$RDIR/work" -if [ ! -x "$RDIR/gitea-runner" ]; then - curl -fsSL -o "$RDIR/gitea-runner" \ - "https://gitea.com/gitea/runner/releases/download/v$RUNNER_VERSION/gitea-runner-$RUNNER_VERSION-linux-amd64" - chmod +x "$RDIR/gitea-runner" -fi - -cat > "$RDIR/config.yaml" </dev/null <] - -param( - [string]$Token = "", - [string]$Instance = "https://projects-live.galeonworx.com", - [string]$RunnerName = "win-vm", - [string]$RunnerVersion = "4.1.0", - [string]$QtRoot = "C:\Qt\6.11.1\msvc2022_64", - [string]$QtTools = "C:\Qt\Tools" -) - -$ErrorActionPreference = "Stop" -$ProgressPreference = "SilentlyContinue" # иначе Invoke-WebRequest падает без консоли (по SSH) -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - -$dl = "C:\ci-downloads" -New-Item -ItemType Directory -Force -Path $dl | Out-Null - -function Fetch($url, $name) { - $out = Join-Path $dl $name - if (-not (Test-Path $out)) { - Write-Host "Скачиваю $url" - Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $out - } - return $out -} - -function Run($exe, $argList) { - $p = Start-Process -FilePath $exe -ArgumentList $argList -Wait -PassThru -NoNewWindow - # 3010 — «успешно, нужна перезагрузка» у установщиков MSI и VS - if ($p.ExitCode -ne 0 -and $p.ExitCode -ne 3010) { throw "$exe завершился с кодом $($p.ExitCode)" } -} - -# --- Visual Studio 2022 Build Tools (MSVC x64 + Windows SDK) ----------------- -$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -$haveMsvc = (Test-Path $vswhere) -and - (& $vswhere -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath) -if (-not $haveMsvc) { - $vs = Fetch "https://aka.ms/vs/17/release/vs_BuildTools.exe" "vs_BuildTools.exe" - Write-Host "Ставлю VS 2022 Build Tools (20–40 минут)…" - Run $vs @("--quiet", "--wait", "--norestart", "--nocache", - "--add", "Microsoft.VisualStudio.Workload.VCTools", "--includeRecommended") -} else { Write-Host "MSVC уже установлен" } - -# --- Git for Windows ----------------------------------------------------------- -if (-not (Test-Path "C:\Program Files\Git\cmd\git.exe")) { - $rel = Invoke-RestMethod "https://api.github.com/repos/git-for-windows/git/releases/latest" - $asset = $rel.assets | Where-Object { $_.name -match '^Git-.*-64-bit\.exe$' } | Select-Object -First 1 - $git = Fetch $asset.browser_download_url $asset.name - Run $git @("/VERYSILENT", "/NORESTART", "/NOCANCEL", "/SP-", "/COMPONENTS=gitlfs") -} else { Write-Host "Git уже установлен" } - -# --- Node.js LTS (нужен JS-экшенам вроде actions/checkout) --------------------- -if (-not (Test-Path "C:\Program Files\nodejs\node.exe")) { - # Скобки вокруг Invoke-RestMethod обязательны: PowerShell 5.1 иначе отдаёт - # JSON-массив в конвейер одним объектом, и фильтр видит все версии сразу. - $lts = ((Invoke-RestMethod "https://nodejs.org/dist/index.json") | Where-Object { $_.lts } | Select-Object -First 1).version - $msi = Fetch "https://nodejs.org/dist/$lts/node-$lts-x64.msi" "node-$lts-x64.msi" - Run "msiexec.exe" @("/i", "`"$msi`"", "/qn", "/norestart") -} else { Write-Host "Node.js уже установлен" } - -# --- Inno Setup ---------------------------------------------------------------- -$iscc = Get-ChildItem "C:\Program Files*\Inno Setup*\ISCC.exe" -ErrorAction SilentlyContinue | Select-Object -First 1 -if (-not $iscc) { - # jrsoftware.org/download.php без браузера отдаёт HTML — берём файл из релизов на GitHub - $rel = Invoke-RestMethod "https://api.github.com/repos/jrsoftware/issrc/releases/latest" - $asset = $rel.assets | Where-Object { $_.name -match '^innosetup-[\d.]+(-x64)?\.exe$' } | - Sort-Object { $_.name -notmatch '-x64' } | Select-Object -First 1 - $is = Fetch $asset.browser_download_url $asset.name - Run $is @("/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART", "/ALLUSERS") - $iscc = Get-ChildItem "C:\Program Files*\Inno Setup*\ISCC.exe" | Select-Object -First 1 -} else { Write-Host "Inno Setup уже установлен" } - -# --- Длинные пути: дерево WebEngine легко вылезает за 260 символов -------------- -Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1 -& "C:\Program Files\Git\cmd\git.exe" config --system core.longpaths true - -# --- gitea-runner ---------------------------------------------------------------- -$rdir = "C:\act_runner" -New-Item -ItemType Directory -Force -Path $rdir, "C:\r" | Out-Null -$exe = Join-Path $rdir "gitea-runner.exe" -if (-not (Test-Path $exe)) { - $src = Fetch "https://gitea.com/gitea/runner/releases/download/v$RunnerVersion/gitea-runner-$RunnerVersion-windows-amd64.exe" "gitea-runner-$RunnerVersion.exe" - Copy-Item $src $exe -} - -# Конфиг: host-режим, рабочая папка с коротким путём, пути к Qt через env. -$isccDir = Split-Path $iscc.FullName -$cfg = @" -log: - level: info -runner: - file: $($rdir -replace '\\','/')/.runner - capacity: 1 - timeout: 3h - fetch_timeout: 5s - fetch_interval: 2s - envs: - QT_ROOT: '$QtRoot' - QT_TOOLS: '$QtTools' - ISCC_DIR: '$isccDir' - labels: - - "windows:host" -cache: - enabled: false -host: - workdir_parent: C:/r -"@ -Set-Content -Path (Join-Path $rdir "config.yaml") -Value $cfg -Encoding UTF8 - -if ($Token -and -not (Test-Path (Join-Path $rdir ".runner"))) { - Push-Location $rdir - & $exe register --no-interactive --instance $Instance --token $Token ` - --name $RunnerName --labels "windows:host" --config config.yaml - if ($LASTEXITCODE -ne 0) { throw "Регистрация раннера не удалась" } - Pop-Location -} - -# Обёртка запуска: PATH дополняется git и node — задача планировщика может -# стартовать раньше, чем сессия получит обновлённый системный PATH. -$cmd = @" -@echo off -set PATH=C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files\nodejs;%PATH% -cd /d $rdir -gitea-runner.exe daemon --config config.yaml >> runner.log 2>&1 -"@ -Set-Content -Path (Join-Path $rdir "run-runner.cmd") -Value $cmd -Encoding ASCII - -# Автозапуск при входе galeon: так задаче не нужен пароль учётной записи. -# Чтобы раннер поднимался и без входа, пересоздайте задачу с /sc onstart /rp *. -schtasks /create /f /tn "Gitea Runner" /sc onlogon /ru $env:USERNAME /it /rl highest ` - /tr "powershell.exe -WindowStyle Hidden -NoProfile -Command $rdir\run-runner.cmd" | Out-Null -if (-not (Get-Process gitea-runner -ErrorAction SilentlyContinue)) { schtasks /run /tn "Gitea Runner" | Out-Null } - -Write-Host "Готово. MSVC, git, node, Inno Setup и gitea-runner на месте." diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000..f61d26f Binary files /dev/null and b/doc/.DS_Store differ diff --git a/icons/icon.rc b/icons/icon.rc new file mode 100644 index 0000000..14d43bd --- /dev/null +++ b/icons/icon.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON "icon.ico" \ No newline at end of file diff --git a/packaging/THIRD_PARTY_LICENSES.txt b/packaging/THIRD_PARTY_LICENSES.txt deleted file mode 100644 index 095b223..0000000 --- a/packaging/THIRD_PARTY_LICENSES.txt +++ /dev/null @@ -1,61 +0,0 @@ -BiLauncher — сторонние компоненты и их лицензии -================================================ - -Сам BiLauncher распространяется по Apache License 2.0 (см. файл LICENSE). -В дистрибутив входят следующие сторонние компоненты. - - -1. Qt 6.11 (The Qt Company Ltd.) --------------------------------- -Модули: Qt Core, Gui, Network, Qml, Quick, Quick Controls 2, Svg, WebEngine, -WebChannel, Positioning и их плагины. - -Используются по лицензии GNU Lesser General Public License v3 (LGPLv3). -Библиотеки Qt подключены динамически и лежат в дистрибутиве отдельными файлами: -пользователь вправе заменить их своей сборкой Qt той же версии. - - Текст LGPLv3: https://www.gnu.org/licenses/lgpl-3.0.html - Исходный код Qt: https://download.qt.io/official_releases/qt/6.11/ - https://code.qt.io/cgit/qt/ - Сведения о лицензиях: https://doc.qt.io/qt-6/licensing.html - - -2. Qt WebEngine / Chromium --------------------------- -Qt WebEngine основан на проекте Chromium и включает множество сторонних -библиотек под лицензиями BSD, MIT, LGPL, MPL и другими. Полный перечень: - - https://doc.qt.io/qt-6/qtwebengine-licensing.html - -Исходный код Qt WebEngine: https://code.qt.io/cgit/qt/qtwebengine.git/ - - -3. zlib 1.3.1 (только сборка для Linux) ---------------------------------------- -Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -Jean-loup Gailly Mark Adler -jloup@gzip.org madler@alumni.caltech.edu - - -4. Inno Setup (только установщик для Windows) ---------------------------------------------- -Установщик для Windows собран с помощью Inno Setup. -Copyright (C) 1997-2026 Jordan Russell, Martijn Laan. https://jrsoftware.org/ -Лицензия: https://jrsoftware.org/files/is/license.txt diff --git a/packaging/windows/BiLauncher.iss b/packaging/windows/BiLauncher.iss deleted file mode 100644 index 6a1f83f..0000000 --- a/packaging/windows/BiLauncher.iss +++ /dev/null @@ -1,65 +0,0 @@ -; Установщик BiLauncher для Windows (Inno Setup 6). -; -; Собирается в CI после `cmake --install`: -; iscc /DAppVersion=1.0.0 /DSourceDir=C:\...\stage /DOutputDir=C:\...\dist packaging\windows\BiLauncher.iss -; SourceDir — префикс установки: bin\ с BiLauncher.exe и развёрнутым windeployqt Qt, -; share\doc\BiLauncher\ с лицензиями. - -#ifndef AppVersion - #error Передайте версию: /DAppVersion=X.Y.Z -#endif -#ifndef SourceDir - #error Передайте префикс установки: /DSourceDir=... -#endif -#ifndef OutputDir - #define OutputDir "." -#endif - -[Setup] -; AppId не менять между версиями — по нему обновление находит прежнюю установку. -AppId={{6E0B5C1D-8F2A-4C7E-9B3D-2A1F4E5C7B90} -AppName=BiLauncher -AppVersion={#AppVersion} -AppVerName=BiLauncher {#AppVersion} -AppPublisher=GaleonDev -AppPublisherURL=https://projects-live.galeonworx.com/galeon/BiLauncher -AppSupportURL=https://projects-live.galeonworx.com/galeon/BiLauncher/issues -VersionInfoVersion={#AppVersion} -DefaultDirName={autopf}\BiLauncher -DefaultGroupName=BiLauncher -DisableProgramGroupPage=yes -LicenseFile={#SourceDir}\share\doc\BiLauncher\LICENSE -OutputDir={#OutputDir} -OutputBaseFilename=BiLauncher-{#AppVersion}-win64-setup -SetupIconFile=..\..\icons\icon.ico -UninstallDisplayIcon={app}\bin\BiLauncher.exe -Compression=lzma2/ultra64 -SolidCompression=yes -LZMANumBlockThreads=4 -ArchitecturesAllowed=x64compatible -ArchitecturesInstallIn64BitMode=x64compatible -PrivilegesRequiredOverridesAllowed=dialog -WizardStyle=modern - -[Languages] -Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}" - -[Files] -Source: "{#SourceDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: "vc_redist.x64.exe" -#ifexist SourceDir + "\bin\vc_redist.x64.exe" -Source: "{#SourceDir}\bin\vc_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall -#endif - -[Icons] -Name: "{autoprograms}\BiLauncher"; Filename: "{app}\bin\BiLauncher.exe" -Name: "{autodesktop}\BiLauncher"; Filename: "{app}\bin\BiLauncher.exe"; Tasks: desktopicon - -[Run] -#ifexist SourceDir + "\bin\vc_redist.x64.exe" -Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/install /quiet /norestart"; StatusMsg: "Установка Microsoft Visual C++ Runtime..."; Flags: waituntilterminated -#endif -Filename: "{app}\bin\BiLauncher.exe"; Description: "{cm:LaunchProgram,BiLauncher}"; Flags: nowait postinstall skipifsilent diff --git a/zlibreference.cpp b/zlibreference.cpp index aec7415..3ed15f2 100644 --- a/zlibreference.cpp +++ b/zlibreference.cpp @@ -1,7 +1,6 @@ #include "zlibreference.h" #include "localization.h" -#include #include #include #include