Skip to content

Commit ece3535

Browse files
HanFengRuYueclaude
andcommitted
fix: 修复 CI release job 组件包上传路径错误
upload-artifact@v5 会去掉公共路径前缀 Release/, 导致 release job 在 components/Release/ 下找不到文件。 修正为 components/ 直接路径。同时更新 release notes 加入 MSI 说明。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 817b5be commit ece3535

3 files changed

Lines changed: 17 additions & 12 deletions

File tree

.github/workflows/build.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -592,19 +592,22 @@ jobs:
592592
env:
593593
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
594594
run: |
595+
# upload-artifact@v5 strips common path prefix (Release/)
596+
# so files are at components/xxx, not components/Release/xxx
597+
ls -la components/
595598
gh release upload "${{ inputs.release_tag }}" \
596-
components/Release/manifest-win-x64.json \
597-
components/Release/app-win-x64.zip \
598-
components/Release/wwwroot.zip \
599-
components/Release/bundled.zip \
599+
components/manifest-win-x64.json \
600+
components/app-win-x64.zip \
601+
components/wwwroot.zip \
602+
components/bundled.zip \
600603
--clobber \
601604
--repo "${{ github.repository }}"
602605
603606
- name: Upload MSI to release
604607
env:
605608
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
606609
run: |
607-
MSI_FILE="components/Release/XUnityToolkit-WebUI-win-x64.msi"
610+
MSI_FILE="components/XUnityToolkit-WebUI-win-x64.msi"
608611
if [ -f "$MSI_FILE" ]; then
609612
gh release upload "${{ inputs.release_tag }}" "$MSI_FILE" --clobber --repo "${{ github.repository }}"
610613
fi

.github/workflows/release.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ jobs:
1616
## XUnityToolkit-WebUI ${{ github.ref_name }}
1717
1818
### Downloads
19-
| File | Platform |
20-
|------|----------|
21-
| `XUnityToolkit-WebUI-win-x64.zip` | Windows x64 |
19+
| File | Description |
20+
|------|-------------|
21+
| `XUnityToolkit-WebUI-win-x64.zip` | Portable (Windows x64) |
22+
| `XUnityToolkit-WebUI-win-x64.msi` | MSI Installer (Windows x64) |
2223
2324
### Installation
24-
Download the ZIP, extract, and run `XUnityToolkit-WebUI.exe`.
25+
- **Portable:** Download the ZIP, extract, and run `XUnityToolkit-WebUI.exe`.
26+
- **Installer:** Download the MSI and double-click to install.
2527
prerelease: false
2628
permissions:
2729
contents: write

CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ cd XUnityToolkit-Vue && npx vue-tsc --noEmit
112112
- **`RecordError` call sites:** `LlmTranslationService.RecordError` called from: internal (`TranslateAsync` early-exit), external (`TranslateEndpoints.cs` catch blocks) — signature changes must update both
113113
- **Font generation models:** Sync `CharacterSetConfig`/`FontGenerationReport`/`CharsetInfo` between `Models/FontGeneration.cs``src/api/types.ts`; phase values between `TmpFontGeneratorService``FontGeneratorView.vue` phaseLabels; charset IDs between `BuiltinCharsets` ↔ frontend checkbox values
114114
- **Font replacement models:** Sync `FontInfo`/`FontReplacementStatus` between `Models/FontReplacement.cs``src/api/types.ts``FontReplacementView.vue`
115-
- **TMP font models:** Sync `TmpFontStatus` between `Models/``src/api/types.ts`; API methods in `src/api/games.ts`
115+
- **TMP font models:** Sync `TmpFontStatus` between `Endpoints/GameEndpoints.cs``src/api/types.ts`; API methods in `src/api/games.ts`
116116
- Frontend state lifecycle: `GameDetailView.loadGame()` resets state when `isInstalled=false`
117117
- Install store `operationType` tracks install vs uninstall
118118
- **`[LLMTranslate]` INI config:** Written in 3 places — `POST /ai-endpoint`, `InstallOrchestrator`, DLL `Initialize`
119119
- **Update status model:** `Models/UpdateInfo.cs``src/api/types.ts``src/stores/update.ts``SettingsView.vue`
120120
- **AppSettings.ReceivePreReleaseUpdates:** Sync 4 places: `Models/AppSettings.cs`, `src/api/types.ts`, `SettingsView.vue` (settings default + NSwitch)
121-
- **MSI registry keys:** Written by MSI (`Components.wxs`), read by `Program.cs` (DataPath) and `Updater/Program.cs` (MsiProductCode); key path: `HKCU\Software\XUnityToolkit`
121+
- **MSI registry keys:** Written by MSI (`Components.wxs`), read by `Program.cs` (DataPath) and `Updater/Program.cs` (MsiProductCode, InstallDir); key path: `HKCU\Software\XUnityToolkit`
122122

123123
### Build & Deploy
124124

@@ -137,7 +137,7 @@ cd XUnityToolkit-Vue && npx vue-tsc --noEmit
137137
- **CI shared PowerShell functions:** Extract to standalone `.ps1` files (e.g., `Installer/Generate-InstallerWxs.ps1`); both `build.ps1` and CI source via `. ./path/to/script.ps1`
138138
- **WiX gotcha — reserved properties:** `PublishDir` and `SourceDir` are reserved by MSBuild/WiX SDK and get silently overridden; use custom names (e.g., `AppPublishDir`) and pass via `-p:AppPublishDir=...`
139139
- **WiX gotcha — path resolution:** WiX resolves `Source` paths relative to `.wixproj` directory, NOT CWD; use `IsPathRooted` in `.wixproj` to handle both absolute and relative inputs; do NOT set `-p:OutputPath` on WiX builds (interferes with file resolution)
140-
- **WiX gotcha — per-user ICE errors:** Per-user installs (`Scope="perUser"`) trigger ICE38/ICE64/ICE91 false positives; suppress via `<SuppressIces>ICE38;ICE64;ICE91</SuppressIces>`
140+
- **WiX gotcha — per-user ICE errors:** Per-user installs (`Scope="perUser"`) trigger ICE false positives; suppress via `<SuppressIces>ICE38;ICE60;ICE61;ICE64;ICE91</SuppressIces>`
141141
- **WiX gotcha — MSI codepage:** MSI database codepage defaults to 1252 (Western); Chinese characters in MSI internal strings (e.g., `DowngradeErrorMessage`) cause WIX0311 error; use English for MSI-level strings
142142
- **WiX gotcha — v5 element syntax:** `<String>` uses `Value` attribute (not inner text); `<Publish>` uses `Condition` attribute (not inner text); inner text is obsolete in WiX v5
143143
- **WiX gotcha — DefaultLanguage output path:** Setting `<DefaultLanguage>zh-CN</DefaultLanguage>` causes MSI output to culture subfolder (e.g., `bin/x64/Release/zh-CN/`); `build.ps1` uses `-Recurse` to find MSI

0 commit comments

Comments
 (0)