Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LhaForge

LhaForge v1.6.7を基盤として、v1系のUI・操作性・統合アーカイバDLLとの互換性を維持しながら、現代のWindows環境向けにModernizeするForkです。

現在は設計・開発準備段階です。

v1.7.0として利用可能なReleaseはまだありません。

Project

  • Base: LhaForge v1.6.7
  • Development line: LhaForge v1.7.x
  • Development branch: main-osamix
  • Platform direction: Windows x64
  • License: 修正BSDライセンス

LhaForge v2への移行ではなく、v1.6.7を直接の開発基準としてv1系を継続することを目的としています。

Goals

LhaForge v1.xの特徴を可能な限り維持しながら、内部構造をModernizeします。

主な方針:

  • v1系UI・操作性の維持
  • 統合アーカイバDLLとの互換性維持
  • LhaForge本体のx64化
  • x86専用Legacy DLLを利用するLegacyHost
  • Built-in Archive BackendによるFallback
  • Legacy Format対応の維持
  • Unicode処理の改善
  • DLL Load / Archive Path Securityの強化
  • Logging基盤の追加
  • 現代Windows向けDPI・UI対応
  • Installer / Repair / Migration / Uninstallの再設計
  • v1.6.7環境からの安全なMigration
  • .git.env等を圧縮時に除外できる共通Input Filter
  • Archive名を利用した展開先Directory作成
  • 必要な処理だけを昇格する最小権限設計
  • Signed / Unsigned双方を許容するRelease設計
  • SecurityとPerformanceを両立する共通Operation Planning

Archive Backend

v1.7.xでは、外部アーカイバDLLを正式なBackendとして維持します。

基本的なBackend選択方針:

External x64 DLL
        ↓
External x86 DLL + LegacyHost
        ↓
Built-in Backend
        ↓
Error

Built-in Backendは外部DLL方式を廃止するためのものではなく、External Backendが利用できない場合のFallbackおよび基本可用性確保を目的とします。

Archive Operation Safety

v1.7.xではBackend種別に依存しないOperation Planningを導入し、圧縮対象と展開先をLhaForge側で共通管理します。

圧縮時には.git.env等の共有したくない項目について、

  • 除外しない
  • 自動的に除外する
  • 圧縮時に確認して決定する

といったPolicyを選択できる方向で設計しています。除外RuleはOptionから追加・削除・有効化・無効化できる構造とします。

展開時にはsample.zipsample\source.tar.gzsource\のように、Archive名を利用したSubdirectoryへ展開するOptionを提供します。

Compatibility

v1.7.xでは、特に次のLegacy Compatibilityを重視します。

  • LhaForge v1.6.7
  • 統合アーカイバDLL
  • LFCaldix
  • cldx
  • MenuEditor
  • File Association
  • Shell Extension
  • 既存設定
  • Legacy Archive Format

互換性のために安全性を犠牲にすることはせず、危険な旧実装については挙動差を文書化した上でModernizeします。

Documentation

設計資料はdocs以下に保存しています。

Legacy

v1.7.0 Design

Architecture Decision Records

Development Status

現在は実装開始前のArchitecture / Compatibility設計段階です。

Legacy Baseline              Done
Source Verification          Done
Architecture Decisions       In progress
Ownership Design             Draft
Overall Architecture         Draft
Archive Operation Design     Draft
Signing / Privilege Design   Draft
Security Design              Draft
Performance Design           Draft
Directory Layout             Planned
Backend Design               Planned
Migration Design             Planned
Installer Design             Planned
Logging Design               Planned
Encoding Design              Planned
Build Modernization          Not started
x64 Migration                Not started

開発環境・Build手順については、Build Modernization方針の確定後に追記します。

Development Principles

このプロジェクトでは、v1.6.7のソースを一度に全面Rewriteしません。

Legacy Behaviorを調査・記録した上で、段階的に、

Legacy Baseline
      ↓
Architecture
      ↓
Build Modernization
      ↓
Regression Verification
      ↓
x64 / Backend Modernization
      ↓
Security / Performance / Compatibility
      ↓
v1.7.0

と進めます。

元の設計・挙動と、新しい設計・変更理由の双方をDocumentationおよびGit履歴に残します。

Upstream

Original LhaForge:

本プロジェクトはLhaForge v1.6.7を基盤とするModernization Forkです。

License

LhaForgeは修正BSDライセンスで公開されています。

各External Archive DLL、Built-in Backendで使用するLibrary、その他Third-party Componentには、それぞれ個別のLicenseが適用される場合があります。

About

LhaForge v1.6.7を基盤に、v1系UI・外部アーカイバDLL互換を維持しながら、x64化・Built-in Backend・安全性向上・現代Windows対応を進めるModernization Fork。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages