public Task <bool> AddPackageAsync(Uri packageLocation, IEnumerable <Uri> dependencyPaths, Presenter.Progress.ProgressPresenter progressPresenter) { return(Task.Factory.StartNew <bool>(() => { bool success = false; try { if (packageLocation != null && progressPresenter != null) { progressPresenter.SetDetailsText(true, "Adding package {0}", packageLocation.AbsolutePath); if (dependencyPaths != null && dependencyPaths.Any()) { var pathsAsText = String.Join(System.Environment.NewLine, dependencyPaths); progressPresenter.SetDetailsText(true, "Will add dependencies:{0}{1}", Environment.NewLine, pathsAsText); } if (File.Exists(packageLocation.AbsolutePath)) { var packageManager = new Windows.Management.Deployment.PackageManager(); var deploymentTask = packageManager.AddPackageAsync(packageLocation, dependencyPaths, Windows.Management.Deployment.DeploymentOptions.None); success = UpdateProgressForDeploymentTask(progressPresenter, deploymentTask); //packageManager.RegisterPackageAsync( } else { progressPresenter.SetDetailsText(true, "{0} does not exist.", packageLocation); } } else { progressPresenter.SetDetailsText(true, "Null parameters"); } } catch (Exception ex) { Logger.Log(ex, "Add appx package"); progressPresenter.SetDetailsText(true, "AddPackageAsync failed, error message: {0}", ex.Message); progressPresenter.SetDetailsText(true, "Full Stacktrace: {0}", ex.ToString()); } return success; })); }