Version 4.0.4+20220406 (Version Release Notes)
The Directory Synchronization Utility, SyncDirPas, synchronizes the file contents of directories on a personal computer running Microsoft Windows or Ubuntu Linux (and presumably other Linux distributions).
This program is free open source software licensed under the MIT License, Copyright © 2021 Rick Rutt.
The program compares file names and modification dates for a source directory and a target directory (and optionally any subdirectories).
-
If a newer file is found in the source directory, the program replaces the matching file in the target directory. (Optionally, older source files may also replace newer target files.)
-
If a file exists only in the source directory, the program copies the file to the target directory.
-
The program will optionally delete any files or directories that exist only in the target directory.
-
An option allows the synchronization to operate in both directions between the two directories.
-
Prior to copying or deleting any files, the program prompts the user for final confirmation. Upon completion of any copies or deletions, the program displays a log window that describes all file actions that were performed. (The confirmation dialog and log window do not appear if the Automatic option is enabled and the NotifyUser option is disabled.)
-
An option allows the program to automatically check for any file synchronization, or to wait for the user to complete a synchronization dialog. In this Automatic mode, the program may also launch another application upon completion.
This program may be used for the following purposes:
-
Program Copy Management: Automatically copy updated files from a shared file server directory to a directory on the computer's hard disk. The user's desktop hard disk is treated only as a local cache for the application programs. The file server contains the single centrally managed official copy of the application.
-
File Backup: Copy revised files from a working directory to a backup directory on another disk or on a file server.
-
Dual Computer File Coordination: Use an external USB drive (or diskette) as a transport mechanism to move data files, in both directions, between an office computer and a home computer. (Note: You cannot target a newly formatted diskette. At least one file or empty directory must be present on the diskette.)
The user may also design variations and combinations of these techniques.
Information about the development history and source code compilation of the SyncDirPas program appear at the end of this document in the Developer Information section.
- Download the SyncDirPas-version.zip file from the root folder of the GitHub.com repository https://github.com/rrutt/SyncDirPas (where version represents the current release version).
- Open the ZIP file. In Windows 10, simply double-click on the ZIP file to open it in the file explorer.
- Drag and drop the SyncDirPas folder from within the ZIP file to copy it to another location on your hard disk (or a USB drive).
- Open your local copy of the SyncDirPas folder in the file explorer.
- Double-click the SyncDirPas.exe file to run the program.
To uninstall the program, simply delete your local SyncDirPas folder.
- Download these 2 files from the bin sub-folder of the GitHub.com repository https://github.com/rrutt/SyncDirPas/tree/main/bin to a folder on your hard disk:
- SyncDirPas
- SyncDir.ini
-
Ensure the SyncDirPas file has the executable permission. From a Files window, right-click the file, select Properties, and use the Permissions tab to enable the Execute permission. To do this in a Terminal window, use the following command:
chmod +x SyncDirPas
-
To uninstall the program, simply delete the above 2 files.
Double-click the downloaded copy of SyncDirPas.exe (on Windows) or SyncDirPas (on Linux) to start the simulation.
The following dialog box appears when the program is started, and the Automatic option is disabled:
The Source Directory: and Target Directory: text entry fields default to the settings from the initialization file.
- Note: This program allows Universal Naming Convention (UNC) network directory paths to be entered into these directory text entry fields.
The disk folder icons to the right of these text entry fields open up a file system browse dialog to allow you to navigaTe and select the desired folder.
The Ignore File Types: text field can be used to exclude files with one or more extensions from consideration for synchronization. The Only Process File Types: text field can instead be used to restrict the files under consideration to those with specific extensions.
The Copy older files, Process hidden files (and directories), Synchronize both ways, Show error messages, Minimize log messages, Include subdirectories, Skip missing directories, Delete extra directories, Delete extra files, and Skip read-only target files check boxes also default to the settings from the initialization file.
The Synchronize button initiates the directory comparison. Before any files are actually copied (or deleted), a final confirmation dialog appears.
The Show Log button opens the log window at any time. However the log window opens automatically upon the completion of a file synchronization.
The Help button opens this help file in the default web browser.
The Exit button closes the program.
If the user confirms the synchronization, the following log window appears after the required files are copied or deleted:
Click the Copy Text button to copy the log text to the Windows clipboard. The text can be pasted into a text editor or word processing document.
Click the Clear Log button to erase the log text. This is useful if you want to adjust the options and perform another synchronization.
Click the Close button to dismiss the log window.
If the SynchronizeBothWays option is enabled, the log window includes synchronizations performed in both directions:
This window does not appear if the Automatic option is enabled, and the NotifyUser option is disabled.
If the NotifyUser option is enabled this dialog prompt appears after the synchronization performs its initial directory and file scan:
If the user clicks the Yes button, the actual synchronization proceeds.
Otherwise, if the user clicks the No button, the actual synchronization is cancelled.
This program reads an initialization file to obtain the settings of various options. These options control how the program runs.
The name of the initialization file, including a drive and directory path, may be passed to the program as the first command argument.
- Note A Universal Naming Convention (UNC) filename may be given for the initialization file.
An optional second argument indicates the section name within the initialization file to process.
If no initialization file command argument is provided, the program uses the default file name SyncDir.ini for the initialization file.
If the default initialization file cannot be found (in the current working directory), the program sets all options to their default values.
If no section name command argument is provided, the program uses the default section name SyncDir
If the indicated or default section is missing from the initialization file, the program sets all options to their default values.
The following option parameters are available:
Define the SourceDirectory option as a directory path string, optionally preceded by a drive designation, in the initialization file:
SourceDirectory=C:\SyncDir\TestData\Primary
This option defaults to the current working directory.
If the drive designation is omitted, the drive defaults to the same drive that contains the initialization file:
SourceDirectory=\SyncDir\TestData\Primary
Note: a UNC directory name may be used:
SourceDirectory=\\server\programs
You may optionally include subdirectories for synchronization.
Define the TargetDirectory option as a directory path string, optionally preceded by a drive designation, in the initialization file:
TargetDirectory=C:\SyncDir\TestData\Secondary
This option defaults to the current working directory.
If the drive designation is omitted, the drive defaults to the same drive that contains the initialization file:
TargetDirectory=\SyncDir\TestData\Secondary
Note: a UNC directory name may be used:
TargetDirectory=\\server\archive
You may optionally include subdirectories for synchronization.
The IgnoreFileTypes option is a text field in the initialization file that may be left empty, or may contain one or more file types (extensions) separated by commas:
IgnoreFileTypes=
IgnoreFileTypes=tmp
IgnoreFileTypes=log,tmp
This option defaults to an empty string.
Any files in the Source Directory or Target Directory that have any of the designated extensions are ignored for the purposes of synchronization.
To ignore files with an empty type (as in "myfile"), provide a single period (.) as the file type. For example:
IgnoreFileTypes=.
IgnoreFileTypes=tmp,.
The OnlyProcessFileTypes option is a text field in the initialization file that may be left empty, or may contain one or more file types (extensions) separated by commas:
OnlyProcessFileTypes=
OnlyProcessFileTypes=txt
OnlyProcessFileTypes=dat,txt
This option defaults to an empty string, indicating that all file types will be processed.
If this option is non-empty, only files in the Source Directory or Target Directory that have one of the designated extensions are considered for synchronization.
To process files with an empty type (as in "myfile"), provide a single period (.) as the file type. For example:
OnlyProcessFileTypes=.
OnlyProcessFileTypes=txt,.
Set this option in the initialization file.
This option is only relevant when the Automatic option is enabled.
If the Automatic and the NotifyUser options are both enabled, the program requests user confirmation before copying (or deleting) any files, and displays a log window after copying (or deleting) the files.
If the Automatic option is enabled, but the NotifyUser option is disabled, the program silently copies or deletes the necessary files without involving the user. The program does not display any confirmation dialog, does not display any log window.
The NotifyUser option defaults to being enabled.
Set this option in the initialization file.
This option defaults to being enabled. If any error occurs during a file copy or delete operation, a message box appears. The user may click the OK button to proceed to the next file; if the user clicks the Cancel button, the processing of any remaining files is aborted.
If this option is disabled, then error message boxes are suppressed during file copy and delete operations; the operation continues to the next file. Any errors are still shown in the log window upon completion (if NotifyUser is enabled).
Set this option in the initialization file.
This option defaults to being enabled. In this case, the only log messages written are for files that are actually copied or deleted.
If this option is disabled, the log messages describe all files and directories that were examined for synchronization, regardless whether they were copied or deleted.
Set this option in the initialization file.
When the CopyOlderFiles option is disabled, the program only copies source files that are newer than the corresponding target files.
When the CopyOlderFiles option is enabled, the program copies source files that are either older or newer than the corresponding target files.
This option defaults to being disabled.
ProcessHiddenFiles option
Set this option in the initialization file.
If ProcessHiddenFiles is disabled, then files with the System attribute or the Hidden attribute are ignored during copy or delete operations.
If ProcessHiddenFiles is enabled, then files with the System attribute or the Hidden attribute are processed in the same manner as other files.
This option defaults to being disabled.
Set this option in the initialization file.
When the IncludeSubdirectories option is disabled, the program only synchronizes the specified source directory with the specified target directory.
When the IncludeSubdirectories option is enabled, the program also synchronizes all subdirectories of the source directory with corresponding subdirectories of the target directory.
During the analysis pass, the program creates any missing target subdirectories that are needed to correspond to source subdirectories (provided the SkipMissingDirectories option is disabled). These created target subdirectories will remain as empty directories, even if the user cancels the actual synchronization.
The program simply ignores any subdirectories of the target directory that do not have corresponding subdirectories of the source directory. (Note that the role of source directory and target directory are swapped when the SynchronizeBothWays option is enabled. In such a case, the extra subdirectories of the original target directory will be processed as source subdirectories during the reverse synchronization.)
The DeleteExtraFiles option does not cause any subdirectories to be deleted, unless the DeleteExtraDirectories option is also enabled.
This option defaults to being disabled.
Set this option in the initialization file.
(This option is only relevant if the Include subdirectories option is enabled.)
When the SkipMissingDirectories option is disabled, the program skips any subdirectories of the specified source directory which do not have corresponding subdirectories already existing in specified target directory.
When the SkipMissingDirectories option is enabled, the program creates any missing target subdirectories that are needed to correspond to source subdirectories.
The DeleteExtraFiles option does not cause any subdirectories to be deleted. The DeleteExtraDirectories option must be enabled for extra target subdirectories to be deleted.
This option defaults to being disabled.
Set this option in the initialization file.
When the DeleteExtraDirectories option is disabled, the program ignores any extra subdirectories within the specified target directory that do not have corresponding subdirectories in the source directory.
When the DeleteExtraDirectories option is enabled, synchronization includes the deletion of subdirectories from the target directory that do not also exist in the source directory.
If any files exist within an extra target subdirectory, deletion of the directory will fail unless the DeleteExtraFiles and IncludeSubdirectories options are also enabled.
The DeleteExtraDirectories option defaults to being disabled.
When the DeleteExtraDirectories option is enabled, the SynchronizeBothWays option must be disabled.
Set this option in the initialization file.
When the DeleteExtraFiles option is disabled, synchronization consists only of copying newer files from the source directory to the target directory (and optionally any subdirectories).
When the DeleteExtraFiles option is enabled, synchronization includes the deletion of files from the target directory that do not also exist in the source directory. Note that files will be deleted regardless of the setting of the Read-Only file attribute.
This option never causes the deletion of any subdirectories, unless the DeleteExtraDirectories option is also enabled.
This option defaults to being disabled.
When the DeleteExtraFiles option is enabled, the SynchronizeBothWays option must be disabled.
Set this option in the initialization file.
If SkipReadOnlyTargetFiles is disabled, then files with the Read-Only attribute in the target directory that need to be copied or deleted will generate errors. This allows the user to identify specifically which files could not be copied.
If SkipReadOnlyTargetFiles is enabled, then files with the Read-Only attribute in the target directory that would otherwise need to be copied or deleted are simply bypassed.
This option defaults to being disabled.
Set this option in the initialization file.
When the SynchronizeBothWays option is disabled, the program only synchronizes files from the source directory to the target directory (and optionally in any subdirectories).
When the SynchronizeBothWays option is enabled, the program first synchronizes files from the source directory to the target directory. Next, the program reverses the roles of the directories, and synchronizes files from the original target directory to the original source directory.
This option defaults to being disabled.
When the SynchronizeBothWays option is enabled, the DeleteExtraFiles and DeleteExtraDirectories options must be disabled.
Set this option in the initialization file.
When the Automatic option is disabled, the program starts with the Synchronization Dialog.
When the Automatic option is enabled, the program proceeds to check for synchronization requirements between the source and target directories. If no synchronization is required, the program immediately exits without any user feedback. If the NotifyUser option is also enabled, the program still requests user confirmation before copying (or deleting) any files.
When the Automatic option is enabled, the RunCommand option may also contain a command line to be run after the program exits, if no synchronization was required; the AlternateRunCommand option may also contain a command line to be run if any synchronization actually occurred.
Note: If the Automatic option is enabled, the NextSection value is ignored.
This option defaults to being disabled.
Set this option in the initialization file.
When the Automatic option is enabled, the RunCommand option may contain a command string to be executed when the program exits, and no files needed to be copied or deleted during the synchronization. (If any files were copied or deleted, the AlternateRunCommand is executed instead.)
The command string consists of an executable program name, optionally followed by command arguments. If the RunDirectory option also contains a value, the working directory is set to that directory before the command string is executed.
If the executable program name or any of the arguments contains any spaces it should be enclosed in quotes (").
When the Automatic option is disabled, the RunCommand option is ignored.
This option defaults to an empty string, meaning no command is executed when the program exits.
Set this option in the initialization file.
When the Automatic option is enabled and the RunCommand option has a value, the RunDirectory option may contain a value indicating the working directory to use when executing the RunCommand command string.
When the Automatic option is disabled, the RunDirectory option is ignored.
This option defaults to an empty string, meaning the current working directory remains the same as when the SyncDirPas.exe program was started.
Note: A UNC directory name may be used:
RunDirectory=\\server\programs
Set this option in the initialization file.
When the Automatic option is enabled, the AlternateRunCommand option may contain a command string to be executed when the program exits, and some files were copied or deleted during the synchronization. (If no files needed to be copied or deleted, the RunCommand is executed instead.)
The intention is for the AlternateRunCommand to run any registration code needed by an updated system just synchronized from a server directory to a local execution directory on the desktop. The normal RunCommand simply runs the unmodified application. The AlternateRunCommand would first register any updated files, then would itself launch the updated application.
The command string consists of an executable program name, optionally followed by command arguments. If the AlternateRunDirectory option also contains a value, the working directory is set to that directory before the command string is executed.
If the executable program name or any of the arguments contains any spaces it should be enclosed in quotes (").
When the Automatic option is disabled, the AlternateRunCommand option is ignored.
This option defaults to the value of the RunCommand option.
Set this option in the initialization file.
When the Automatic option is enabled and the AlternateRunCommand option has a value, the AlternateRunDirectory option may contain a value indicating the working directory to use when executing the AlternateRunCommand command string.
When the Automatic option is disabled, the AlternateRunDirectory option is ignored.
This option defaults to the value of the RunDirectory option.
Note: A UNC directory name may be used:
AlternateRunDirectory=\\server\programs
Set this option in the initialization file.
If NextSection is blank or omitted, then a single synchronization is performed using the settings of the current section.
NextSection may contain a value that is the name of another section in the initialization file. In this case, after the synchronization defined by the current section completes, the program proceeds to execute the synchronization defined by the section named in the NextSection option.
A chain of sections can be defined by appropriately setting the NextSection option in multiple sections of the initialization file.
This allows a sequence of directory trees to be backed up to a network drive or a removable hard disk or USB drive using a single click of the Synchronize button.
Note: If the Automatic option is enabled, the NextSection value is ignored.
This option defaults to being blank.
In Windows, a command argument may be defined for a shortcut icon by right clicking on the shortcut icon, then selecting the Properties menu item.
· Select the Shortcut tab on the resulting dialog box.
· In the Target: field, put a blank after the program name, followed by the command argument. Separate multiple command arguments by a blank.
· Click the OK button.
<a name="CurrentWorkingDirectory>
A current working directory is the location in the file system in which a running application first looks for any files it needs to operate.
In Windows, a working directory may be defined for a shortcut icon by right clicking on the shortcut icon, then selecting the Properties menu item.
· Select the Shortcut tab on the resulting dialog box.
· In the Start in: field, type the drive letter and directory path.
· Click the OK button.
An initialization file has the file extension .ini and contains option parameter settings. The file can be edited with any text editor, such as the Windows NotePad. Comments in this file are preceded by a semicolon (;).
For many of the examples in this help file, the initialization file has the following contents (using the default section name SyncDir):
[SyncDir]
SourceDirectory=C:\SyncDir\TestData\Primary
TargetDirectory=C:\SyncDir\TestData\Secondary
IgnoreFileTypes=
OnlyProcessFileTypes=
NotifyUser=yes
ShowErrorMessages=yes
MinimizeLogMessages=yes
CopyOlderFiles=no
ProcessHiddenFiles=no
SynchronizeBothWays=no
IncludeSubdirectories=no
SkipMissingDirectories=no
DeleteExtraFiles=no
DeleteExtraDirectories=no
SkipReadOnlyTargetFiles=no
Automatic=no
RunCommand=
RunDirectory=
AlternateRunCommand=
AlternateRunDirectory=
NextSection=
Note: How to associate initialization files to Open With the SyncDirPas.exe program in Windows 10:
- Create (or rename) an initialization file as a text file with the file type .syncdir (or some other unique file type not already in use).
- Right-click the .syncdir file and select the Open with... item from the context menu.
- A prompt dialog How do you want to open this file? appears.
- Make sure the Always use this app to open .syncdir files check-box is enabled.
- Click on the More apps link.
- Scroll the list of applications to the bottom and click "Look for another app on this PC.
- An Open with file dialog appears. Browse to your local copy of SyncDirPas.exe and click Open.
- Double-click your .syncdir file to confirm that the SyncDirPass program opens and is set to the options in that file.
A section name is defined in an initialization file by enclosing it in square brackets on a line by itself. If no section is indicated as a command argument, this program uses the default section name SyncDir. The following initialization file has two sections called OneSection and AnotherSection:
[OneSection]
SourceDirectory=C:\Data
TargetDirectory=C:\Files
[AnotherSection]
SourceDirectory=C:\OldData
TargetDirectory=C:\OldFiles
The following default values are used for each option parameter if no value is specified, or if no initialization file is found:
[SyncDir]
SourceDirectory=
; The above command uses the current working directory.
TargetDirectory=
; The above command uses the current working directory.
IgnoreFileTypes=
OnlyProcessFileTypes=
NotifyUser=yes
ShowErrorMessages=yes
MinimizeLogMessages=yes
CopyOlderFiles=no
ProcessHiddenFiles=no
SynchronizeBothWays=no
IncludeSubdirectories=no
SkipMissingDirectories=no
DeleteExtraFiles=no
DeleteExtraDirectories=no
SkipReadOnlyTargetFiles=no
Automatic=no
RunCommand=
RunDirectory=
; The above command defaults to the current working directory.
AlternateRunCommand=
; The above option defaults to match RunCommand.
AlternateRunDirectory=
; The above option defaults to match RunDirectory.
NextSection=
An option is enabled by setting it to true, t, yes, y, or 1.
Lowercase, uppercase, or mixed case can be used.
For example:
ThisOption=yes
AnotherOption=true
SomeOption=1
MyOption=t
YourOption=y
An option is disabled by setting it to false, f, no, n, or 0.
Lowercase, uppercase, or mixed case can be used.
For example:
ThisOption=no
AnotherOption=false
SomeOption=0
MyOption=f
YourOption=n
Using Universal Naming Convention (UNC) notation, a directory name does not start with a disk drive letter following by a colon (:). Instead, the name starts with two backslashes (\) followed by a network server node name, followed by another backslash, then a shared service name:
\\node\service
Directory names can also be appended with backslashes:
\\node\service\dir1\dir2
This technique is used to maintain separate copies of an application on each user's hard disk. A shared file server directory holds the master copies of the application files.
Whenever one or more application files must be updated, the support team manually copies the new files to the file server master directory.
Each user's workstation has a shortcut icon defined on the desktop and named for the actual application program to be run.
This shortcut icon defines its Target: property to point to the SyncDirPas.exe program on the user's hard disk, followed by command argument that points to an initialization file in the file server master directory. Optionally, the shortcut icon includes a second command argument containing an initialization section name.
(An administrator may define multiple initialization files with different names in the same master directory, to meet the needs of various application programs. Equivalently, the administrator may define a single initialization file with multiple sections, each containing the options for a different application program; use the second command argument in each shortcut icon to indicate the section name to use.)
The initialization file section defines the SourceDirectory option to be the file server master directory, and the TargetDirectory option to be on the user's hard disk.
The Automatic option is enabled, and the SynchronizeBothWays option is disabled.
The CopyOlderFiles option will typically be enabled; this allows the administrator to back out an installation by replacing the older files into the file server master directory.
The DeleteExtraFiles and DeleteExtraDirectories options might also be enabled, to remove obsolete files and subdirectories from the target directory on the user's hard disk.
(Typically, the IncludeSubdirectories option is disabled, unless the application requires the presence of subdirectories within its main directory.)
The RunDirectory and RunCommand options in the initialization file define the actual application program (and any optional command arguments) to be run after the synchronization completes.
If special registration code must be run whenever the application is updated with new executable files, use the AlternateRunDirectory and AlternateRunCommand options.
The intention is for the AlternateRunCommand to run any registration code needed by an updated system just synchronized from a server directory to a local execution directory on the desktop. The normal RunCommand simply runs the unmodified application. The AlternateRunCommand would first register any updated files, then would itself launch the updated application.
If no distinction needs to be made, simply omit the declarations for AlternateRunCommand and AlternateRunDirectory. They will then default to match the values for RunCommand and RunDirectory.
Whenever the user clicks on the shortcut icon in the Start menu or on the desktip, the SyncDirPas.exe program runs and compares the file server master files with the application files on the user's hard disk.
Most of the time, no changes are needed, and the program launches the unmodified RunDirectory\RunCommand application program.
Suppose an administrator needs to update some application files on the file server. Since application users are referencing the files on their own hard disks, no locks are being held on the files in the file server master directory. Thus, the master files can be updated at the administrator's convenience.
The next time the user clicks the application shortcut icon, the SyncDirPas.exe program detects that files must be copied (and possibly deleted). After updating the user's local hard disk, the synchronization program launches the AlternateRunDirectory\AlternateRunCommand application program.
This technique is used to periodically copy updated files from a project on the user's hard disk to a backup directory. A shared file server directory or external USB drive holds the backup copies of the project files.
The user's workstation has a SyncDir shortcut icon defined the Start menu or on the desktop that runs the SyncDirPas.exe program. This SyncDir icon includes a command argument that points to an initialization file somewhere on the user's hard disk, optionally followed by an argument indicating the section name to use.
The initialization file defines the SourceDirectory option to be the project directory on the hard disk, and the TargetDirectory option to be the project backup directory on the file server or USB drive. The Automatic, CopyOlderFiles, SynchronizeBothWays, DeleteExtraFiles, and DeleteExtraDirectories options are disabled. The IncludeSubdirectories option may optionally be enabled.
Periodically, the user clicks the SyncDir icon to run the program. The program starts with the Synchronization Dialog initialized to match the option parameters. The user simply clicks the Synchronize button to proceed with the backup.
This technique is used to periodically copy updated files for a project between the hard disks of two separate computers, such as a work computer and a home computer.
A USB drive is used as the transfer medium.
The user's workstation has a SyncDir icon defined the Start menu or on the desktop that runs the SyncDirPas.exe program. This SyncDir icon includes a command argument that normally points to an initialization file somewhere on the user's hard disk. The option parameters receive their default values.
Whenever the user is leaving one computer, they insert the USB drive. The user starts the SyncDirPas.exe program by clicking on its shortcut icon. This displays the **Synchronization Dialog.
The user selects the project directory on the hard disk as the Source Directory:, and the USB drive as the Target directory:. The user may toggle the Synchronize both ways, Delete extra files, Delete extra directories, or Include subdirectories check boxes. The user then clicks the Synchronize button.
The USB drive is removed and carried to the other computer, where the process is repeated. This time, the user selects the USB drive as the Source directory:, and the project directory on the hard disk as the Target directory:.
When the user is ready to return to the first computer, they synchronize the second computer's directory onto the USB drive, then synchronize the USB drive onto the first computer's directory.
The original version 1 of the Directory Synchronization program was written as a 16-bit program in Visual Basic in 1997 and was known simply as SyncDir.
A version 2 was created in 2002 with various improvements.
A 32-bit version 3 was created in 2005 using Visual Basic 6.0 and renamed SyncDir3 to allow both the 16-bit version 2 and 32-bit version 3 to co-exist.
Programs created in Visual Basic 6.0 are still supported for execution in Windows 10. However the Visual Basic 6.0 integrated development environment (IDE) is no longer supported:
The SyncDir3 program is still available from the following SourceForge repository:
The Visual Basic source code for SyncDir3 is also available in the SyncDir3 sub-folder of this GitHub.com repository.
In 2020 the decision was made to re-implement the Directory Synchronization program for Windows 10 using a supported programming language and development environment.
The Free Pascal implementation of the Object Pascal programming language was chosen. One benefit of this decision is that a single self-contained executable file, SyncDirPas.exe can be produced, without requiring any separate run-time library files.
The integrated development environment for Free Pascal is the Lazarus IDE for Free Pascal.
Download the Lazarus IDE, including Free Pascal, from here:
After installing the Lazarus IDE, clone this GitHub repository to your local disk. Then double-click on the src\SyncDirPas.lpr project file to open it in Lazarus.
Note: Using the debugger in the Lazarus IDE on Windows 10 might require the following configuration adjustment:
When Lazarus includes debugging information the executable file is relatively large. When ready to create a release executable, the file size can be significantly reduced by selecting the menu item Project | Project Options ... and navigating to the Compile Options | Debugging tab in the resulting dialog window. Clear the check-mark from the Generate info for the debugger option and then click the OK button. Then rebuild the executable using the Run | Build menu item (or using the shortcut key-stroke Shift-F9).
The README.md file can be edited in MarkdownPad 2, which can be downloaded from here:
After making any changes to the README.md file, select the menu item File | Export | Export HTML.
In the resulting file save dialog, rename the result file to SyncDirPas.html and save it to the src sub-folder.
- Set the desired release version by selecting the menu item Project | Project Options ... and navigating to the Project Options | Version Info tab in the resulting dialog window. Click the OK button after making any changes.
- Build the SyncDirPas.exe executable file without any debug information (as described in a previous section).
- Double click the PrepareZipFileFolder.bat script file in the root folder of your locally cloned copy of this GitHub repository.
- The script will perform some file operations, along with a few pause steps. Dismiss each pause step by pressing the space bar.
- An extra SyncDirPas sub-folder will be created (if it does not already exist) containing the desired release files for download.
- Right-click the extra SyncDirPas sub-folder and select Send to | Compressed (zipped) folder in the context menu.
- Optionally rename the resulting ZIP file by appending the version information to the file name.
Corrected adaptive control alignments for Microsoft Windows to compensate for different label font metrics vs Linux.
Compiled on Ubuntu Linux version 20.04.4 LTS and included resulting SyncDirPas executable file in the bin sub-folder, along with a default SyncDir.ini initialization file.
Show the Product Version on the main form title bar.
Minor refinement:
- Write a final log message upon ultimate completion of all synchronizations to provide final feedback if the Log Window is already open. Indicate the number of initialization sections successfully processed.
Minor refinements:
- Corrected defaulting of omitted SourceDirectory and TargetDirectory options in the initialization file to use the current working directory, as already documented.
- Added notes to the initialization file section in this document on use of a unique file type configured to Open With the SyncDirPas.exe program.
- Removed the restriction that enabling DeleteExtraDirectories would also require enabling IncludeSubdirectories.
- Avoided a run-time exception if no value is given for RunCommand (or AlternateRunCommand. Instead, no extra action is performed.
Initial Pascal release.



