From 13c8e5f5bfa3f35e259d6e29cd4603a1d4674a7f Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Sat, 17 Oct 2026 22:06:48 +0900 Subject: [PATCH] =?UTF-8?q?WIP=20Windows=20=EC=8B=9C=ED=97=98=ED=8C=90=20?= =?UTF-8?q?=ED=8C=90=20=EB=B2=88=ED=98=B8:=20=EC=8B=9C=ED=97=98=ED=8C=90?= =?UTF-8?q?=EC=9D=80=20=EC=8B=9C=ED=97=98=20=EB=B2=88=ED=98=B8=20(--build-?= =?UTF-8?q?number=20=EB=85=84=EC=9B=94=EC=9D=BC+=EC=88=9C=EB=B2=88)=20?= =?UTF-8?q?=C2=B7=20make=5Fzip=20=EC=97=90=20=EA=B2=80=EC=82=AC=20(?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=A7=80=EC=8B=9C)=20(=EA=B2=80?= =?UTF-8?q?=ED=86=A0=20=EB=8C=80=EA=B8=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관리자 지시 (10/17): 시험판 972 의 Windows 가 FileVersion 2026.10.12+1 이라 정식 판 v2026.10.12_001 과 똑같이 보였다 (버전 기록 · 되살리기 창이 헷갈림 - 예전에 겪은 문제). Android 는 versionCode 261012972 라 v2026.10.12_972. - tool/check_windows_build.ps1: Lib\jj_mkvmaker.exe 의 ProductVersion 을 읽어 시험판인데 번호 < 1000 (정식 번호) 이면 실패, -Release 인데 시험 번호면 실패 (check_apk 와 같은 꼴). - tool/make_zip.ps1: 묶기 전에 위 검사. 정식 판 zip 은 이제 -Release 를 붙인다. - 시험판 빌드: flutter build windows --release --build-number 261012972 (APK versionCode 와 같은 번호). release\test\b6_windows_05074ec_972 를 이렇게 다시 빌드함 (예전 폴더는 그대로). Co-Authored-By: Claude Opus 5.5 --- tool/check_windows_build.ps1 | 24 ++++++++++++++++++++++++ tool/make_zip.ps1 | 7 +++++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 tool/check_windows_build.ps1 diff --git a/tool/check_windows_build.ps1 b/tool/check_windows_build.ps1 new file mode 100644 index 0000000..43d6870 --- /dev/null +++ b/tool/check_windows_build.ps1 @@ -0,0 +1,24 @@ +# Windows 빌드 판 번호 검사 (관리자 지시 10/17): 시험판이 정식 판과 같은 "v년.월.일_001" 로 보이지 않게. +# - 앱은 Lib\jj_mkvmaker.exe 의 ProductVersion ("2026.10.12+번호") 의 끝 세 자리를 순번으로 보인다 (app_update.dart formatVersion). +# - 시험판: flutter build windows --build-number <년월일 6자리><순번 3자리> (예: 261012972 → "v2026.10.12_972", APK versionCode 와 같은 번호). +# 번호가 1000 보다 작으면 (정식 판 번호, 예: +1) 실패 - 972 Windows 가 +1 로 나가 정식 판 v2026.10.12_001 과 구별되지 않았다. +# - 정식 판 (-Release): 번호가 1000 보다 작아야 한다 (시험 번호가 정식 zip 에 들어가지 않게). +# 사용: powershell -ExecutionPolicy Bypass -File tool\check_windows_build.ps1 -Dir <배포 폴더 (Lib 가 있는 곳)> [-Release] +param( + [Parameter(Mandatory = $true)][string]$Dir, + [switch]$Release +) +$ErrorActionPreference = 'Stop' +$exe = Join-Path (Resolve-Path $Dir).Path 'Lib\jj_mkvmaker.exe' +if (-not (Test-Path $exe)) { throw "앱 실행 파일이 없습니다: $exe" } +$ver = (Get-Item $exe).VersionInfo.ProductVersion +if ($ver -notmatch '^(\d+)\.(\d+)\.(\d+)\+(\d+)$') { throw "판 번호를 읽을 수 없습니다: '$ver' ($exe)" } +$build = [long]$Matches[4] +$shown = '{0}.{1:00}.{2:00}_{3:000}' -f [int]$Matches[1], [int]$Matches[2], [int]$Matches[3], ($build % 1000) +if ($Release) { + if ($build -ge 1000) { throw "정식 판인데 시험 번호입니다: $ver (화면 v$shown). --build-number 없이 (pubspec 의 +순번) 빌드하세요" } +} elseif ($build -lt 1000) { + throw ("시험판인데 정식 판 번호입니다: $ver (화면 v$shown - 정식 판과 같게 보임).`n" + + "flutter build windows --release --build-number <년월일><순번 3자리> (예: 261012972) 로 다시 빌드하세요") +} +"통과: $ver (화면 v$shown) · $(if ($Release) { '정식 판' } else { '시험판 - 정식 판 번호와 다름' })" diff --git a/tool/make_zip.ps1 b/tool/make_zip.ps1 index afea7ab..3b16f9a 100644 --- a/tool/make_zip.ps1 +++ b/tool/make_zip.ps1 @@ -1,13 +1,16 @@ # 릴리스 zip 만들기 (166): stage 폴더 (make_layout -Clean) 를 zip 으로 묶고, 목록을 검사한다. # - zip 안 경로는 '/' 로 (Windows tar). 맨 위는 stage 폴더 이름 (JJ_MKVMaker/). # - 실행 흔적 (Logs\ · *.log · crash dump · 설정 · 세션 · 비밀 저장소 · 디버그 빌드 파일) 이 들어 있으면 실패한다. -# 사용: powershell -File tool\make_zip.ps1 -Stage '<루트>\release\stage\JJ_MKVMaker' -Zip '<루트>\release\JJ_MKVMaker_v<버전>_win64.zip' +# - 판 번호 (tool\check_windows_build.ps1): 정식 판은 -Release (번호 < 1000), 아니면 시험판 (시험 번호여야 함 - 정식 판처럼 보이지 않게). +# 사용: powershell -File tool\make_zip.ps1 -Stage '<루트>\release\stage\JJ_MKVMaker' -Zip '<루트>\release\JJ_MKVMaker_v<버전>_win64.zip' [-Release] param( [Parameter(Mandatory = $true)][string]$Stage, - [Parameter(Mandatory = $true)][string]$Zip + [Parameter(Mandatory = $true)][string]$Zip, + [switch]$Release ) $ErrorActionPreference = 'Stop' $Stage = (Resolve-Path $Stage).Path +& (Join-Path $PSScriptRoot 'check_windows_build.ps1') -Dir $Stage -Release:$Release $parent = Split-Path $Stage -Parent $name = Split-Path $Stage -Leaf if (Test-Path $Zip) { Remove-Item $Zip -Force }