Портативную упаковку — отдельным шагом (build.py python3 = Store-заглушка)
build.py зовёт `python3 generate.py`, на GUSIK-PC это Store-заглушка -> падал, хотя клиент уже собран. Теперь build.py --skip-portable-pack, установщик пакуем реальным python -> dist/rustdesk-<tag>-install.exe. Стоковый flutter 3.24.5 engine собрал Windows без кастомной подмены. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+11
-4
@@ -59,10 +59,17 @@ RUSTC_BOOTSTRAP=1 нужен, т.к. cargo-expand требует nightly-фич,
|
||||
`generated_bridge.dart`/`.freezed.dart` нет → flutter build падает `EventToUI_Event/RustdeskImpl isn't a type`.
|
||||
Поэтому проверять надо dart-файлы, не только rust.
|
||||
|
||||
### Открытый вопрос (решить при первой сборке)
|
||||
Апстрим для Windows-x64 подменяет flutter-engine кастомным `windows-x64-release.zip` (ради Win7).
|
||||
Для таргета Win10/11, вероятно, можно оставить стоковый engine 3.24.5 и пропустить подмену — проверить,
|
||||
не падает ли `flutter build windows` без неё.
|
||||
### Грабля: portable-pack и python3-заглушка (GUSIK-PC)
|
||||
`build.py --flutter` в конце зовёт `python3 ./generate.py` для сборки портативного установщика. На
|
||||
GUSIK-PC `python3` = Microsoft Store-заглушка (реальный только `python` = 3.12) → шаг падает
|
||||
(«Python Error occurred when executing generate.py»), хотя **клиент к этому моменту уже собран** в
|
||||
`flutter/build/windows/x64/runner/Release/`. Поэтому `build-windows.ps1` зовёт `build.py --skip-portable-pack`,
|
||||
а установщик пакует отдельным шагом реальным `python generate.py` → `target/release/rustdesk-portable-packer.exe`
|
||||
→ копия в `dist/rustdesk-<tag>-install.exe`.
|
||||
|
||||
### Разрешённый вопрос: flutter-engine
|
||||
Стоковый Flutter 3.24.5 x64 engine отработал — `flutter build windows` собрался БЕЗ кастомного
|
||||
`windows-x64-release.zip` (тот нужен апстриму только для Win7). Для Win10/11 подмена не требуется.
|
||||
|
||||
## Android toolchain (VM 118, позже)
|
||||
Flutter 3.24.5, NDK r28c, cargo-ndk 3.1.2, Rust android-таргеты, vcpkg android-триплеты
|
||||
|
||||
@@ -127,18 +127,30 @@ Push-Location $src
|
||||
if ($LASTEXITCODE) { Pop-Location; throw "vcpkg install упал ($LASTEXITCODE)" }
|
||||
Pop-Location
|
||||
|
||||
# --- сборка ---
|
||||
Write-Host "python build.py --flutter..." -ForegroundColor Cyan
|
||||
# --- сборка клиента (без портативной упаковки: её build.py делает через `python3`,
|
||||
# а на GUSIK-PC python3 = Store-заглушка -> падает; пакуем отдельно реальным python) ---
|
||||
Write-Host "python build.py --flutter --skip-portable-pack..." -ForegroundColor Cyan
|
||||
Push-Location $src
|
||||
python build.py --flutter
|
||||
python build.py --flutter --skip-portable-pack
|
||||
$rc = $LASTEXITCODE
|
||||
Pop-Location
|
||||
if ($rc) { throw "build.py упал ($rc)" }
|
||||
$rel = 'flutter/build/windows/x64/runner/Release'
|
||||
if (-not (Test-Path "$src/$rel/rustdesk.exe")) { throw "клиент не собран: нет $rel/rustdesk.exe" }
|
||||
|
||||
# --- артефакт ---
|
||||
# --- портативный установщик (generate.py реальным python) ---
|
||||
Write-Host "Упаковка портативного установщика (generate.py)..." -ForegroundColor Cyan
|
||||
Push-Location "$src\libs\portable"
|
||||
python -m pip install -q -r requirements.txt
|
||||
python generate.py -f "../../$rel/" -o . -e "../../$rel/rustdesk.exe"
|
||||
$genRc = $LASTEXITCODE
|
||||
Pop-Location
|
||||
if ($genRc) { throw "generate.py упал ($genRc)" }
|
||||
|
||||
# --- артефакт в dist ---
|
||||
New-Item -ItemType Directory -Force $dist | Out-Null
|
||||
$out = Get-ChildItem -Path $src -Filter 'rustdesk-*-install.exe' -EA SilentlyContinue | Select-Object -First 1
|
||||
if (-not $out) { $out = Get-ChildItem -Path $src -Recurse -Filter 'rustdesk*.exe' -EA SilentlyContinue |
|
||||
Where-Object { $_.FullName -match 'Release' } | Select-Object -First 1 }
|
||||
if ($out) { Copy-Item $out.FullName (Join-Path $dist $out.Name) -Force; Write-Host "ГОТОВО: $(Join-Path $dist $out.Name)" -ForegroundColor Green }
|
||||
else { Write-Host "Сборка ок, но .exe не найден — глянь $src (rustdesk-*-install.exe) и $src\flutter\build." -ForegroundColor Yellow }
|
||||
$packer = "$src\target\release\rustdesk-portable-packer.exe"
|
||||
if (-not (Test-Path $packer)) { throw "не найден rustdesk-portable-packer.exe после generate.py" }
|
||||
$outExe = Join-Path $dist "rustdesk-$TAG-install.exe"
|
||||
Copy-Item $packer $outExe -Force
|
||||
Write-Host "ГОТОВО: $outExe ($([math]::Round((Get-Item $outExe).Length/1MB,1)) MB)" -ForegroundColor Green
|
||||
|
||||
Reference in New Issue
Block a user