private async Task DoInstall(IProgress <int> progress) { _logger.Info("Lancement de l'installation"); string saveFolder = ConfigurationManager.AppSettings["windowsApp:downloadFolder"]; string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string savePath = Path.Combine(myDocuments, saveFolder); string userProfileFolder = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); try { progress.Report(0); string applicationDataFolder = Path.Combine(userProfileFolder, ConfigurationManager.AppSettings["windowsApp:pathToBackup"]); string applicationDataZip = Path.Combine(myDocuments, ConfigurationManager.AppSettings["windowsApp:backupDestination"]); progress.Report(10); string folder = Path.GetDirectoryName(applicationDataZip); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } if (Directory.Exists(savePath)) { Directory.Delete(savePath, true); } Directory.CreateDirectory(savePath); string scripts = Path.Combine(Environment.CurrentDirectory, "Scripts"); InstallService service = new InstallService(scripts); progress.Report(20); if (service.IsLaunched()) { MessageBoxResult result = MessageBox.Show( string.Format( @"L'application {0} est en cours d'exécution. Voulez-vous continuer ? En cliquant sur Oui, {0} sera fermé automatiquement, assurez-vous préalablement que votre travail ait été sauvegardé.", service.PackageName), "Exécution en cours", MessageBoxButton.YesNo, MessageBoxImage.Exclamation); if (result == MessageBoxResult.No) { progress.Report(-1); return; } service.StopApplicationProcesses(); } progress.Report(30); if (Directory.Exists(applicationDataFolder)) { service.BackupData(applicationDataFolder, applicationDataZip); } bool hasValidLicence = false; progress.Report(40); try { hasValidLicence = service.HasLicence(); } catch (Exception ex) { _logger.Warn("HasLicence() failed on next error", ex); } progress.Report(50); if (!hasValidLicence) { service.RegisterLicense(); } progress.Report(60); string downloadedFile = await service.DownloadASync(_client, _vm.ApiVersion.Version, savePath); progress.Report(70); service.Configure(); progress.Report(80); if (downloadedFile != null) { UnzipAndSetFilesPath(downloadedFile); } progress.Report(85); service.RegisterCertificate(_certifPath); progress.Report(90); service.InstallPackage(_appxPath); progress.Report(100); MessageBox.Show("Installation Terminée", "Installation", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception ex) { _exception = ex; _logger.Error(ex); MessageBox.Show(@"Une erreur s'est produite lors de l'installation." + "Consultez le log d'erreurs pour plus d'informations. " + _exception.Message + "", _exception.Message, MessageBoxButton.OK, MessageBoxImage.Error); } finally { //Directory.Delete(savePath, true); if (_exception != null) { StatusTextBlock.Text = "Problème ..."; Bar.Value = 0; InstallButton.IsEnabled = true; _logger.Error("Erreur lors de l'installation", _exception); MessageBox.Show( @"Une erreur s'est produite lors de l'installation. Consultez le log d'erreurs pour plus d'informations. " + _exception.Message + "", _exception.Message, MessageBoxButton.OK, MessageBoxImage.Error); } _logger.Info("Fin de l'installation"); } }