private void Compress()
{
//setup settings.
try
{
_sevenZipCompressor = new SevenZipCompressor(tempPath);
_sevenZipCompressor.ArchiveFormat = _format;
_sevenZipCompressor.CompressionMethod = CompressionMethod.Default;
_sevenZipCompressor.DirectoryStructure = true;
_sevenZipCompressor.IncludeEmptyDirectories = true;
_sevenZipCompressor.FastCompression = _fastcompression;
_sevenZipCompressor.PreserveDirectoryRoot = false;
_sevenZipCompressor.CompressionLevel = _compresstionlevel;
_sevenZipCompressor.Compressing += Compressing;
_sevenZipCompressor.FileCompressionStarted += FileCompressionStarted;
_sevenZipCompressor.CompressionFinished += CompressionFinished;
_sevenZipCompressor.FileCompressionFinished += FileCompressionFinished;
try
{
if (_password != null)
{
for (int i = 0; i < _fileAndDirectoryFullPaths.Count; i++)
{
if (!Directory.Exists(_fileAndDirectoryFullPaths[i]))
continue;
//Compress directories
var strings = _fileAndDirectoryFullPaths[i].Split('/');
if (_fileAndDirectoryFullPaths.Count == 1)
{
_sevenZipCompressor.CompressDirectory(_fileAndDirectoryFullPaths[i],
String.Format("{0}/{1}.{2}",
_archivePath,
_archivename,
SelectExtention(_format)));
}
else
{
_sevenZipCompressor.CompressDirectory(_fileAndDirectoryFullPaths[i],
String.Format("{0}/{1}_{3}.{2}",
_archivePath,
_archivename,
SelectExtention(_format),
_fileAndDirectoryFullPaths[i].Split('\\')
.Last()),
_password);
}
//remove the directorys from the list so they will not be compressed as files as wel
_fileAndDirectoryFullPaths.Remove(_fileAndDirectoryFullPaths[i]);
}
//compress files
if (_fileAndDirectoryFullPaths.Count > 0)
{
_sevenZipCompressor.FileCompressionFinished += FileCompressionFinished;
_sevenZipCompressor.CompressFilesEncrypted(
String.Format("{0}/{1}.{2}",
_archivePath,
_archivename,
SelectExtention(_format)),
_password,
_fileAndDirectoryFullPaths.ToArray());
}
}
else
{
for (int i = 0; i < _fileAndDirectoryFullPaths.Count; i++)
//var fullPath in _fileAndDirectoryFullPaths)
{
FileInfo fi = new FileInfo(_fileAndDirectoryFullPaths[i]);
bytesoffiles += fi.Length;
if (!Directory.Exists(_fileAndDirectoryFullPaths[i]))
continue;
//Compress directorys
var strings = _fileAndDirectoryFullPaths[i].Split('/');
if (_fileAndDirectoryFullPaths.Count == 1)
{
_sevenZipCompressor.CompressDirectory(_fileAndDirectoryFullPaths[i],
String.Format("{0}/{1}.{2}",
_archivePath,
_archivename,
SelectExtention(_format)));
}
else
{
_sevenZipCompressor.CompressDirectory(_fileAndDirectoryFullPaths[i],
String.Format("{0}/{1}_{3}.{2}",
_archivePath,
_archivename,
SelectExtention(_format),
_fileAndDirectoryFullPaths[i].Split('\\')
.Last()));
}
//reset compression bar
//FileCompressionFinished(null, null);
//remove the directorys from the list so they will not be compressed as files as wel
_fileAndDirectoryFullPaths.Remove(_fileAndDirectoryFullPaths[i]);
}
//compress files.
if (_fileAndDirectoryFullPaths.Count > 0)
{
_sevenZipCompressor.FileCompressionFinished += FileCompressionFinished;
_sevenZipCompressor.CompressFiles(
String.Format("{0}/{1}.{2}",
_archivePath,
_archivename,
SelectExtention(_format)),
_fileAndDirectoryFullPaths.ToArray());
}
}
pb_totaalfiles.Invoke(new InvokeNone(() => { pb_totaalfiles.Value = 100; }));
Done();
}
catch (ThreadInterruptedException)
{
Dispose(true);
}
}
catch
{
/*
var dialog = new TaskDialog();
dialog.StandardButtons = TaskDialogStandardButtons.Ok;
dialog.Text = ex.Message;
dialog.Show();
*/
}
}