iPhone Установщик 0.7.6 — Windows и macOS

Windows 0.7.6 ждёт освобождения файла, если тот ненадолго снова оказался
занят после завершения старой программы. Проверка разрешения на обновление
действует во время ожидания и перед заменой файла.

Версия 0.7.5 исправляет обновление работающей Windows-программы:
отдельный установщик подтверждает готовность до выхода GUI, ожидает
завершения старых процессов и только потом заменяет файлы. Загрузка
показывает реальные байты; отмена отзывает разрешение на установку.
Windows helper обновления собирается из launcher/update_bridge.cs;
команда сборки включена в .github/workflows/installers.yml.

Версия 0.7.2 добавляет вращающиеся стрелки рядом с надписью «Обновить».
В сборке DMG выполняется sync и до трёх попыток только при Resource busy;
диагностика сохраняется. Проверки подписи и read-only DMG обязательны.

Версия 0.7.1 добавляет общую предоплату выбранной очереди, заявки на возврат
доступного остатка и явную опцию сохранения локальной web-сессии ЮMoney.
Загрузка и проверка файлов начинаются после общей оплаты; подтверждённый сбой
возвращает стоимость приложения на баланс. batch_payments.py и checkout_ui.py
включаются в оба дистрибутива. Ограничения и последовательность в README.txt.

Приложение основано на 0.6.5: USB-обнаружение, явные роли телефонов, App Store,
локальные IPA, очередь, измеренный прогресс и проверка результата сохранены.
Изменения для Mac: имя нативного модуля App Store, папка загрузок вне .app,
системный шрифт и безопасное завершение очереди через меню macOS.

Windows: в полном архиве исходников есть приватный Python runtime и Go-загрузчик.
Для сборки нужен Go 1.27.3:
runtime\python\python.exe -E -s -X utf8 launcher\build.py --source . --go go.exe --output iPhone_Installer_0_7_6.exe
Для Setup положите этот EXE в build-input/windows и соберите packaging/windows.iss
официальным Inno Setup 6. Пользователю системный Python не нужен; первый запуск
Windows-программы подготавливает закреплённые зависимости из интернета.

Mac: сборка на соответствующей архитектуре macOS, Python 3.14 и Go 1.27.3:
На Intel сначала соберите cryptography с включённым OpenSSL:
OPENSSL_STATIC=1 OPENSSL_DIR="$(brew --prefix openssl@3)" python -m pip install --no-cache-dir --no-binary=cryptography -c packaging/common-constraints.txt cryptography==50.0.2
Это требует компиляторов Rust/Xcode только на машине сборки; пользователю они не нужны.
python -m pip install -c packaging/common-constraints.txt -r requirements.txt pyinstaller==6.22.3
python -m unittest discover -s tests -v
python packaging/build_macos.py
Для пользователя Python/Go/Homebrew не нужны. Результат в release.
Скрипт проверяет исходный ZIP App Store по SHA-256, собирает модуль нативно,
комплектует .app, проверяет подпись и запускает офлайн-проверки готовой программы
и её копии с read-only DMG. Сборка ad-hoc, без Developer ID и нотариального
заверения Apple. Сертификаты Apple и чужие учётные данные в проект не включены.

Данные: Apple Account обрабатывается локально, сеанс App Store — в памяти;
IPA остаются на компьютере. Наш сервер их не получает. Ключи доверия iPhone
могут храниться системными компонентами Apple в локальном хранилище ОС.

Физические установка и запуск приложения на iPhone требуют отдельной проверки.
Сборочные и синтетические проверки сами по себе её не заменяют.

Встроенная оплата: Windows helper собирается из vendored Go-исходников:
python payment_ui/build_windows.py --go go.exe --self-test
Mac helper собирается packaging/build_macos.py из Swift/WebKit/Security.framework.
Метаданные и SHA-256 helper находятся в engine/payment-window-manifest.json.
Account/device.key (Windows) и Keychain (Mac) не включаются в дистрибутив.
Windows Setup включает официальный Microsoft WebView2 Bootstrapper: путь и
проверенная подпись/хеш — packaging/webview2-bootstrapper.json. Для самостоятельной
пересборки Setup загрузите его по указанному официальному URL и сверьте хеш.
