UpdateIt!

UpdateIt! is the application designed for the synchronization of the source folder's content with the content of other (target) folder on a local computer or (and) a remote FTP server. This is wizard that I wrote to fast and comfortable update of my own personal website. It searches (at request — recursively) all files in the source folder that are modified after specified date/time. It can copy found files (everyone or selected) to the target folder with preservation of an initial structure of the subfolders. This application allows to upload all files from the updated folder (with preservation of its structure) to the specified FTP server, to compress this folder in the same named zip-archive, to send one to the given E-mail.

When you first run the application on your computer you will be asked to provide your e-mail and outgoing mail server to be used to send crash reports (in case of their occurrence). If you are not sure which outgoing SMTP server to specify look at your default E-mail client settings. Notice that the specified address will only be stored locally and never will be published or sent anywhere else. But if you still worry about a spam feel free to use some fake address such as „anonymous@unknown.org“ and provide a real one in the error description typed by yourself.

Step #1 is the selection of source and target folders. It is required to choose a name of the folder for searching the updated files and a name of the folder where these updated files will be copied or moved. Also, it is required to specify the date and time since which files in the source folder are considered updated. If Include subfolders option is set , the files searching will be carried out recursively — in the source folder and in all folders inside it. In the field Exclude mask(s) there is possibility to type one or several masks of files (separated from each other by commas) which should be excluded from search. To delete the content of the target folder as a preliminary one it is possible to set Cleanup this folder first option (if Delete files to Recycle Bin if possible option is set files will be removed to the Recycle Bin on conditions that its usage is enabled by system options). Setting Compare contents of the newer and existing older files option allows to exclude from results of search those files which binary contents do not differ from the existing copies in the target folder.

Step #2 is reviewing the list of the updated files. On this step you can see the list of the updated files found in the source folder. The Name, the extension, the relative path in the source folder, and also the date and time of the last modification are shown for each file. In order to remove file(s) from this list (and thereby to exclude them from the further processing) it is required to mark corresponding line(s) and to click the Remove from list button. Note that in this case files leave only the list, but still stay in the source folder.

Step #3 is actions selection. On this step it is required to choose, what exactly should be done with the found files. Copying or moving files to the target folder are obligatory actions that are chosen by means of the group Action to perform switches. Besides this, it is possible to upload the target folder contents (with full structure preservation) to the specified folder on a FTP server. For this purpose set Also upload file(s) to the FTP server option and fill the fields of FTP Settings group, having specified the address and the port of a server, as well as the login and the password for the access. To compress a target folder in the same named zip-archive, set Also ZIP folder with the copied/moved file(s) option. This archive file can be sent as an attachment to the given E-mail address. For this, set Also send ZIPped folder via e-mail option and fill fields of Mail Settings group, having specified addresses of the sender and the recipient, and also the SMTP-server which will be used for sending the mail. Note that this feature is accessible only in the case when the key HKEY_CURRENT_USER\Software\Elijah Zarezky\UpdateIt!\SMTP in the system registry contains DWORD named Enable and its value is different from zero.

Step #4 is processing the files. On this step it is possible to watch the progress of copying (or moving) the updated files from the source folder into the target folder, of uploading files from the target folder to the given FTP server, compression of the target folder and sending the given archive to the E-mail address that was specified earlier.

System requirements:

Plans for the future:

UpdateIt! Pro

This edition of the UpdateIt! has the following differences from the standard.

  • Beyond standard Deflate, BZip2 compression method is supported. It compresses files more efficiently than the Deflate algorithm, but is slower. It is supported by 7-Zip since version 4.5x, by PKZIP since version 4.6 and by WinZip since version 10.0. Earlier versions of these programs will not decompress archives that use the BZip2 algorithm.
  • AES encryption with key sizes 128-bit, 192-bit and 256-bit is supported for the produced archive files. The format of AES encrypted data conforms to the WinZip AES Encryption Specification. It is the preferred way to ensure that your data is secure. UpdateIt! Pro encrypts files the way the WinZip 11.0 does.
  • If the number of the files to compress exceeds 65 535 or size of an archive should be greater than 4 gigabytes then Zip64 format will be automatically used. The Zip64 format is an extension to the standard Zip format that practically removes limits in sizes and item numbers within a zip archive.
  • This application is distributed as a freeware but closed source due to the ZipArchive Library Commercial License Agreement.

Export/import of options

Since version 1.0.2598, in the application there is a feature of options export/import (only under Windows 2000/XP/2003) which can be useful at re-installation of the operating system. Corresponding commands are in the system menu of the main window. Note that the export of options is possible at any stage of work of the application, but the import of options is possible only on a „zero“ step (on the Welcome! page).

Command-line switches

The first group of keys allows to set the name of a source folder and the condition of files search in it, as well as the name of a target folder and parameters of work with it.

SourceDir-Name:<folder_name>
Full name of the source folder in which search of the updated files should be done. If this name contains spaces it should be quoted; otherwise quotes' usage is acceptable, but isn’t obligatory.
SourceDir-Recurce:<0|1>
If the value of this key is equal to 1, the search of files is carried out recursively (in the source folder and all folders inside it), and if the value is equal to 0, search is carried out only in the source folder. Any other value will be interpreted as 1.
SourceDir-Exclude:<masks_list>
One or several masks of files (separated from each other by commas) which should be excluded from search .
TargetDir-Name:<folder_name>
Full name of the target folder where the updated files should be copied or moved. If this name contains spaces it should be quoted; otherwise quotes' usage is acceptable, but isn’t obligatory.
TargetDir-CleanupFirst:<0|1>
If the value of this key is equal to 1, target folder will be completely cleared before the files begin being copied or moved to it, and will not if the value is equal to 0. Any other value will be interpreted as 1.
UseRecycleBin:<0|1>
If the value of this key is equal to 1, files from the target folder will be removed to the Recycle Bin (if its usage is enabled by system options), and if the value is equal to 0 files will be removed permanently. Any other value will be interpreted as 1.
SourceDir-WriteTime:<date_time>
This is the date and time of files' modification in the source folder after which they are considered updated.
CompareContents:<0|1>
If the value of this key is equal to 1 and if the copy of the updated file from the source folder is available in the target folder, copying or moving will be carried out only in the case when binary contents of these files are different. It allows to carry out smart incremental updating of the target folder. The value of 0 results in „unconditional“ execution of file operations. Any other value will be interpreted as 0.

The second group of keys determines the actions that need to be performed with the updated files found in the source folder.

MoveFiles:<0|1>
If the value of this key is equal to 1, updated files will be moved from the source folder to the target folder, and if the value is equal to 0, these files will be copied. Any other value will be interpreted as 0.
UploadFiles:<0|1>
If the value of this key is equal to 1, updated files will be uploaded to the specified FTP server and will not if the value is equal to 0. Any other value will be interpreted as 0.
ZipFiles:<0|1>
The archive file in ZIP format will be created from a target folder if the value of this key equals to 1, and such file will be not created if the value equals to 0. Any other value will be interpreted as 0.
SendFiles:<0|1>
Archive file with the target folder will be sent to the specified e-mail address if the value of this key is equal to 1, and will be not if the value is equal to 0. Any other value will be interpreted as 0.

The third group of keys specifies the FTP server for updated files and parameters of interaction with it.

FTP-Server:<server_name>
FTP server name. The prefix „ftp://“ is not necessary to specify.
FTP-Port:<port_number>
The port through which connection is established. Standard value is 21.
FTP-Login:<login>
Login (user’s name on this server).
FTP-Password:<password>
The user’s password.
FTP-Root:<folder_name>
Root folder on a server into which it is necessary to upload files from a target folder on a local computer (with preservation of its structure).
FTP-UsePassiveMode:<0|1>
If the value of this key is equal to 1, the so-called „passive operating mode“ with a server will be used, and if the value of this key is equal to 0 — the usual one. Any other value will be interpreted as 0.

The fourth group of keys sets parameters of the SMTP connection that is used for sending ZIP-archive with the target folder to the specified e-mail address.

SMTP-Enable
To enable SMTP usage. Value of this key is ignored; therefore it is no use to specify it.
SMTP-From:<sender’s_address>
It is an E-mail address of the mail sender.
SMTP-MailTo:<recipient’s_address>
It is an E-mail address of the recipient of the mail.
SMTP-Subject:<letter_subject>
It is à subject of the mail. If the subject contains blanks, it is necessary to put in quotes the value of this key; otherwise, quotes' usage is acceptable, but not obligatory.
SMTP-Host:<server_name>
It is the name of the SMTP server which should be used for sending the mail.
SMTP-Port:<port_number>
It is the port through which the connection is established. Standard value is 25.
SMTP-Authentication:<0|1|2|3|4>
The Value of the this key defines the method of the authentication, that is used at the access to a server. 0 corresponds to the absence of the authentication; 1 — to CRAM-MD5 method; 2 — to Login method; 3 — to Plain method; 4 — to NTLM method. Any other value will be interpreted as 0.
SMTP-UserName:<user_name>
It is the user name (at the usage of the authentication).
SMTP-Password:<password>
It is the user password (at the usage of the authentication).
SMTP-UseSSL:<0|1>
If the value of this key is equal to 1, the so-called „Secure Sockets Layer“ protocol will be used for the connection with the server. This protocol guarantees safe data transmission on the network by means of combining cryptographic system with the open key and block encrypting of data. If the value is equal to 0, the usual SMTP protocol will be used. Any other value will be interpreted as 0.
SMTP-CharSet:<character_set>
It is the encoding of the mail body (for example, "windows-1251") which will be specified in corresponding SMTP header.

The fifth group of keys sets the parameters of creation of ZIP-archive with a target folder.

ZIP-Method:<0|1>
It is the method (algorithm) used for compression. 0 means „Deflate“ algorithm, and 1 — „BZip2“ algorithm. Any other value will be interpreted as 0. Attention: this key is recognized only by UpdateIt! Pro edition.
ZIP-Compression:<0|1|2|3>
It is the compression level of archive. 0 means absence of compression; 1 — the fastest compression; 2 — default compression (optimal on a ratio of speed and size); 3 — the maximum compression. Any other value will be interpreted as 2.
ZIP-Encryption:<0|1|2|3|4>
It is the method of archive encrypting. 0 means absence of encrypting, and 1 — the standard encrypting supported by ZIP algorithm. The values of 2, 3 and 4 corresponds to AES-128, AES-192 and AES-256 encryption respectively. Attention: these three values will be recognized only by UpdateIt! Pro edition. Any other value will be interpreted as 0.
ZIP-Password:<password>
It is the password on the encrypted archive.

Sixth and last group of keys sets various general parameters.

Font-FaceName:<font_name>
It is the name of a font which will be used by windows of the application. The value of this key is used only if the key Font-PointSize is specified and this key has a correct numeric value.
Font-PointSize:<font_size>
It is the size (in points) of a font which will be used by windows of the application. The value of this key is used only if the key Font-FaceName is specified.
ResponseFile:<file_name>
It is the name of the text file that contains other keys of the command line for the application. If the path to a file is not specified at all it will be considered to be in the current folder; if the relative path is specified it will be considered to be specified regarding the current folder. Each line of such file can contain one or several keys. The Usage of such files allows to create unlimited number of the shortcuts that give fast access to the typical scripts of the application use. If this key is specified in the command line all other keys will be ignored.
DontSaveInput
Not to remember the user input (either transmitted by means of the command line or set by means of the graphic interface). The value of this key is ignored, therefore its indication is not important.

At present the use of keys of the command line does not automate the work of the application completely, it only substitutes the specified parameters into corresponding controls. It allows to accelerate user’s work as much as possible if typical scripts of search and processing of the updated files are present. Each of the keys can be used independently if it has not been stipulated in a different way (as in case of the keys Font-FaceName and Font-PointSize).

In any case, the keys of the command line have a priority over the corresponding options that are kept at the system registry. For example, if the command line contains the key SourceDir-Recurce that has the incorrect value of 4, and the corresponding parameter in the system registry has the correct value of 0, the final „result“ will be 1 as the interpretation of key value from the command line.

Version history

UpdateIt! On Google Code

Since December, 2007, the UpdateIt! project, is placed on Google Code as well. Its main page is accessible at http://update-it.googlecode.com. It is possible to find the latest development builds as well as the mirror of Subversion repository with all revisions of project sources there. For anonymous access to reading this mirror and receiving local copies of all files that are required for independent building, It is necessary to perform the following steps.

  1. Create somewhere in file system a new folder with the name GoogleCode for example.
  2. Launch Command Prompt, go to this folder and sequentially execute these commands:
    svn checkout http://repositorium.googlecode.com/svn/trunk/ Repository
    svn checkout http://update-it.googlecode.com/svn/trunk/ UpdateIt

After that, to build the project, it is enough to open the file UpdateIt.2008.sln from the folder GoogleCode\UpdateIt in Microsoft Visual Studio 2008 environment, to set UpdateIt as the startup project and then to execute Build Solution command. Completely automated building of the project and its distribution kits can be executed by means of utility NAnt after its assignment on an input file UpdateIt.2008.build — it is necessary to go to the GoogleCode\UpdateIt folder and then to execute a corresponding command from Visual Studio 2008 Command Prompt.


Copyright © 2002—2011 Elijah Zarezky, english translation by Alla Dmitrieva