EverythingToJpeg(N→JPEG 단방향)에서 Everything2Everything(N×M 매트릭스)으로 앱을 피보팅. 7개 Provider, 200+ 변환 쌍 지원. 리네이밍 - 디렉토리/솔루션/csproj/namespace/AssemblyName/MSIX Identity 일괄 치환 - 임시파일 prefix e2j_ → e2e_, 로고 라벨 E2J → E2E 아키텍처 - ConversionPair(input, output) 신규 + ProviderCapability.SupportedConversions - IConverterProvider.ConvertAsync에 outputExtension 파라미터 추가 - ProviderRegistry를 Dictionary<(input, output), Provider> 매트릭스로 재작성 + OutputsForInput / OutputsForFile 쿼리 API - ConversionEngine: 출력 ext 라우팅, 동일 입출력 자동 skip, 서브폴더 suffix를 출력 ext에서 자동 도출 - ConvertOptions를 형식별 sub-record로 분리 (Jpeg/Png/Webp/Avif/Tiff/Pdf*/Html*/Ocr) Provider 매트릭스 - MagickProvider: PNG/JPEG/WebP/AVIF/BMP/TIFF/GIF/PDF 양방향 + RAW/PSD 디코딩 (단일이미지→1페이지 PDF, GIF/TIFF→다페이지 PDF) - HeicProvider: HEIC/HEIF → 이미지 7종 - PdfProvider: PDF → 이미지 6종 (PNG임베드 후 ImageMagick 인코딩) - HtmlProvider: HTML/HTM → 이미지 + PDF (CDP printToPDF) - DocxProvider/HwpxProvider: PDF + 이미지 7종 (LibreOffice 활용) - OcrProvider 신규: 이미지/PDF → TXT/DOCX (Windows.Media.Ocr + DocumentFormat.OpenXml, PDF는 페이지별 OCR 후 결합) UI - 사이드바 TARGET FORMAT을 동적 ComboBox로 (큐 파일 매트릭스의 교집합만 표시) - 출력 형식별 색상 배지 + Quality 패널 라벨 동적 - OUTPUT DESTINATION hint도 출력 ext 기반 동적 CLI - 신규 'to <ext> <files...>' verb (예: to png photo.heic doc.docx) - help 텍스트 양방향 컨셉으로 갱신 셸 통합 - ContextMenuRegistrar 카스케이드로 재설계 (ExtendedSubCommandsKey + Everything2Everything.SubMenu.<ext>) - 입력별 매트릭스에 따라 인기 출력 10종(JPEG/PNG/WebP/PDF/TXT/DOCX/AVIF/GIF/TIFF/BMP) 동적 노출, 마지막에 '변환…' 옵션 - 메뉴 라벨 'JPEG로 변환' → 'Everything2Everything으로 변환' 기타 - Core.csproj TFM net9.0-windows → net9.0-windows10.0.19041.0 (WinRT API용) - DocumentFormat.OpenXml 3.1.0 NuGet 추가 - README 양방향 매트릭스 기준 전면 개편 - MSIX appxmanifest Description / IExplorerCommand DLL 라벨 갱신 빌드: 0 errors, 0 warnings
98 lines
3.3 KiB
YAML
98 lines
3.3 KiB
YAML
name: Release
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- 'v*'
|
||
workflow_dispatch:
|
||
inputs:
|
||
tag:
|
||
description: '릴리즈 태그 (예: v0.1.0)'
|
||
required: true
|
||
|
||
permissions:
|
||
contents: write
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: windows-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Setup .NET
|
||
uses: actions/setup-dotnet@v4
|
||
with:
|
||
dotnet-version: 9.0.x
|
||
|
||
- name: Setup MSBuild
|
||
uses: microsoft/setup-msbuild@v2
|
||
|
||
- name: Generate placeholder logos
|
||
shell: pwsh
|
||
run: ./packaging/GenerateAssets.ps1
|
||
|
||
- name: Decode PFX (if secret provided)
|
||
id: pfx
|
||
shell: pwsh
|
||
env:
|
||
PFX_BASE64: ${{ secrets.PFX_BASE64 }}
|
||
run: |
|
||
if ($env:PFX_BASE64) {
|
||
$bytes = [Convert]::FromBase64String($env:PFX_BASE64)
|
||
$path = Join-Path $env:RUNNER_TEMP 'cert.pfx'
|
||
[IO.File]::WriteAllBytes($path, $bytes)
|
||
"pfx_path=$path" >> $env:GITHUB_OUTPUT
|
||
Write-Host '✅ PFX 디코딩 완료 — 서명 모드로 빌드'
|
||
} else {
|
||
Write-Host 'ℹ PFX_BASE64 secret 없음 — unsigned 모드로 빌드'
|
||
}
|
||
|
||
- name: Build MSIX (signed if PFX, else unsigned)
|
||
shell: pwsh
|
||
env:
|
||
PFX_PASSWORD: ${{ secrets.PFX_PASSWORD }}
|
||
run: |
|
||
$pfx = '${{ steps.pfx.outputs.pfx_path }}'
|
||
if ($pfx) {
|
||
$sec = ConvertTo-SecureString -String $env:PFX_PASSWORD -AsPlainText -Force
|
||
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64 -Sign -PfxPath $pfx -PfxPassword $sec
|
||
} else {
|
||
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64
|
||
}
|
||
|
||
- name: Upload artifact
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: Everything2Everything-x64-msix
|
||
path: packaging/dist/Everything2Everything-x64.msix
|
||
|
||
- name: Create GitHub Release
|
||
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
||
uses: softprops/action-gh-release@v2
|
||
with:
|
||
tag_name: ${{ github.event.inputs.tag || github.ref_name }}
|
||
files: packaging/dist/Everything2Everything-x64.msix
|
||
generate_release_notes: true
|
||
body: |
|
||
## Everything2Everything
|
||
|
||
모든 파일을 우클릭 한 번으로 JPEG 로 변환합니다.
|
||
|
||
### 설치 방법
|
||
1. 아래 `Everything2Everything-x64.msix` 다운로드.
|
||
2. 관리자 PowerShell:
|
||
```powershell
|
||
# 자체 서명 인증서를 신뢰 저장소에 등록 (PFX 별도 보유 필요)
|
||
Import-PfxCertificate -CertStoreLocation Cert:\LocalMachine\TrustedPeople `
|
||
-FilePath .\Everything2Everything-DevCert.pfx `
|
||
-Password (ConvertTo-SecureString 'Everything2EverythingDev' -AsPlainText -Force)
|
||
|
||
# MSIX 사이드로드
|
||
Add-AppxPackage -Path .\Everything2Everything-x64.msix -ForceApplicationShutdown
|
||
```
|
||
3. PNG/HEIC/PDF 등 파일 우클릭 → "JPEG로 빠른 변환" 또는 "JPEG로 변환…"
|
||
|
||
> 이 패키지는 자체 서명입니다. 첫 PC 1회만 인증서 등록이 필요합니다.
|
||
|
||
### 변경사항
|