Files
MBN_STOCK_WEBVIEW/docs/LEGACY_RUNTIME_ASSETS.md

7.2 KiB

원본 Cuts/Res 런타임 배치

기준 원본

원본 저장소는 읽기 전용이며 다음 개발 출력만 런타임 자산 기준으로 사용한다.

C:\Users\MD\source\repos\MBN_STOCK_N\MBN_STOCK_N\bin\Debug
├─ Cuts
└─ Res

Visual Studio가 시작하는 프로젝트는 src\MBN_STOCK_WEBVIEW.LegacyParityApp\MBN_STOCK_WEBVIEW.LegacyParityApp.csproj다. 이 프로젝트는 원본 경로가 존재하는 전체 빌드에서도 Cuts를 저장소나 빌드 출력으로 복제하지 않고 선택한 원래 폴더를 직접 사용한다. 실행 파일 옆에는 UI용 Res allowlist와 Web 자산만 배치한다.

MBN_STOCK_WEBVIEW.LegacyParityApp.exe
Res\...
Web\...

소스 전용 빌드와 전체 자산 빌드

기본 LegacyRuntimeAssetsModeAuto다.

  • 첫 실행 창이 선택한 두 경로를 저장하고 만든 Git 제외 Directory.Build.local.props가 있으면, 그 공통 부모 아래의 원래 CutsRes 경로를 직접 사용한다.
  • 새 Git clone의 Debug/F5는 주변의 과거 원본 경로를 자동 선택하지 않고 소스 전용 첫 실행 설정 앱을 만든다.
  • 원본 경로를 명시하거나 Release MSIX를 만들면 기본값이 Required로 바뀌어 누락 자산을 다시 오류로 차단한다.

소스 전용 앱은 메인 송출 화면 대신 CutsRes 두 폴더만 받는 네이티브 첫 실행 창을 표시한다. 이 프로세스는 DB를 초기화하지 않고 과거 로컬 송출 프로필, 운영자 송출·배경 경로, 프로세스 환경 override와 Development Live 실행 인수를 사용하지 않으며 안전한 DryRun을 강제한다. 설정이 성공하면 창을 닫고 Visual Studio에서 F5를 한 번 더 눌러 전체 자산 빌드를 시작한다. 출력과 중간 패키징 파일은 이전 전체 빌드의 자산이나 MmoneyCoder.ini를 재사용하지 않도록 다음 별도 경로에 생성된다.

첫 실행 화면은 선택한 두 폴더의 고정 로컬 경로와 Cuts/Res 이름·공통 부모만 확인한다. 폴더 내부 파일을 열거·파싱·복사하지 않고 PowerShell, 빌드, DB, K3D 또는 Live 설정도 실행하지 않는다. DB overlay와 Development Live 준비가 필요한 경우에만 Initialize-ExistingDevelopmentPc.ps1을 별도 수동 절차로 사용한다.

src\MBN_STOCK_WEBVIEW.LegacyParityApp\bin\SourceOnly\...
src\MBN_STOCK_WEBVIEW.LegacyParityApp\obj\SourceOnly\...

원본 경로가 다른 장비에서 전체 기능을 빌드하려면 다음 속성으로 bin\Debug 위치를 지정한다. 명시한 경로는 자동으로 Required 취급된다.

/p:LegacyRuntimeSourceRoot="D:\path\to\MBN_STOCK_N\MBN_STOCK_N\bin\Debug"

CutsRes 폴더 또는 주요 UI INI가 없으면 전체 빌드는 원인을 표시하고 중단한다. 특정 장면·영상 파일은 빌드나 첫 실행에서 전부 요구하지 않고 실제 사용 시에만 개별 확인한다. 경로 탐색이나 CI에서 소스 전용 동작을 명시적으로 확인할 때만 다음 조합을 사용할 수 있다. 이는 전체 기능 또는 배포 승인용 빌드가 아니다.

/p:LegacyRuntimeAssetsMode=Auto

Git에는 Cuts, DB 자격증명, 벤더 DLL, 라이선스, 인증서 또는 로컬 구성을 추가하지 않는다.

Cuts

Cuts의 전체 파일과 하위 구조는 출력·게시·MSIX에 복사하지 않는다. 첫 실행 또는 사용자 설정 메뉴에서 선택한 고정 로컬 경로를 sceneDirectory로 저장하고, 앱은 그 원래 폴더에서 필요한 장면과 영상만 읽는다. 전체 파일 열거, ZIP 생성, 크기·해시 검사는 하지 않는다.

따라서 아래처럼 일부 외부 영상이 없어도 경로 설정과 앱 시작은 정상 완료된다.

  • s5006Video\큐브배경.vrv
  • s6001의 국가별 Video\20201008_<국가>.vrv 13개
  • 원본 코드가 참조하는 일부 기본/스튜디오 .vrv 배경

해당 장면을 실제로 선택하거나 송출할 때에만 필요한 파일을 안전하게 확인하며, 없으면 그 동작에서 정확한 누락 원인을 표시한다. 다른 장면이나 설정까지 막지는 않는다.

사용자 설정 메뉴

좌측 메뉴 하단의 설정에서는 네이티브 폴더 선택 창으로 디자인(Cuts) 폴더, 설정(Res) 폴더와 선택 사항인 운영 배경 폴더를 직접 지정할 수 있다. 선택한 고정 로컬 경로와 Res 폴더 자체만 확인한 뒤 다음 앱 전용 파일에 저장한다. 폴더 내용 전체는 검사하지 않는다.

%LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Config\runtime-folders.local.json

폴더 변경과 기본값 복원은 자동 저장되지만 런타임 자산과 카탈로그에는 앱을 다시 시작한 뒤 적용된다. 같은 화면의 왼쪽 메뉴 펼쳐서 시작은 즉시 화면에 반영되고 다음 시작 상태도 위 파일에 저장된다. 절대 경로는 Web 콘텐츠에 전달하지 않는다.

이 화면은 자산 위치와 메뉴 시작 상태만 관리한다. DB 자격증명의 내용은 표시하거나 직접 편집하지 않는다. Release/default DryRun, KTAP 호스트· 포트·채널, Test/Live 게이트, scene allowlist와 벤더 해시는 보호 설정으로 유지되며 폴더를 선택해도 완화되거나 변경되지 않는다.

Res와 DB 설정

UI 이미지와 UI용 INI는 allowlist로 출력·게시·MSIX에 배치한다. 앱은 실행 시 이 파일들을 CP949 레거시 형식으로 읽고, 파일의 section/row/order를 기존의 폐쇄형 C# action catalog와 대조한 뒤 UI를 구성한다. INI가 임의의 scene/action을 새로 추가할 수는 없다.

MmoneyCoder.ini는 실제 자격증명을 포함하므로 빌드 입력, 출력, 개발 인수용 런타임 묶음과 MSIX Content에 넣지 않는다. 전체 자산 Debug 빌드도 깨끗한 개발 PC와 같은 다음 사용자 전용 로컬 overlay 또는 Config\database.local.json을 사용한다.

%LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Res\MmoneyCoder.ini

이 규칙은 endpoint가 노출되어도 무방한 테스트 개발 서버인 경우에도 같다. 첫 실행 폴더 저장은 원본 MmoneyCoder.ini를 읽거나 복사하지 않는다. 수동 Development Live 초기화에서 필요할 때만 위 사용자 전용 경로에 복사하고 현재 Windows 사용자 전용 ACL로 보호한다. DB 자격증명은 Git, Debug/Release 출력, 게시, runtime bundle과 MSIX에 포함하지 않는다.

사용자 설정 메뉴에서 별도 Res 폴더를 선택하면 앱은 경로만 저장한다. 일반 Debug/DryRun은 다음 시작부터 그 폴더의 DB 설정을 사용할 수 있지만 형식 검사는 실제 로드 시 수행한다. 파일 내용과 자격증명은 Web 화면에 노출하지 않으며 화면에서 직접 편집할 수도 없다. 단, one-shot Gate A 검증 실행에서는 이 사용자 선택을 무시하고 검증 계획에 고정된 database.local.json만 사용한다.

MmoneyCoder - 복사본.ini, .bak, .zip, afiedt.buf.txt는 런타임 소비자가 없고 과거 자격증명 또는 SQL 흔적을 담을 수 있어 어떤 출력/패키지에도 넣지 않는다. 실제 자산과 설정은 Git 추적 대상이 아니다.