public void Perform(Shell32InstanceWrapper shell, string destDir, Shell32.FolderItem src, TimeSpan timeout, CopyReaderDelegate reader)
            {
                var destFile = Path.GetFullPath(Path.Combine(destDir, Path.GetFileName(src.Path)));

                var destFolder = shell.NameSpace(destDir);
                StartCopy(src, destFolder);
                FinishCopy(destFile, timeout, reader);
            }
 public Shell32CabFile(Shell32InstanceWrapper shell, string filename)
 {
     _sh = shell;
     _cab = DisposableTempPath.CopyToUniqueFilename(filename, ".cab");
 }
 public static void CopyItemHereAndRead(Shell32InstanceWrapper shell, string destDir, Shell32.FolderItem src, TimeSpan timeout, CopyReaderDelegate reader)
 {
     var performer = new CopyPerformer();
     performer.Perform(shell, destDir, src, timeout, reader);
 }