Hard disks sometimes contain special files and folders that link to other files, folder and, sometimes, other volumes. These are knows as symbolic links, hard links, directory junctions, volume mount points, depending on the literature and the version of Windows.
The term reparse point is used in Microsoft documentation to designate the special attribute that identify any kind of link or other special property of a file or item.
By default, the Xceed Zip Control lets Windows automatically follow any link it encounters during scanning and zipping transparently.
In some situations, following links might not be desired. In these cases, the control provides options to control whether a link is followed or not.
You can append "<L>" to each item in the FilesToProcess property. This will prevent the component from recursing into sub-directories that are name surrogates (symbolic links, hard links, junctions points, volume mount points) for that entry. Normal directories will still be recursed into depending on the value of the ProcessSubFolders property.
For example, if the ProcessSubFolders is set to true and if the FilesToProcess property is set to the following value:
C:\Users\*<L>
Sub-directories that are volume mount point, junction and symbolic link reparse points will not be scanned for items to zip. Normal sub-directories will be scanned for files to zip as usual.
In Windows 7, the Users directory often contains a sub-directory called "All Users" that is a symbolic link and a "Default User" sub-directory that is a junction. In this example, both these directories will not be scanned.
The <L> suffix applies to the entry it is attached to only. if the value of FilesToProcess is
C:\Users\*<L>|C:\SomeFolder
reparse points will not be skipped when scanning C:\SomeFolder.
Some files are symbolic links or hard links to another file. You can exclude these files from a zip archive by using the ExcludedFileAttributes property. Add the xfaReparsePoint value to the ExcludedFileAttributes property. For example:
xfaVolume + xfaFolder + xfaReparsePoint
The component performs a special evaluation of the attribute. It will only exclude files that have a reparse point that is a name surrogate. That includes all types of links.
Once a file is excluded, it will be part of the ZipPreprocessingFile event. The bExcluded parameter will be true and the reason value will be xsrExcludedAttributes.
The ExcludedFileAttributes property filters items that already have been selected for processing. Its main use is to filter out individual files that link to other files.
The <L> suffix in FilesToProcess affects what sub-directories are selected for scanning to prepare the list of items to process. It also only affect directories.
Both the suffix and the ExcludedFileAttributes technique can be used at the same time.