Skip to content

7zip-dark: Add version 26.00-v0.48.0#2779

Open
ChenXu-Huang wants to merge 3 commits intoScoopInstaller:masterfrom
ChenXu-Huang:7zip-dark
Open

7zip-dark: Add version 26.00-v0.48.0#2779
ChenXu-Huang wants to merge 3 commits intoScoopInstaller:masterfrom
ChenXu-Huang:7zip-dark

Conversation

@ChenXu-Huang
Copy link
Copy Markdown

@ChenXu-Huang ChenXu-Huang commented Mar 30, 2026

This PR adds a new manifest for 7-Zip-Dark, a patched version of 7-Zip that supports native Dark Mode.

  • Project Homepage: https://github.com/ozone10/7zip-Dark7zip
  • Version: 26.00 (Patch v0.48.0)
  • Changes:
    • Added support for x64 and arm64 architectures.
    • Implemented a custom installation logic to overlay the dark mode patch onto the official 7-Zip binaries.
    • Excluded 32-bit support as it is not provided by the upstream patch project.

Relates to main/7zip

  • Use conventional PR title: 7zip-dark@26.00-v0.48.0: initial release
  • I have read the Contributing Guide

Summary by CodeRabbit

  • New Features
    • Added support for the 7zip-Dark variant with architecture-specific install flows for 64-bit and ARM64, including required binary extraction and patch application.
    • Installer rewrites context registry scripts to reflect the chosen install root and optional global installation.
    • Declares installed executables, a file manager shortcut, persisted user data (codecs/formats), and GitHub-based version/autoupdate checks.

@github-actions
Copy link
Copy Markdown
Contributor

Your changes did not pass all checks.

Please address the issues in the manifest and comment starting with /verify to rerun the checks.

7zip-dark

  • Lint
  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

Check the full log for details.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 30, 2026

Walkthrough

Adds a new static bucket manifest bucket/7zip-dark.json for the “7zip-Dark7zip” variant pinned to 26.00-v0.48.0. Includes architecture-specific pre-install steps that download base and Dark7zip artifacts and apply a patch, post-install registry script rewriting, declared executables/shortcut/persisted folders, GitHub-based checkver, and autoupdate templates.

Changes

Cohort / File(s) Summary
7zip-Dark Manifest
bucket/7zip-dark.json
New manifest adding 26.00-v0.48.0. Implements pre_install for 64bit and arm64 (download base 7-Zip artifacts and Dark7zip ZIP, extract/apply patch.dl, cleanup), post_install edits install-context.reg / uninstall-context.reg by substituting install root and optional HKCU→HKLM when $global is set, declares installed binaries (7z.exe, 7zFM.exe, 7zG.exe), a 7zFM.exe shortcut, persisted Codecs/Formats folders, GitHub checkver regex parsing, and autoupdate URL templates referencing the Dark7zip release ZIP (#/patch.dl).

Sequence Diagram(s)

sequenceDiagram
  participant Manifest as Installer (manifest)
  participant GH as GitHub Releases
  participant Base as 7-zip.org
  participant FS as File System
  participant Reg as Registry Scripts

  Manifest->>GH: download Dark7zip ZIP (contains patch.dl)
  Manifest->>Base: download base 7-Zip artifact (MSI/7zr/7z.exe)
  GH->>FS: provide patch.dl inside ZIP
  Base->>FS: provide base EXE/MSI
  Manifest->>FS: extract base EXE and patch.dl
  Manifest->>FS: run 7z.exe to apply patch.dl into install root
  Manifest->>FS: remove temporary artifacts (patch.dl, temp EXEs)
  Manifest->>Reg: read script templates, substitute install root (and HKLM if $global)
  Manifest->>FS: write updated reg files as ASCII and create shortcut/binaries
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

review-needed

Poem

🐰 A rabbit found a patch in a zip so stark,
Snipped bits and stitched them—now it's 7zip-Dark,
It rewrote keys and tucked files in place,
Created shortcuts with a nimble grace,
Hoppity-hop, a patched archive spark!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The description covers the manifest purpose, project reference, version details, architectural scope, implementation approach, and confirms adherence to contributing guidelines with conventional title format.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately reflects the primary change: adding a new 7zip-dark manifest pinned to version 26.00-v0.48.0, which is the core purpose of this PR.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bucket/7zip-dark.json`:
- Line 42: The Remove-Item command string "Remove-Item \"$dir\\Uninstall.exe\",
\"$dir\\7z2600-arm64.exe\", \"$dir\\patch.dl\", $7zr -Force" can fail if files
are missing; make cleanup tolerant by adding -ErrorAction SilentlyContinue to
the Remove-Item invocation or wrap each path with a Test-Path guard before
removal so missing artifacts don't cause the installer to fail; update the
command string in the JSON entry accordingly.
- Around line 29-42: The pre_install step currently downloads and runs an
unchecked 7zr.exe (see $7zr, Join-Path, Invoke-WebRequest) which bypasses
manifest hashing; instead add the 7zr.exe asset to the manifest's "url" and add
its SHA256 to the "hash" array so the installer fetches a pinned, verified
binary, then remove the Invoke-WebRequest line and modify pre_install to
reference the already-declared asset path ($7zr or the asset filename in $dir)
so Invoke-ExternalCommand runs only the manifest-verified 7zr.exe.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4c8848eb-f2ff-4144-be56-86374dfb8ea2

📥 Commits

Reviewing files that changed from the base of the PR and between 046f2ca and f5276e7.

📒 Files selected for processing (1)
  • bucket/7zip-dark.json

Comment thread bucket/7zip-dark.json Outdated
Comment on lines +29 to +42
"url": [
"https://www.7-zip.org/a/7z2600-arm64.exe",
"https://github.com/ozone10/7zip-Dark7zip/releases/download/v26.00-v0.48.0/7z26.00-v0.48.0-arm64.zip#/patch.dl"
],
"hash": [
"92fac666911336f3bbf3d99fdc48ec36fe20ac7a4200556936e61a8076ae6493",
"99db92902d7be8cfaec9e67fb072fbef33f624d14864519dda388c5da309ba37"
],
"pre_install": [
"$7zr = Join-Path $env:TMP '7zr.exe'",
"Invoke-WebRequest https://www.7-zip.org/a/7zr.exe -OutFile $7zr",
"Invoke-ExternalCommand $7zr @('x', \"$dir\\7z2600-arm64.exe\", \"-o$dir\", '-y') | Out-Null",
"Invoke-ExternalCommand \"$dir\\7z.exe\" @('x', \"$dir\\patch.dl\", \"-o$dir\", '-y') | Out-Null",
"Remove-Item \"$dir\\Uninstall.exe\", \"$dir\\7z2600-arm64.exe\", \"$dir\\patch.dl\", $7zr -Force"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Do not download and execute 7zr.exe at install time.

At Line 39/40, the script fetches and executes a binary that is outside manifest hash verification. This is a supply-chain and reproducibility risk.

🔧 Proposed fix (pin `7zr.exe` in manifest + hash it)
         "arm64": {
             "url": [
                 "https://www.7-zip.org/a/7z2600-arm64.exe",
-                "https://github.com/ozone10/7zip-Dark7zip/releases/download/v26.00-v0.48.0/7z26.00-v0.48.0-arm64.zip#/patch.dl"
+                "https://github.com/ozone10/7zip-Dark7zip/releases/download/v26.00-v0.48.0/7z26.00-v0.48.0-arm64.zip#/patch.dl",
+                "https://www.7-zip.org/a/7zr.exe#/7zr.exe"
             ],
             "hash": [
                 "92fac666911336f3bbf3d99fdc48ec36fe20ac7a4200556936e61a8076ae6493",
-                "99db92902d7be8cfaec9e67fb072fbef33f624d14864519dda388c5da309ba37"
+                "99db92902d7be8cfaec9e67fb072fbef33f624d14864519dda388c5da309ba37",
+                "<sha256-of-7zr.exe>"
             ],
             "pre_install": [
-                "$7zr = Join-Path $env:TMP '7zr.exe'",
-                "Invoke-WebRequest https://www.7-zip.org/a/7zr.exe -OutFile $7zr",
+                "$7zr = Join-Path $dir '7zr.exe'",
                 "Invoke-ExternalCommand $7zr @('x', \"$dir\\7z2600-arm64.exe\", \"-o$dir\", '-y') | Out-Null",
                 "Invoke-ExternalCommand \"$dir\\7z.exe\" @('x', \"$dir\\patch.dl\", \"-o$dir\", '-y') | Out-Null",
                 "Remove-Item \"$dir\\Uninstall.exe\", \"$dir\\7z2600-arm64.exe\", \"$dir\\patch.dl\", $7zr -Force"
             ]
         }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bucket/7zip-dark.json` around lines 29 - 42, The pre_install step currently
downloads and runs an unchecked 7zr.exe (see $7zr, Join-Path, Invoke-WebRequest)
which bypasses manifest hashing; instead add the 7zr.exe asset to the manifest's
"url" and add its SHA256 to the "hash" array so the installer fetches a pinned,
verified binary, then remove the Invoke-WebRequest line and modify pre_install
to reference the already-declared asset path ($7zr or the asset filename in
$dir) so Invoke-ExternalCommand runs only the manifest-verified 7zr.exe.

Comment thread bucket/7zip-dark.json Outdated
"Invoke-WebRequest https://www.7-zip.org/a/7zr.exe -OutFile $7zr",
"Invoke-ExternalCommand $7zr @('x', \"$dir\\7z2600-arm64.exe\", \"-o$dir\", '-y') | Out-Null",
"Invoke-ExternalCommand \"$dir\\7z.exe\" @('x', \"$dir\\patch.dl\", \"-o$dir\", '-y') | Out-Null",
"Remove-Item \"$dir\\Uninstall.exe\", \"$dir\\7z2600-arm64.exe\", \"$dir\\patch.dl\", $7zr -Force"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Make cleanup tolerant to missing artifacts.

Line 42 can fail if any listed file is absent after upstream packaging changes. Add -ErrorAction SilentlyContinue (or guard with Test-Path) to keep install resilient.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bucket/7zip-dark.json` at line 42, The Remove-Item command string
"Remove-Item \"$dir\\Uninstall.exe\", \"$dir\\7z2600-arm64.exe\",
\"$dir\\patch.dl\", $7zr -Force" can fail if files are missing; make cleanup
tolerant by adding -ErrorAction SilentlyContinue to the Remove-Item invocation
or wrap each path with a Test-Path guard before removal so missing artifacts
don't cause the installer to fail; update the command string in the JSON entry
accordingly.

@ChenXu-Huang
Copy link
Copy Markdown
Author

/verify

@github-actions
Copy link
Copy Markdown
Contributor

Your changes did not pass all checks.

Please address the issues in the manifest and comment starting with /verify to rerun the checks.

7zip-dark

  • Lint
  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

Check the full log for details.

@ChenXu-Huang
Copy link
Copy Markdown
Author

This is a known longstanding issue. The servers at 7-zip.org frequently rate-limit or block the IP ranges of GitHub Actions servers, resulting in connection timeouts.

@z-Fng z-Fng changed the title 7zip-dark@26.00-v0.48.0: initial release 7zip-dark: Add version 26.00-v0.48.0 Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant