Skip to content

Conversation

@AlimusSifar
Copy link
Contributor

@AlimusSifar AlimusSifar commented Sep 9, 2025

Changes

  • Update to version 2025.2.1, split 32/64-bit.
  • Fix installation/extraction.

Closes #16118

  • Use conventional PR title: <manifest-name[@version]|chore>: <general summary of the pull request>
  • I have read the Contributing Guide

Summary by CodeRabbit

  • New Features

    • Added 64‑bit and 32‑bit architecture-specific installers and a scripted installer flow for cleaner setup and cleanup.
  • Bug Fixes

    • More reliable update checks with improved language selection and error handling across architectures.
  • Refactor

    • Packaging migrated to architecture-based metadata; removed legacy installer flag; autoupdate now uses per-architecture URLs.
  • Chores

    • Bumped Foxit Reader to version 2025.2.1.

@coderabbitai
Copy link

coderabbitai bot commented Sep 9, 2025

Walkthrough

Version bumps to 2025.2.1 for two Scoop manifests; top-level url/hash moved into an architecture mapping for 64bit and 32bit, an installer.script was added to extract and relocate MSI contents, innosetup removed, and checkver/autoupdate adjusted for per-arch URLs and ML language.

Changes

Cohort / File(s) Summary
Foxit Reader manifests
bucket/foxit-pdf-reader.json, bucket/foxit-reader.json
Bump version to 2025.2.1; replace top-level url/hash with architecture64bit/32bit entries (each with url and hash); add installer.script performing MSI extraction/move/cleanup; remove innosetup; update checkver.script to iterate over 64/32 (language=ML, conditional SkipHttpErrorCheck) and adjust regex to capture per-arch filenames; change autoupdate to architecture-based URLs referencing per-arch match names.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Scoop as Scoop
  participant Manifest as foxit-*-reader.json
  participant CDN as Foxit CDN
  participant System as Windows FS

  User->>Scoop: scoop install foxit-*-reader
  Scoop->>Manifest: Read version, architecture (64bit/32bit), installer.script
  alt 64bit requested
    Scoop->>CDN: Download 64-bit installer (URL from architecture.64bit)
  else 32bit requested
    Scoop->>CDN: Download 32-bit installer (URL from architecture.32bit)
  end
  Scoop->>System: Verify hash
  Scoop->>System: Run installer.script
  rect rgb(235,245,255)
    note right of Scoop: Installer script extracts MSI and relocates files
    Scoop->>System: Extract container (7z / Expand)
    Scoop->>System: Invoke msiexec to expand MSI payload
    Scoop->>System: Move files into install dir
    Scoop->>System: Remove temporary extraction artifacts
  end
  Scoop-->>User: Installation completed
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

I hopped through versions, found two-Oh-Two-One,
Pulled out the MSI till the extraction was done.
No innosetup crumbs, just a tidy new stash,
Archs side by side — I danced with a flash.
Carrots of ML, a rabbit's small run. 🥕🐇

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title clearly identifies the affected manifest(s) and concisely summarizes the key changes—bumping to version 2025.2.1, splitting into 32/64-bit variants, and fixing installation—making it clear and actionable for reviewers.
Description Check ✅ Passed The PR description correctly follows the repository template by including the introductory summary comment, linking to the related issue, and marking the required checklist items, along with a concise Changes section that outlines the updates, satisfying the template’s structure and content requirements.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between da4eb95 and 7565092.

📒 Files selected for processing (2)
  • bucket/foxit-pdf-reader.json (1 hunks)
  • bucket/foxit-reader.json (1 hunks)
⏰ 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

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.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 9, 2025

All changes look good.

Wait for review from human collaborators.

foxit-pdf-reader

  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

foxit-reader

  • Description
  • License
  • Hashes
  • Checkver
  • Autoupdate

Copy link

@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: 0

🧹 Nitpick comments (2)
bucket/foxit-pdf-reader.json (1)

16-23: Installer script works; add -Force and guard for path robustness.

  • Add -Force to Move-Item to avoid failures on existing files during reinstall.
  • Consider validating the MSI path in AttachedContainer as it can change across minor releases.

Apply:

-            "Move-Item \"$dir\\extracted\\msi\\Foxit Software\\Foxit PDF Reader\\*\" \"$dir\"",
+            "Move-Item \"$dir\\extracted\\msi\\Foxit Software\\Foxit PDF Reader\\*\" \"$dir\" -Force",

Optional robustness:

$msi = Get-ChildItem "$dir\extracted\AttachedContainer" -Filter *.msi | Select-Object -First 1
if (-not $msi) { throw 'Foxit MSI not found in AttachedContainer' }
Expand-MsiArchive $msi.FullName "$dir\extracted\msi"
bucket/foxit-reader.json (1)

16-23: Installer script parity maintained; add -Force to Move-Item.

Keep both manifests identical here to avoid drift.

Apply:

-            "Move-Item \"$dir\\extracted\\msi\\Foxit Software\\Foxit PDF Reader\\*\" \"$dir\"",
+            "Move-Item \"$dir\\extracted\\msi\\Foxit Software\\Foxit PDF Reader\\*\" \"$dir\" -Force",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7539009 and 1912741.

📒 Files selected for processing (2)
  • bucket/foxit-pdf-reader.json (2 hunks)
  • bucket/foxit-reader.json (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Gitoffthelawn
PR: ScoopInstaller/Extras#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.
Learnt from: Gitoffthelawn
PR: ScoopInstaller/Extras#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 uses "gtk46" (without underscore), not "gtk_46" (with underscore). The autoupdate URL should use "windows_czkawka_gui_gtk46.zip" format.
⏰ 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: PullRequestHandler
🔇 Additional comments (10)
bucket/foxit-pdf-reader.json (5)

3-3: Version bump looks correct.

No schema issues with the updated version field.


41-41: Regex captures version and filename correctly.

The named groups align with autoupdate’s $matchFname usage.


43-49: Autoupdate architecture block is correct and consistent with checkver regex.

Good use of $version and $matchFname under 64bit.


10-15: Verify SHA256 hash for 64-bit URL
The URL pattern aligns with Foxit’s latest redirect style. Please download the EXE and compare its SHA256 to avoid integrity mismatches.

Linux/macOS:

u='https://www.foxit.com/downloads/latest.html?product=Foxit-Reader&platform=Windows&language=ML'
location=$(curl -sI "$u" | grep -i '^Location:' | awk '{print $2}' | tr -d '\r')
curl -L -o foxit.exe "$location"
sha256sum foxit.exe | awk '{print $1}'
rm foxit.exe

Windows PowerShell:

$u='https://www.foxit.com/downloads/latest.html?product=Foxit-Reader&platform=Windows&language=ML'
$r=Invoke-WebRequest $u -MaximumRedirection 0 -ErrorAction SilentlyContinue
$dl=$r.Headers.Location
$dst="$env:TEMP\foxit.exe"
Invoke-WebRequest $dl -OutFile $dst
(Get-FileHash $dst -Algorithm SHA256).Hash
Remove-Item $dst -Force

Ensure the computed hash matches
31db3256b8f5ec55ec9bc5a278a03c938802ed17a61fe6394e196e5fa4fed1bd.


33-39: Verify ML redirect URL format

Run this to capture the first redirect and ensure it ends with …/win//FoxitPDFReader_L10N_Setup_Prom_x64.exe:

curl -s -D - -o /dev/null 'https://www.foxit.com/downloads/latest.html?product=Foxit-Reader&platform=Windows&language=ML' | grep -i '^Location:'

Confirm the Location header matches your regex for future releases.

bucket/foxit-reader.json (5)

3-3: Version bump mirrors foxit-pdf-reader; in sync.

Keeping both manifests aligned matches the inline guidance.


10-15: Architecture migration OK; confirm the hash matches the redirected payload.

Same verification steps as the sibling manifest apply.

Reuse the PowerShell snippet from foxit-pdf-reader.json to confirm Location and SHA256.


33-39: checkver logic consistent; confirm ML redirect against regex.

Same stability check recommended.

Use the same PowerShell snippet to print the Location header and compare against the regex.


41-41: Regex is compatible with current filename (…L10N…_x64.exe).

No issues spotted.


43-49: Autoupdate block matches the new structure.

Good.

@Lutra-Fs
Copy link
Member

GitHub Copliot Analysis:
The job failed because some files do not end with a newline. The error message specifically lists:

  • my_bucket/bucket/foxit-pdf-reader.json
  • my_bucket/bucket/foxit-reader.json

Solution:
Edit each of these files and ensure there is a newline character at the end of the file. In most editors, just go to the last line, hit Enter, and save.

Code Suggestion:
If you are using git on the command line, you can quickly append a newline to each file:

echo >> my_bucket/bucket/foxit-pdf-reader.json
echo >> my_bucket/bucket/foxit-reader.json

Then, commit and push your changes.

Summary:
Add a newline at the end of both foxit-pdf-reader.json and foxit-reader.json in my_bucket/bucket/ to fix the job failure.

Copy link

@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

♻️ Duplicate comments (2)
bucket/foxit-pdf-reader.json (2)

10-15: Mirror of foxit-reader: verify “Prom” L10N asset and cross-file parity.
Same concerns as the sibling manifest. Keep both files byte-identical where applicable.

Use the script provided in foxit-reader.json comments to validate redirect and diff the two files.


33-38: Checkver change mirrors foxit-reader; verify redirect + regex match.

Use the same curl-based verification script from the other file.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1912741 and da4eb95.

📒 Files selected for processing (2)
  • bucket/foxit-pdf-reader.json (2 hunks)
  • bucket/foxit-reader.json (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Gitoffthelawn
PR: ScoopInstaller/Extras#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.
🔇 Additional comments (8)
bucket/foxit-reader.json (5)

3-3: Version bump looks good.


44-48: Autoupdate architecture mapping LGTM.


50-51: Action: re-run trailing-newline check (od not available in environment)

CI flagged missing trailing newline in both manifests; prior script failed because od is not installed — run this Python check and then append a newline if any file is missing it.

python3 - <<'PY'
files=["bucket/foxit-reader.json","bucket/foxit-pdf-reader.json"]
for f in files:
    try:
        b=open(f,'rb').read()
    except Exception as e:
        print(f"{f} -> error: {e}")
        continue
    if not b:
        print(f"{f} -> empty")
    else:
        print(f"{f} -> last byte: {b[-1]} (10 means newline)")
PY

If a file is missing a trailing newline, run:
printf '\n' >> bucket/foxit-reader.json
printf '\n' >> bucket/foxit-pdf-reader.json


10-15: Validate “Prom” L10N asset choice and keep both manifests in perfect sync.
HEAD check of the Foxit download page returned no resolved redirect (empty Location); local diff against bucket/foxit-pdf-reader.json produced no differences. Confirm that L10N_Setup_Prom_x64.exe is the intended multilingual/promotional Reader build and that url+hash remain byte-identical in both manifests; to verify upstream run: curl -sSLI 'https://www.foxit.com/downloads/latest.html?product=Foxit-Reader&platform=Windows&language=ML' and curl -sI and compare checksums.


33-38: Checkver change to language=ML and SkipHttpErrorCheck — redirect + regex verified.
GET/redirect resolves to https://cdn01.foxitsoftware.com/product/reader/desktop/win/2025.2.0/FoxitPDFReader20252_L10N_Setup_Prom_x64.exe which matches /win/([0-9.]+)/([^/]+.exe)$ and FoxitPDFReader.*.exe, so $matchFname will be captured.

bucket/foxit-pdf-reader.json (3)

3-3: Version bump looks good.


44-48: Autoupdate architecture mapping LGTM.


50-51: Ensure trailing newline at EOF.
Address CI warning if still present.

See the EOF check script in the sibling file.

@z-Fng z-Fng changed the title [email protected]: [fix] update to latest version foxit(-pdf)-reader: Update to version 2025.2.1 Oct 3, 2025
@z-Fng z-Fng changed the title foxit(-pdf)-reader: Update to version 2025.2.1 foxit(-pdf)-reader: Update to version 2025.2.1, split 32/64-bit, fix installation Oct 3, 2025
@z-Fng
Copy link
Member

z-Fng commented Oct 8, 2025

/verify

@github-actions
Copy link
Contributor

github-actions bot commented Oct 8, 2025

All changes look good.

Wait for review from human collaborators.

foxit-pdf-reader

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

foxit-reader

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

Check the full log for details.

Copy link
Member

@z-Fng z-Fng left a comment

Choose a reason for hiding this comment

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

Thanks!

"script": [
"# Lessmsi cannot handle .msp patches correctly in this case. So we use msiexec to extract the files.",
"Expand-7zipArchive \"$dir\\$fname\" \"$dir\\msi\" -ExtractDir '.rsrc\\1033\\PAYLOAD' -Removal",
"$succ = Invoke-ExternalCommand msiexec -ArgumentList @('/a', \"$dir\\msi\\500\", '/p', \"$dir\\msi\\700\", '/qn', \"TARGETDIR=$dir\\extracted\") -LogPath \"$dir\\install.log\"",
Copy link
Member

Choose a reason for hiding this comment

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

Temporary workaround. Needs updating when the next version is released.

@z-Fng z-Fng merged commit fcc3a8a into ScoopInstaller:master Oct 8, 2025
3 checks passed
@z-Fng z-Fng linked an issue Oct 8, 2025 that may be closed by this pull request
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.

[Bug]: [email protected]: autoupdate issue; version 2025.2 is available

3 participants