public bool StartApplyPatchDialog(IWin32Window owner, string patchFile)
 {
     return DoAction(owner, true, PreApplyPatch, PostApplyPatch, () =>
         {
             using (var form = new FormApplyPatch(this))
             {
                 if (Directory.Exists(patchFile))
                     form.SetPatchDir(patchFile);
                 else
                     form.SetPatchFile(patchFile);
                 return form.ShowDialog(owner) != DialogResult.Cancel;
             }
         }
     );
 }