feat: 实现 Windows 可选字体包安装链

This commit is contained in:
SkyJourney
2026-07-31 22:29:23 +08:00
parent ae9fde3ac6
commit 6f62cfebd6
14 changed files with 725 additions and 5 deletions
+49
View File
@@ -45,3 +45,52 @@ root/<pack-id>/<semver>/font-pack.json
当前 `mdtp-serif-sc@1.0.0` 只替换 `FandolSong`
`Mdpdf Fandol Song` 的 400/700 字重,不匹配 `SimSun` 等通用别名,避免
错误替换仿宋、黑体、楷体或普通外部主题字体。
## Windows 独立安装器
发布人员可以使用 electron-builder 锁定并校验的 NSIS 工具链构建独立
字体包安装器,不需要额外安装系统 NSIS:
```powershell
npm run build:font-pack:windows
```
默认产物为:
```text
output/font-packs/windows/
└── md-to-pdf-font-pack-mdtp-serif-sc-1.0.0-x86_64-Setup.exe
```
安装器使用当前用户权限,将整个 `mdtp-serif-sc` ID 安装到:
```text
%LOCALAPPDATA%/md-to-pdf/font-packs/mdtp-serif-sc/1.0.0/
```
它不向 Windows 系统字体目录注册字体。同一版本重装保持幂等,升级时先把
该 ID 的现有目录移入备份,再原子提升新版本;失败会回滚。独立卸载项只
删除安装器拥有的 `mdtp-serif-sc` ID,不影响其他字体包 ID。安装器支持
`/S` 静默安装和卸载。
## Desktop 伴随发行
组合构建命令为:
```powershell
npm run desktop:make:with-font-pack
```
该命令把主安装器和字体包安装器作为两个同目录文件发行。主安装器只编译
字体包文件名与 SHA-256,不嵌入字体二进制;仅当同目录文件存在且哈希完全
一致时,交互安装向导才显示默认勾选的字体包选项。字体包失败不回滚已安装
的主程序。
主安装器静默运行时默认不安装伴随字体包;只有显式传入以下参数才会安装:
```powershell
md-to-pdf-<version>-x86_64-Setup.exe /S /WITHFONTPACK=1
```
普通 `npm run make -w @md-to-pdf/desktop` 不启用伴随逻辑,避免本地残留的
生成文件影响常规桌面构建。