NanaZip Documentation

repository·main·Indexed 12 days ago

https://github.com/m2team/nanazip

Documentation for NanaZip, including system-wide registry policies for security mitigations and archive handler restrictions, support for various file systems and hash algorithms, and build configurations via NanaZip.Project.

Tokens
27.1K
Snippets
45
Records
82
Agent score
96%

What's inside NanaZip

  1. Understand the role of NanaZip.Project in the build process

    main

    The NanaZip.Project repository contains shared MSBuild configurations used across the entire NanaZip project. It also provides precompiled binaries required to enable an 'out-of-the-box' building experience for NanaZip.

    These binaries are managed by the NanaZip.Build.Tasks project found within the NanaZip.MaintainerTools.sln solution at the root of the main NanaZip source repository. They are automatically updated via GitHub Actions whenever changes are made to the NanaZip.Build.Tasks implementation.

  2. How NanaZip build and revision numbers are calculated

    main

    The components of the Binary Version (<Major>.<Minor>.<Build>.<Revision>) are derived as follows:

    • Build Number: The total number of days elapsed since August 31, 2021 (the date the first version of NanaZip was created and published).
    • Revision Number: The count of releases occurring on the specific day corresponding to the build number, starting from zero. The first release of a day is revision 0, the second is 1, and so on.
  3. Configure archive handler and codec handler restrictions via registry

    main

    NanaZip supports registry-based configuration for enforcing security and restriction policies. These settings can be used to manage:

    • Mark of the Web (MoTW) enforcement policies.
    • Archive handler and codec handler restrictions.
    • Disabling security mitigation policies (useful for debugging and compatibility issues).

    Additionally, NanaZip provides Group Policy Administrative Templates (ADMX/ADML) for enterprise management of these settings.

  4. Understand the NanaZip distribution flavors

    main

    Starting from version 3.0, NanaZip provides two distinct distribution flavors:

    1. NanaZip: The standard distribution.
    2. NanaZip Classic: A separate flavor (note: as of version 3.0, the Classic flavor may not be ready/available).

    Additionally, NanaZip Sponsor Edition is available for version 3.0 and onwards.

  5. Check NanaZip system requirements and compatibility

    main

    NanaZip's system requirements have evolved across versions:

    • Windows 10 Version 2004 (Build 1) or later: Required for version 2.0 and onwards to support XAML Islands.
    • 32-bit x86 Support: The packaged version of NanaZip has removed support for 32-bit x86 because supported 32-bit Windows versions do not support running on 32-bit only x86 processors.
    • Windows Vista RTM (Build 6000.16386): The Core Library and Self Extracting Executable implementation ensures support for this version.
  6. Understand NanaZip release tags and lifecycle

    main

    NanaZip uses specific tags to indicate the stability and lifecycle stage of a release. These tags differ depending on whether you are using NanaZip Preview or the Stable release.

    Tag Lifecycle Timeline

    The progression of tags for a release cycle follows this pattern: "Preview" $\rightarrow$ "Final" $\rightarrow$ "No Tag" $\rightarrow$ {"Update Final" $\rightarrow$ "Update"} $\rightarrow$ (Repeat for next version)

    Tag Definitions

    NanaZip Preview Tags

    • "Preview": Initial testing phase.
    • "Final": The final testing phase before a stable release. The last "Final" release in Preview is implementation-identical to the corresponding stable release. Multiple "Final" releases may occur if major issues are found.
    • "Update Final": Used to validate updates after a stable release has been issued. This corresponds to the stable "Update" release.

    Stable Release Tags

    • "No Tag": Indicates the primary stable release for a minor version. There is only one stable release per minor version.
    • "Update": Indicates a stable update to a previously released minor version.
    6.5 Preview (6.5.1638.0) -> 6.5 Preview (6.5.1742.0) -> 6.5 Final
    -> 6.5 -> 6.5 Update Final -> 6.5 Update -> 7.0 Preview -> ...
  7. Supported hash functions via K7Pal

    main

    NanaZip uses the K7Pal Platform Abstraction Layer to provide hash function interfaces implemented via the Windows CNG API. The following hash functions are available through this interface:

    • MD2
    • MD4
    • MD5
    • SHA-1
    • SHA-256
    • SHA-384
    • SHA-512
    • ED2K (implemented as the K7Pal MD4 wrapper in NanaZip.Codecs)
  8. Understand NanaZip version formats

    main

    NanaZip uses two distinct versioning formats depending on the context:

    1. Simple Version: Used for human-readable identification, following the pattern <Major>.<Minor> <Tag> (e.g., 9.0 Preview 1).
    2. Binary Version: Used for technical identification in builds, following the pattern <Major>.<Minor>.<Build>.<Revision> (e.g., 9.0.2654.0).
    Simple Version: 9.0 Preview 1
    Binary Version: 9.0.2654.0
  9. Claim free Sponsor Edition access as a contributor or legacy sponsor

    main

    If you are eligible for the free Sponsor Edition (as a NanaZip source code contributor, a Project Mile contributor, or a sponsor prior to March 30, 2024), you must contact the author to receive more information on how to claim it.

    Contact Information:

    • Email: Kenji.Mouri@outlook.com
  10. Disable the extract-on-open feature

    main

    NanaZip includes an 'extract-on-open' feature. You can manage this behavior in two ways:

    1. Temporarily: Hold the Shift key while opening a file to bypass extraction.
    2. Permanently: Go to Settings > Integration tab and disable "Extract on open" at the bottom of the window.
  11. Add images to the NanaZip website

    main

    Place all new images in the src/assets/images directory. When referencing images in Astro components, use the standard import syntax and the <Picture /> component.

    For performance optimization, use the loading attribute to specify the loading strategy:

    • eager: Use for images 'above the fold' (visible immediately on page load).
    • lazy: Use for images 'below the fold' (require scrolling to see).
    ---
    import exampleImage from '[path to picture]';
    ---
    
    <Picture
      src={exampleImage}
      formats={["avif", "webp"]}
      alt="[alt text]"
      loading="[loading mode]" />