feat(packaging): 설치 시 선택 외부 도구 대화형 프롬프트 + 바탕화면 바로가기 + v1.0.4.0
- Install-Everything2Everything.ps1: MSIX 설치 후 사용자에게 선택 구성요소 설치 여부를 각각 묻는다. FFmpeg(영상/오디오)·LibreOffice(HWP·DOCX→PDF)·Ghostscript(PDF 압축)를 winget으로 자동 설치 (winget 없거나 실패 시 다운로드 페이지 폴백) + 바탕화면 바로가기(AppsFolder) 생성. -NoPrompt 무인 설치. UTF-8 BOM 저장으로 PowerShell 5.1 한글 정상 인식. - Package.appxmanifest: Version 1.0.3.0 → 1.0.4.0 (리팩토링 반영 업그레이드 인식).
This commit is contained in:
parent
944187c314
commit
5050551c95
2 changed files with 83 additions and 9 deletions
|
|
@ -1,15 +1,18 @@
|
|||
#Requires -Version 5.1
|
||||
#Requires -RunAsAdministrator
|
||||
# 5대 PC에서 MSIX 사이드로드 설치 — 1회 셋업 스크립트.
|
||||
# MSIX 사이드로드 설치 — 1회 셋업 스크립트.
|
||||
# 흐름: 인증서 신뢰 → MSIX 설치 → (대화형) 선택 외부 도구 + 바탕화면 바로가기.
|
||||
# 사용법:
|
||||
# PowerShell (관리자) > .\Install-Everything2Everything.ps1 -PfxPath .\Everything2Everything-DevCert.pfx -MsixPath .\Everything2Everything.msix
|
||||
# PowerShell (관리자) > .\Install-Everything2Everything.ps1 -PfxPath .\Everything2Everything-DevCert.pfx -MsixPath .\dist\Everything2Everything-x64.msix
|
||||
# 무인 설치(프롬프트 생략): ... -NoPrompt
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)] [string]$PfxPath,
|
||||
[Parameter(Mandatory)] [string]$MsixPath,
|
||||
[securestring]$PfxPassword,
|
||||
[string]$Password = 'Everything2EverythingDev'
|
||||
[string]$Password = 'Everything2EverythingDev',
|
||||
[switch]$NoPrompt
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
|
@ -21,26 +24,97 @@ if (-not $PfxPassword) {
|
|||
$PfxPassword = ConvertTo-SecureString -String $Password -AsPlainText -Force
|
||||
}
|
||||
|
||||
Write-Host '[1/3] 인증서를 LocalMachine\TrustedPeople에 임포트…'
|
||||
Write-Host '[1/4] 인증서를 LocalMachine\TrustedPeople에 임포트…'
|
||||
$importResult = Import-PfxCertificate `
|
||||
-CertStoreLocation 'Cert:\LocalMachine\TrustedPeople' `
|
||||
-FilePath $PfxPath `
|
||||
-Password $PfxPassword
|
||||
Write-Host " Thumbprint: $($importResult.Thumbprint)"
|
||||
|
||||
Write-Host '[2/3] 인증서를 LocalMachine\Root에도 임포트 (체인 신뢰)…'
|
||||
Write-Host '[2/4] 인증서를 LocalMachine\Root에도 임포트 (체인 신뢰)…'
|
||||
Import-PfxCertificate `
|
||||
-CertStoreLocation 'Cert:\LocalMachine\Root' `
|
||||
-FilePath $PfxPath `
|
||||
-Password $PfxPassword | Out-Null
|
||||
|
||||
Write-Host '[3/3] MSIX 패키지 설치…'
|
||||
Write-Host '[3/4] MSIX 패키지 설치…'
|
||||
Add-AppxPackage -Path $MsixPath -ForceApplicationShutdown
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# [4/4] 선택 구성요소 — 외부 변환 도구 + 바탕화면 바로가기 (대화형)
|
||||
# 외부 도구는 해당 형식 변환에만 필요. 앱 설정(⚙)·Diagnose에서도 나중에 설치 안내를 받을 수 있음.
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
if (-not $NoPrompt) {
|
||||
Write-Host ''
|
||||
Write-Host '[4/4] 선택 구성요소 설치 ─ 필요한 것만 Y를 입력하세요 (없으면 Enter)'
|
||||
|
||||
$hasWinget = $null -ne (Get-Command winget -ErrorAction SilentlyContinue)
|
||||
if (-not $hasWinget) {
|
||||
Write-Host ' ⚠️ winget을 찾지 못했습니다(Windows 11 권장). 선택 시 다운로드 페이지를 대신 엽니다.'
|
||||
}
|
||||
|
||||
function Confirm-YesNo([string]$prompt) {
|
||||
$answer = Read-Host " $prompt [Y/N]"
|
||||
return ($answer -match '^\s*(y|yes|예|ㅛ)\s*$')
|
||||
}
|
||||
|
||||
function Install-Tool([string]$name, [string]$wingetId, [string]$url) {
|
||||
if ($hasWinget) {
|
||||
Write-Host " → winget으로 $name 설치 중… (수 분 걸릴 수 있습니다)"
|
||||
try {
|
||||
& winget install --id $wingetId -e --source winget `
|
||||
--accept-package-agreements --accept-source-agreements
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " ✅ $name 설치/확인 완료."
|
||||
} else {
|
||||
Write-Host " ⚠️ winget 실패(코드 $LASTEXITCODE). 수동 설치: $url"
|
||||
}
|
||||
} catch {
|
||||
Write-Host " ⚠️ winget 오류($_). 수동 설치: $url"
|
||||
}
|
||||
} else {
|
||||
Write-Host " 다운로드 페이지를 엽니다: $url"
|
||||
Start-Process $url
|
||||
}
|
||||
}
|
||||
|
||||
if (Confirm-YesNo '영상·오디오 변환용 FFmpeg를 설치하시겠습니까?') {
|
||||
Install-Tool 'FFmpeg' 'Gyan.FFmpeg' 'https://www.gyan.dev/ffmpeg/builds/'
|
||||
}
|
||||
if (Confirm-YesNo 'HWP·DOCX → PDF 변환용 LibreOffice를 설치하시겠습니까? (용량 ~350MB)') {
|
||||
Install-Tool 'LibreOffice' 'TheDocumentFoundation.LibreOffice' 'https://www.libreoffice.org/download/download/'
|
||||
}
|
||||
if (Confirm-YesNo 'PDF 고급 압축용 Ghostscript를 설치하시겠습니까?') {
|
||||
Install-Tool 'Ghostscript' 'ArtifexSoftware.GhostScript' 'https://www.ghostscript.com/releases/gsdnld.html'
|
||||
}
|
||||
|
||||
if (Confirm-YesNo '바탕화면에 바로가기를 만들겠습니까?') {
|
||||
try {
|
||||
$pkg = Get-AppxPackage -Name 'Everything2Everything.YunChan' | Select-Object -First 1
|
||||
if ($pkg) {
|
||||
$target = "shell:AppsFolder\$($pkg.PackageFamilyName)!Everything2Everything"
|
||||
$desktop = [Environment]::GetFolderPath('CommonDesktopDirectory')
|
||||
$lnkPath = Join-Path $desktop 'Everything2Everything.lnk'
|
||||
$wshell = New-Object -ComObject WScript.Shell
|
||||
$lnk = $wshell.CreateShortcut($lnkPath)
|
||||
$lnk.TargetPath = Join-Path $env:WINDIR 'explorer.exe'
|
||||
$lnk.Arguments = $target
|
||||
$lnk.Description = 'Everything2Everything — 모든 것을 모든 것으로 (양방향 변환)'
|
||||
$lnk.Save()
|
||||
Write-Host " ✅ 바탕화면 바로가기 생성: $lnkPath"
|
||||
} else {
|
||||
Write-Host ' ⚠️ 설치된 패키지를 찾지 못해 바로가기를 만들 수 없습니다.'
|
||||
}
|
||||
} catch {
|
||||
Write-Host " ⚠️ 바로가기 생성 실패: $_"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ''
|
||||
Write-Host '✅ 설치 완료. Win11 메인 우클릭 메뉴에 "Everything2Everything으로 변환" 카스케이드가 보일 겁니다.'
|
||||
Write-Host ' 서브메뉴: JPEG · PNG · WebP · PDF · TXT/DOCX(OCR) · AVIF · GIF · TIFF · BMP · 변환…'
|
||||
Write-Host ' 서브메뉴: 이미지·PDF·문서·HWP·영상·오디오·데이터·벡터 변환 (입력 형식별 추천 출력).'
|
||||
Write-Host ' (탐색기 재시작이 필요할 수 있음: 작업 관리자 → "Windows 탐색기" 다시 시작)'
|
||||
Write-Host ''
|
||||
Write-Host '⚠️ 중복 방지: Portable EXE 카스케이드를 이미 등록했다면 unregister 권장 — 메인 메뉴와 추가 옵션 메뉴에 모두 노출되는 것을 막음:'
|
||||
Write-Host '⚠️ 중복 방지: Portable EXE 카스케이드를 이미 등록했다면 unregister 권장 — 메인 메뉴와 추가 옵션 메뉴 중복 노출 방지:'
|
||||
Write-Host ' <publish 폴더>\Everything2Everything.exe unregister'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue