Abstract: Systems and methods of creating and applying a software package (commonly referred to as “patch” or “patch package”) that enables to more efficiently create an updated version of a software package, by applying the patch over the original software version. Embodiments of the present invention may require more resources, e.g., time, processing power and storage space, to prepare (create) a patch (compared to differencing modules of the art) as they spend more time analyzing the logical structure of each version, but the result is oftentimes a smaller and more efficient patch package. Also are disclosed systems and methods of compressing and decompressing a patch package, whether as an update or by using a single-archive input.