JJ_MKVMaker/lib/services/updater.dart

35 lines
1.2 KiB
Dart

import '../core/app_update.dart';
class UpdateException implements Exception {
final String message;
const UpdateException(this.message);
@override
String toString() => message;
}
/// 새 버전 확인 · 설치 경계
/// Windows: platform/windows/github_updater.dart (zip 받아 파일 교체 후 다시 시작)
/// Android: (이식 시) 스토어 / APK 안내
abstract class Updater {
/// 지금 실행 중인 버전 (예: 1.0.1)
Future<String> currentVersion();
/// GitHub 최신 Release (없거나 읽을 수 없으면 null)
Future<ReleaseInfo?> latest();
/// 프로그램 폴더에 쓸 수 있어 자동 설치가 가능한지 (아니면 페이지 안내)
Future<bool> canInstall();
/// zip 을 받아 SHA256 확인 후 압축을 푼 폴더 경로
Future<String> download(ReleaseInfo r, void Function(double progress) onProgress);
/// 앱이 끝나면 파일을 교체하고 새 버전을 실행하도록 예약 (호출 뒤 앱을 종료해야 함)
Future<void> scheduleInstall(String extractedDir);
/// 브라우저로 Release 페이지 열기
Future<void> openPage(ReleaseInfo r);
/// true 면 [scheduleInstall] 이 설치 화면을 열 뿐 앱을 끝낼 필요가 없다 (Android)
bool get installsInPlace => false;
}