Esempio n. 1
0
        /// <summary>
        /// 更新APP文件
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private async Task UpdateAppFileAsync(UpdateAppFileModel model)
        {
            var           appManager        = ApplicationService.GetService <IAppService>();
            string        tempPath          = Path.Combine(model.WorkingDirectory, $"Temp/{StringManager.GetRandomStrByGuid()}");
            DirectoryInfo tempDirectoryInfo = null;

            if (!Directory.Exists(tempPath))
            {
                tempDirectoryInfo = Directory.CreateDirectory(tempPath);
            }
            tempDirectoryInfo ??= new DirectoryInfo(tempPath);
            var    cmdManager = new CmdManager();
            string winRarCmd  = Path.Combine(ApplicationConfig.WinRarPath, "UnRAR.exe");
            await cmdManager.RunCmdCommandsAsync($"\"{winRarCmd}\" x -o+ -y {model.FilePath} {tempPath}");

            DirectoryInfo[] directoryInfos = tempDirectoryInfo.GetDirectories();
            string[]        paths          = directoryInfos.Select(m => m.Name).ToArray();
            appManager.StopAppByPaths(paths);
            foreach (DirectoryInfo directoryInfo in directoryInfos)
            {
                try
                {
                    string dirPath = Path.Combine(model.WorkingDirectory, directoryInfo.Name);
                    CopyDirectory(directoryInfo, dirPath);
                }
                finally
                {
                    directoryInfo.Delete(true);
                }
            }
            tempDirectoryInfo.Delete(true);
        }
Esempio n. 2
0
        public async Task UpdateAppAsync(IUploadFileModel file)
        {
            string workingDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory !, "Application");
            string saveDirectory    = Path.Combine(workingDirectory, "Backup");

            if (!Directory.Exists(saveDirectory))
            {
                Directory.CreateDirectory(saveDirectory);
            }
            var model = new UpdateAppFileModel
            {
                WorkingDirectory = workingDirectory,
                FilePath         = Path.Combine(saveDirectory, file.Name)
            };

            file.SaveAs(model.FilePath);
            await UpdateAppFileAsync(model);
        }