1
0
Fork 0

feat(tools): add first-run external tool installer wizard and catalog

첫 실행 시 외부 도구 설치 마법사를 띄우고 7종(FFmpeg·LibreOffice·Pandoc·ImageMagick·H2Orestart·agy·Codex)을 기본 전체 선택 상태로 순차 설치한다.
- Core: ExternalToolCatalog(정적 카탈로그, winget ID 실검증), ExternalToolInstaller(winget 무인 실행·재감지 판정, IExternalCommandRunner 시드로 테스트 가능)
- Core: ExternalToolDetector에 winget FFmpeg 스캔 + Pandoc/ImageMagick 감지 추가
- App: ToolSetupWindow + ToolSetupViewModel, 첫 실행 플래그(setup.tools.done), 설정 창 '외부 도구 설치/검증' 재진입 버튼
- Tests: ExternalToolInstallerTests 5건
- 기존 미커밋 작업(광고 Ads 지원: AdBannerControl/AdLargeCardControl/AdService, AI 백엔드 agy·switchboard·codex 채팅 클라이언트, 관련 테스트) 포함
This commit is contained in:
Yun Chan 2026-09-07 21:16:49 +09:00
parent f00f6567f4
commit 6a41c4a0dc
37 changed files with 2545 additions and 69 deletions

View file

@ -76,15 +76,27 @@ public partial class App : Application
private void ShowMainWindow()
{
var window = new MainWindow(Engine, Settings);
RunFirstRunSetupIfNeeded();
var adService = _services.GetService<Everything2Everything.Core.Ads.IAdService>();
var window = new MainWindow(Engine, Settings, null, adService);
MainWindow = window;
window.Show();
window.Activate();
}
/// <summary>첫 실행이면 외부 도구 설치 마법사를 한 번 띄우고 완료 플래그를 남긴다(설정 창에서 재진입 가능).</summary>
private void RunFirstRunSetupIfNeeded()
{
if (Settings.Get("setup.tools.done") == "1") return;
var wizard = new ToolSetupWindow();
wizard.ShowDialog();
Settings.Set("setup.tools.done", "1");
}
private void ShowConvertDialog(IReadOnlyList<string> files)
{
var window = new Views.MainWindow(Engine, Settings, files);
var adService = _services.GetService<Everything2Everything.Core.Ads.IAdService>();
var window = new Views.MainWindow(Engine, Settings, files, adService);
MainWindow = window;
window.Show();
window.Activate();