cherry-studio@1.7.2: Switch to portable version#16045
cherry-studio@1.7.2: Switch to portable version#16045z-Fng merged 11 commits intoScoopInstaller:masterfrom
Conversation
- Switch Cherry Studio manifest to portable version - Add notes and depends - Optimize persist
- Switch Cherry Studio manifest to portable version - Add notes and depends - Optimize persist
…2/Extras into optimize-cherry-manifest
|
All changes look good. Wait for review from human collaborators. cherry-studio
|
|
/verify |
|
All changes look good. Wait for review from human collaborators. cherry-studio
|
WalkthroughSwitched Cherry Studio from installer packages to portable executables for both architectures, added top-level pre_install script, added a top-level persist field, added a vcredist suggestion, renamed the shortcut, updated hashes and autoupdate URLs, and removed per-architecture pre_install and the legacy post_install block. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10–15 minutes
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/cherry-studio.json(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-14T11:15:55.229Z
Learnt from: SorYoshino
Repo: ScoopInstaller/Extras PR: 16333
File: bucket/potplayer.json:55-64
Timestamp: 2025-10-14T11:15:55.229Z
Learning: In PotPlayer manifests (bucket/potplayer.json), the Model and Engine folders are created at runtime (not included in the installer), so they should only be in the persist list and not in post_install scripts that handle .original directories.
Applied to files:
bucket/cherry-studio.json
📚 Learning: 2025-10-19T13:58:23.389Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Applied to files:
bucket/cherry-studio.json
🔇 Additional comments (6)
bucket/cherry-studio.json (6)
6-14: Clear and informative metadata additions.The notes array effectively communicates the data persistence change and provides migration context. The vcredist2022 dependency is appropriately marked as a suggestion for users who may need the Visual C++ Runtime.
25-43: Post-install migration logic is sound, with one potential edge case to consider.The data migration script properly handles two scenarios:
- When
$persist_dir\dataexists but is empty (lines 27-35)- When
$persist_dir\datadoes not exist yet (lines 36-42)However, verify that Scoop creates the persist directory before
post_installruns. If it does, theelsebranch (lines 36-42) may be unreachable during fresh installations. If Scoop does not pre-create persist directories, theensurecall at line 39 is necessary and correct.
47-47: Shortcut filename correctly matches URL rename fragment.The shortcut references
cherry-studio.exe(line 47), which aligns with the#/cherry-studio.exerename fragment in the download URLs (lines 17, 21). This ensures the portable executable is correctly renamed and accessible.
51-51: Persist field correctly declared for data directory.Setting
persistto"data"ensures that user data in the$persist_dir\datadirectory is preserved across Scoop updates, which integrates properly with the post_install migration logic.
58-58: Autoupdate URLs correctly target portable executable paths.The autoupdate block uses the portable executable path template with version substitution, maintaining consistency with the current download URLs and ensuring future updates also use portable executables.
Also applies to: 61-61
25-43: Removeensureandinfofunction calls—these are not available in Scoop's post_install environment.The post_install script at lines 33, 39, and 41 uses
ensureandinfofunctions that are not part of Scoop's standard helper functions. According to Scoop's official documentation, the available core functions during post_install are:Invoke-HookScript,Invoke-Installer,env_add_path,env_set,Add-Path,Set-EnvVar,Publish-EnvVar,Invoke-ScoopDownload,Invoke-Extraction,persist_data,link_current, andcreate_shims. The script will fail at runtime when attempting to callensureorinfo. Consider replacing these with appropriate PowerShell alternatives (e.g.,Write-Hostfor logging) or removing them if they are informational only. Note:$persist_diris correctly available during post_install execution.⛔ Skipped due to learnings
Learnt from: o-l-a-v Repo: ScoopInstaller/Extras PR: 16328 File: bucket/winutil.json:0-0 Timestamp: 2025-10-13T09:37:06.093Z Learning: When reviewing code in Scoop manifests, always verify the actual file content if the diff appears incomplete or unusual, as diff context can be truncated or displayed incorrectly. The pattern `[string[]](...).ForEach{...}` is commonly used in post_uninstall scripts across the Extras repository.Learnt from: SorYoshino Repo: ScoopInstaller/Extras PR: 16333 File: bucket/potplayer.json:55-64 Timestamp: 2025-10-14T11:24:17.524Z Learning: In PotPlayer manifests (bucket/potplayer.json), the Capture and Playlist folders are created at runtime (after running the application), not included in the installer, so they should only be in the persist list and not in post_install scripts.Learnt from: SorYoshino Repo: ScoopInstaller/Extras PR: 16333 File: bucket/potplayer.json:55-64 Timestamp: 2025-10-14T11:15:55.229Z Learning: In PotPlayer manifests (bucket/potplayer.json), the Model and Engine folders are created at runtime (not included in the installer), so they should only be in the persist list and not in post_install scripts that handle .original directories.
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
bucket/cherry-studio.json(1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-10-19T13:58:23.389Z
Learnt from: o-l-a-v
Repo: ScoopInstaller/Extras PR: 16378
File: bucket/compactgui.json:20-22
Timestamp: 2025-10-19T13:58:23.389Z
Learning: In the ScoopInstaller/Extras repository, the CompactGUI manifest removed hash verification from the autoupdate block because the hash verification mechanism (scraping SHA-256 from release page HTML) is no longer available in newer CompactGUI releases. GitHub asset digests exist in beta releases but not in v3.8.0, and Scoop doesn't have built-in support for extracting from GitHub API asset digests.
Applied to files:
bucket/cherry-studio.json
📚 Learning: 2025-10-14T11:15:55.229Z
Learnt from: SorYoshino
Repo: ScoopInstaller/Extras PR: 16333
File: bucket/potplayer.json:55-64
Timestamp: 2025-10-14T11:15:55.229Z
Learning: In PotPlayer manifests (bucket/potplayer.json), the Model and Engine folders are created at runtime (not included in the installer), so they should only be in the persist list and not in post_install scripts that handle .original directories.
Applied to files:
bucket/cherry-studio.json
📚 Learning: 2025-11-29T22:02:34.868Z
Learnt from: Ra2-IFV
Repo: ScoopInstaller/Extras PR: 16672
File: bucket/chromium-clang.json:12-12
Timestamp: 2025-11-29T22:02:34.868Z
Learning: In the chromium-clang.json manifest (bucket/chromium-clang.json), the extract_dir value "chrome-win32" is a fixed name determined by the upstream Chromium_Clang archive structure and should not be changed, even though the manifest targets 64-bit architecture.
Applied to files:
bucket/cherry-studio.json
📚 Learning: 2025-09-05T09:41:52.653Z
Learnt from: Gitoffthelawn
Repo: ScoopInstaller/Extras PR: 16106
File: bucket/czkawka-gui.json:25-25
Timestamp: 2025-09-05T09:41:52.653Z
Learning: For czkawka-gui manifests in Scoop Extras, the correct upstream filename pattern for Windows GUI builds in recent versions uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format. This was confirmed by a working 10.0.0 update with valid hash.
Applied to files:
bucket/cherry-studio.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: WindowsPowerShell
🔇 Additional comments (2)
bucket/cherry-studio.json (2)
29-29: Confirm portable archive structure supports exe extraction and rename.The shortcut references "cherry-studio.exe" which is extracted via the URL pattern
#/cherry-studio.exe. This assumes the portable archive contains a single exe or one primary exe that can be isolated. Verify that the Cherry Studio v1.7.2 portable downloads have the expected structure (e.g., a singleCherry-Studio-1.7.2-x64-portable.exethat Scoop can extract ascherry-studio.exe).The persist field "data" is appropriately scoped for a portable app with localized user data storage.
Also applies to: 33-33
40-40: Autoupdate URLs follow the portable exe pattern consistently.The autoupdate block correctly uses the portable exe URL template for both architectures. No issues detected; the pattern is consistent with the initial URLs. Ensure upstream maintains the
Cherry-Studio-$version-{x64|arm64}-portable.exenaming convention in future releases.Also applies to: 43-43
|
/verify |
|
All changes look good. Wait for review from human collaborators. cherry-studio
|
z-Fng
left a comment
There was a problem hiding this comment.
Thanks for your contribution! If there are any other changes, feel free to open an issue or submit a PR anytime.
|
According to the issue mentioned below, the portable version cannot pin the shortcut on taskbar or start automatically at boot: |
<manifest-name[@version]|chore>: <general summary of the pull request>Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.