{"id":51524931,"url":"https://github.com/dovahkiinyuzuko/rapid-zipper","last_synced_at":"2026-07-08T20:01:57.292Z","repository":{"id":362821654,"uuid":"1259578589","full_name":"DovahkiinYuzuko/rapid-zipper","owner":"DovahkiinYuzuko","description":"[ENG] A simple, secure, and portable drag-and-drop file compression/extraction utility for Windows / [JPN] Windows用のシンプルで安全、かつポータブルなファイル圧縮・展開ユーティリティ","archived":false,"fork":false,"pushed_at":"2026-06-06T03:34:56.000Z","size":136,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T05:14:10.147Z","etag":null,"topics":["7z","compression","csharp","dotnet","extraction","portable","windows","wix","zip"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DovahkiinYuzuko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-04T16:41:06.000Z","updated_at":"2026-06-06T03:34:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DovahkiinYuzuko/rapid-zipper","commit_stats":null,"previous_names":["dovahkiinyuzuko/rapid-zipper"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/DovahkiinYuzuko/rapid-zipper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DovahkiinYuzuko%2Frapid-zipper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DovahkiinYuzuko%2Frapid-zipper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DovahkiinYuzuko%2Frapid-zipper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DovahkiinYuzuko%2Frapid-zipper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DovahkiinYuzuko","download_url":"https://codeload.github.com/DovahkiinYuzuko/rapid-zipper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DovahkiinYuzuko%2Frapid-zipper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35276781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["7z","compression","csharp","dotnet","extraction","portable","windows","wix","zip"],"created_at":"2026-07-08T20:01:56.505Z","updated_at":"2026-07-08T20:01:57.287Z","avatar_url":"https://github.com/DovahkiinYuzuko.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ラピッド圧縮✧展開 (RapidZipper)\n\n![C#](https://img.shields.io/badge/C%23-239120?style=flat-square\u0026logo=c-sharp\u0026logoColor=white)\n![.NET 10](https://img.shields.io/badge/.NET%2010-512BD4?style=flat-square\u0026logo=.net\u0026logoColor=white)\n![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat-square\u0026logo=windows\u0026logoColor=white)\n![WiX Toolset v5](https://img.shields.io/badge/WiX%20Toolset%20v5-FF6F00?style=flat-square\u0026logo=windows-terminal\u0026logoColor=white)\n![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)\n\n- **English**: A simple, secure, and portable drag-and-drop file compression/extraction utility with Windows Explorer context menu integration.\n- **日本語**: Windows用の、シンプルで安全、かつポータブルなドラッグ＆ドロップおよび右クリックメニューから使える圧縮・展開ユーティリティ。\n\n[日本語](#日本語) | [English](#english)\n\n---\n\n## 日本語\n\n### 1. 対応フォーマット（対応拡張子）\n\n| 処理 | 対応アーカイブ形式 |\n|---|---|\n| **圧縮 (Compression)** | ZIP, 7Z, TAR, TGZ (tar.gz) |\n| **展開 (Extraction)** | ZIP, 7Z, RAR, TAR, GZ, TGZ |\n\n---\n\n### 2. アプリの使い方\n\n#### A. ドラッグ＆ドロップによる操作\n- **展開（解凍）**: アーカイブファイル（.zip, .7z など）をメインウィンドウにドロップすると、展開先フォルダ選択ダイアログが表示され、指定された場所に安全に解凍されます。\n- **圧縮**: フォルダまたはファイルをウィンドウにドロップすると、現在選択されている圧縮フォーマットで圧縮アーカイブが作成されます。7Z フォーマットを選択している場合は、圧縮開始前に「低・普通・高」のレベル選択ダイアログが起動します。\n\n#### B. 右クリック（コンテキスト）メニューによる操作\n- ファイル、フォルダ、またはフォルダ内の背景を右クリック（Windows 11 では「その他のオプションを表示」を選択）し、**「ラピッド圧縮✧展開で処理 / Process with RapidZipper」** を選択します。\n- アプリが起動して自動的に圧縮または展開が実行されます。処理が完了し、ダイアログを閉じるとアプリケーションは自動で終了するため、右クリックから手軽に処理を行えます。\n\n---\n\n### 3. 開発者向けのセットアップ・ビルド手順\n\n#### 動作環境要件\n- Windows 10 / 11 (x64)\n- .NET 10.0 SDK\n- WiX Toolset v5 CLI\n\n#### リソース（7z.dll）の自動埋め込み仕様\n本アプリは `7z.dll` をアセンブリ内に自動で埋め込む仕様になっています（ポータブル動作）。Unicode パスバグを回避するため、起動時に特殊文字を含まない一時ディレクトリへ動的展開してロードされます。\n\n#### WiX v5 拡張機能の登録\nインストーラー（MSI）で使用しているセットアップウィザードやユーティリティをビルドするために、事前に WiX CLI に以下の拡張機能パッケージを登録する必要があります。PowerShell 等で以下を実行してください。\n```powershell\nwix extension add WixToolset.UI.wixext/5.0.2\nwix extension add WixToolset.Util.wixext/5.0.2\n```\n\n#### アプリケーションおよびインストーラーのビルド手順\n同梱されている `build-installer.ps1` を実行することで、シングルファイルパブリッシュ（dotnet publish）から MSI インストーラーのパッケージング（wix build）までを自動で一括実行できます。\n```powershell\ncd rapid-zipper\n.\\build-installer.ps1\n```\nビルドが成功すると、`rapid-zipper/bin/x64/Release/rapid-zipper.msi` にセットアップウィザード付きのインストーラーが生成されます。\n\n---\n\n### 4. 安全設計とセキュリティ対策\n- **ロールバック安全策（安全置換）**: 既存フォルダを上書き展開する際、一時フォルダに展開を完了してから安全に元のフォルダと置換し、失敗時は元ファイルを保護する仕組みを導入しています。\n- **重要フォルダ保護**: システムディレクトリやドライブのルートなど、誤削除や誤上書きが危険なパスへの書き込みを検知してブロックします。\n- **Zip Slip 脆弱性対策**: 展開時にファイル名パスを正規化し、解凍先ディレクトリの外へのファイル書き出し（ディレクトリトラバーサル攻撃）をブロックします。\n- **Zip Bomb 脆弱性対策**: 展開前にアーカイブ内のファイルサイズと数を検証し、上限（100GB、50万ファイル）を超える場合は処理を事前に中断してシステムリソースを守ります。\n- **ジャンクション攻撃（VULN-001）防止**: 動的ロードする一時ディレクトリ名に予測不可能なGUIDを組み込むことで、競合状態を狙ったジャンクション攻撃を防いでいます。\n\n---\n\n### 5. ライセンス\n- **アプリ本体**: MIT License (詳細は [LICENSE](LICENSE) を参照)\n- **サードパーティライセンス**: LGPL v2.1 / v3 および MIT License (詳細は [NOTICE.md](NOTICE.md) を参照)\n  - 7z.Libs (LGPL v2.1)\n  - SharpCompress (MIT)\n  - SevenZipSharp (LGPL v3)\n\n---\n---\n\n## English\n\n### 1. Supported Formats\n\n| Action | Supported Archive Formats |\n|---|---|\n| **Compression** | ZIP, 7Z, TAR, TGZ (tar.gz) |\n| **Extraction** | ZIP, 7Z, RAR, TAR, GZ, TGZ |\n\n---\n\n### 2. How to Use\n\n#### A. Drag \u0026 Drop Operations\n- **Extraction**: Drop any archive file (e.g., .zip, .7z) onto the application window. A folder browser dialog will appear for you to select the destination, and the files will be safely extracted there.\n- **Compression**: Drop folders or files onto the window to pack them. They will be compressed into the format currently selected in the dropdown. For 7Z compression, a dialog prompt (\"Low\", \"Normal\", \"High\") will appear before starting.\n\n#### B. Explorer Context Menu Operations\n- Right-click any file, folder, or the background directory inside Explorer (For Windows 11, select \"Show more options\" first), and choose **\"ラピッド圧縮✧展開で処理 / Process with RapidZipper\"**.\n- The app will launch and automatically execute the compression or extraction. Once finished and the dialog is closed, the app exits automatically.\n\n---\n\n### 3. Developer Setup \u0026 Build Instructions\n\n#### Prerequisites\n- Windows 10 / 11 (x64)\n- .NET 10.0 SDK\n- WiX Toolset v5 CLI\n\n#### 7z.dll Automatic Resource Embedding\nThis application automatically embeds `7z.dll` inside the assembly for standalone portability. It unpacks it dynamically to a safe temp folder on startup to prevent Unicode path bugs.\n\n#### Resolving WiX v5 Extensions\nTo compile the setup wizard and utilities, register the required extension packages to the WiX CLI:\n```powershell\nwix extension add WixToolset.UI.wixext/5.0.2\nwix extension add WixToolset.Util.wixext/5.0.2\n```\n\n#### Building the Application and MSI Installer\nRun the automated script `build-installer.ps1` to publish the C# application as a standalone executable and package it into an MSI installer:\n```powershell\ncd rapid-zipper\n.\\build-installer.ps1\n```\nThe output package will be generated at `rapid-zipper/bin/x64/Release/rapid-zipper.msi`.\n\n---\n\n### 4. Security \u0026 Safety Features\n- **Rollback-Safe Replacement**: When overwriting directories during extraction, files are unpacked to a temporary location first and only swapped upon success. The original directory is protected if any error occurs.\n- **System Directory Guard**: Blocks writes to root drives and system/user profiles (e.g., Windows directory, Desktop, Downloads).\n- **Zip Slip Prevention**: Sanitizes extraction paths using `Path.GetFullPath` to block directory traversal attacks.\n- **Zip Bomb Defense**: Scans archive headers before unpacking to enforce safety limits (100 GB max size, 500,000 max file count).\n- **Junction Attack (VULN-001) Prevention**: Employs unpredictable GUID subfolders for dynamic loading to prevent malicious link redirections.\n\n---\n\n### 5. License\n- **Application**: MIT License (See [LICENSE](LICENSE) for details)\n- **Third-party Libraries**: LGPL v2.1 / v3 and MIT License (See [NOTICE.md](NOTICE.md) for details)\n  - 7z.Libs (LGPL v2.1)\n  - SharpCompress (MIT)\n  - SevenZipSharp (LGPL v3)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdovahkiinyuzuko%2Frapid-zipper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdovahkiinyuzuko%2Frapid-zipper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdovahkiinyuzuko%2Frapid-zipper/lists"}