private bool CreateMklinks(string currentFolder, string destFolder, List <string> movingModelDesktopFoldersAndFiles)
        {
            var defaultDektopFolder = GetDefaultDektopFolder();

            //只有桌面转移到其它路径,才添加软链接
            if (currentFolder == defaultDektopFolder)
            {
                var priviousDataFolder = currentFolder.TrimEnd(_folderEndTrimChars);
                var userDefinedFolder  = destFolder.TrimEnd(_folderEndTrimChars);
                foreach (var itemPath in movingModelDesktopFoldersAndFiles)
                {
                    var extension    = Path.GetExtension(itemPath);
                    var partFilePath = itemPath.Replace(priviousDataFolder, string.Empty);
                    var newFilePath  = userDefinedFolder + partFilePath;
                    if (string.IsNullOrWhiteSpace(extension))
                    {
                        var commands = $"mklink /D {itemPath} {newFilePath}";
                        ExecuteCmdHelper.ExecuteCmd(commands);
                    }
                    else if (extension != ".ink")
                    {
                        var commands = $"mklink /H {itemPath} {newFilePath}";
                        ExecuteCmdHelper.ExecuteCmd(commands);
                    }
                }

                return(true);
            }

            return(false);
        }
        /// <summary>
        /// 时间较长,额外处理
        /// </summary>
        private async void ExecuteDelayCommands()
        {
            var cleanDelayedCommands = ToCleanUpManager.GetCleanDelayedCommands();

            foreach (var cleanDelayedCommand in cleanDelayedCommands)
            {
                await Task.Run(() =>
                {
                    ExecuteCmdHelper.ExecuteCmd(cleanDelayedCommand);
                });

                OutputText += $"删除命令{cleanDelayedCommand}\r\n";
            }
        }
        /// <summary>
        /// 执行Cmd命令清理缓存
        /// </summary>
        /// <param name="worker"></param>
        private void CacheCacheByCmd(BackgroundWorker worker)
        {
            worker.ReportProgress(0);
            var commands = ToCleanUpManager.GetCleanCacheCommands();

            int index = 0;

            foreach (var command in commands)
            {
                index++;
                var currentOperationError  = string.Empty;
                var currentOperationOutput = string.Empty;
                try
                {
                    var currentOperationDetail = $"执行{command},可能需要几分钟,请等待";
                    worker.ReportProgress(-1,
                                          new ProgressChangedContent()
                    {
                        OperationDetail = currentOperationDetail,
                    });
                    if (command.Contains(@"C:\Windows\Installer\$PatchCache$"))
                    {
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd("Net Stop msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd(@"Reg Add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 0 /f");
                        ExecuteCmdHelper.ExecuteCmd(command);
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd("Net Stop msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd(@"Reg Add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 10 /f");
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                    }
                    var executeCmdResult = ExecuteCmdHelper.ExecuteCmd(command);
                    currentOperationOutput += $"命令{command}";
                }
                catch (Exception e)
                {
                    LogHelper.Error(e.Message);
                    currentOperationError = $"{command}执行失败";
                }
                finally
                {
                    worker.ReportProgress(Convert.ToInt32(Convert.ToDouble(index) / Convert.ToDouble(commands.Count)),
                                          new ProgressChangedContent()
                    {
                        OperationOutput = currentOperationOutput,
                        OperationError  = currentOperationError
                    });
                }
            }
        }