A typical case for distributing a software package is patching complete directories or even whole directory structures.
BinPatch does a big deal to analyze the directories for similar files detecting even renamed files, detecting obsolete files and new files that cannot be built by a patching process.
But this is transparent to you as the user. Just give the path of the directories, one for a start state and one for the end state and the patch file will be generated by GenPatch like you learned above with single file patches. You might want to learn about the "Auto-detection of best matching start files" that GenPatch performs when working on directories. Many options give you control over the operation, but most often you need not use them at all.
You apply directory patch files, just as you apply normal file patches. The only difference is that replaced files are moved into a "Backup" folder and not overwritten. The backup can be disabled in future versions, but is done to allow the end user to go back to the previous state in case your update works worse than what you had.
All DoPatch processing of directory patch files is designed to allow the full rollback in the event of any kind of problem. This includes disk full situations, file access problems or whatever problem there may be. This will ensure that patch files won't leave the end user in between of two version with nothing working anymore, but instead revert to the previously existing version and informing him about the problem. This may be insufficient disk space for the new version, locked files that could not be replaced (software running) or just the absence of files you require to be present. Note that with locked files on Win32, the patch will suggest to do the replacement after a reboot. This is required in some cases when your program loads early or automatically.