private void OpenTestProjectMenuItem_Click(object sender, RoutedEventArgs e) { //TestProjectsViewModel tmp = this.testProjectView.DataContext as TestProjectsViewModel; //if (tmp != null) //{ // tmp.LoadTestProjectsCommand.Execute(null); //} TestProjectsViewModel tmp = this.testProjectView.DataContext as TestProjectsViewModel; if (tmp == null) { return; } List <KeyValuePair <string, string> > filters = new List <KeyValuePair <string, string> >(); filters.Add(new KeyValuePair <string, string>("测试工程", Constants.TestProjectFileTypePattern)); filters.Add(new KeyValuePair <string, string>("所有文件", "*")); IConfigurationManager configurationManager = (App.Current as App).Container.GetService <IConfigurationManager>(); FileDialogSettings fileDialogSettings = new FileDialogSettings() { Title = "选择测试工程", Multiselect = false, Filters = filters, InitialDirectory = Path.GetFullPath(configurationManager.GetConfigValue(Constants.LastTestProjectsPath)) }; IDialogService <object> dialogService = (App.Current as App).Container.GetService <IDialogService <object> >(); if (dialogService.ShowOpenFileDialog(this, fileDialogSettings, false)) { tmp.LoadTestProjectsCommand.Execute(fileDialogSettings.FileName); } }
private static bool SelectFile(FileDialogSettings fileDialogSettings, bool withMultiSelection, out string[] selectedFiles) { var openFileDialog = new OpenFileDialog { Filter = PrepareFilterString(fileDialogSettings.Filter) }; if (fileDialogSettings.InitialSelection != null) { var fileInfo = new FileInfo(fileDialogSettings.InitialSelection); if (fileInfo.Directory?.Exists == true) { openFileDialog.InitialDirectory = fileInfo.Directory.FullName; } openFileDialog.FileName = fileInfo.FullName; } if (!string.IsNullOrEmpty(fileDialogSettings.DialogTitle)) { openFileDialog.Title = fileDialogSettings.DialogTitle; } openFileDialog.CheckFileExists = true; openFileDialog.Multiselect = withMultiSelection; var result = openFileDialog.ShowDialog(GetActiveWindow()) == true; selectedFiles = openFileDialog.FileNames; return(result); }
public void AddPackage(string packagePath = null) { string[] selection; if (string.IsNullOrEmpty(packagePath)) { var interactionResult = this.interactionService.SelectFiles(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.MsixExtension).BuildFilter()), out selection); if (!interactionResult || !selection.Any()) { return; } } else { selection = new[] { packagePath }; } foreach (var selected in selection) { if (this.Files.Contains(selected, StringComparer.OrdinalIgnoreCase)) { continue; } this.Files.Add(selected); } }
protected override async Task <bool> Save(CancellationToken cancellationToken, IProgress <ProgressData> progress) { if (!this.IsValid) { return(false); } var settings = new FileDialogSettings("Virtual disks|*.vhd", this.OutputPath); if (!this.interactionService.SaveFile(settings, out var output)) { return(false); } this.OutputPath = output; var sizeInMegabytes = this.SizeMode.CurrentValue == AppAttachSizeMode.Auto ? 0 : uint.Parse(this.FixedSize.CurrentValue); var appAttach = await this.appAttachManagerFactory.GetProxyFor(SelfElevationLevel.AsAdministrator, cancellationToken).ConfigureAwait(false); cancellationToken.ThrowIfCancellationRequested(); await appAttach.CreateVolume( this.InputPath.CurrentValue, output, sizeInMegabytes, this.ExtractCertificate.CurrentValue, this.GenerateScripts.CurrentValue, cancellationToken, progress).ConfigureAwait(false); return(true); }
private static bool SelectFile(FileDialogSettings fileDialogSettings, bool withMultiSelection, out string[] selectedFiles) { var dlg = new OpenFileDialog(); dlg.Filter = PrepareFilterString(fileDialogSettings.Filter); if (fileDialogSettings.InitialSelection != null) { var fileInfo = new FileInfo(fileDialogSettings.InitialSelection); if (fileInfo.Directory != null && fileInfo.Directory.Exists) { dlg.InitialDirectory = fileInfo.Directory.FullName; } dlg.FileName = fileInfo.FullName; } if (!string.IsNullOrEmpty(fileDialogSettings.DialogTitle)) { dlg.Title = fileDialogSettings.DialogTitle; } dlg.CheckFileExists = true; dlg.Multiselect = withMultiSelection; var result = dlg.ShowDialog() == true; selectedFiles = dlg.FileNames; return(result); }
void IDialogAware.OnDialogOpened(IDialogParameters parameters) { if (parameters.TryGetValue <string>("Path", out var file)) { this.Files.Add(file); } else { var interactionResult = this.interactionService.SelectFiles(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.MsixExtension).BuildFilter()), out string[] selection); if (!interactionResult || !selection.Any()) { return; } foreach (var selected in selection) { if (this.Files.Contains(selected, StringComparer.OrdinalIgnoreCase)) { continue; } this.Files.Add(selected); } } this.Files.Commit(); }
public bool ShowOpenFileDialog(object owner, FileDialogSettings settings, bool isFolderPicker) { CommonOpenFileDialog dialog = new CommonOpenFileDialog(); dialog.IsFolderPicker = isFolderPicker; foreach (KeyValuePair <string, string> pair in settings.Filters) { string pairValue = pair.Value; if (pairValue.StartsWith("*") && pairValue.Length > 2) { pairValue = pairValue.Substring(1); } if (pairValue.StartsWith(".")) { pairValue = pairValue.Substring(1); } dialog.Filters.Add(new NewFilter(pair.Key, pairValue)); } dialog.InitialDirectory = settings.InitialDirectory; dialog.Multiselect = settings.Multiselect; dialog.Title = settings.Title; bool result = dialog.ShowDialog() == CommonFileDialogResult.Ok; if (result) { settings.FileName = dialog.FileName; settings.FileNames = dialog.FileNames; } return(result); }
public bool?ShowOpenFileDialog(FileDialogSettings settings) { var dialog = new OpenFileDialog(); // ... return(dialog.ShowDialog()); }
public void ShowFileDialog(string filter) { if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(filter), out var selectedFile)) { return; } this.OpenFile(new FileInfo(selectedFile)); }
public bool SelectFile(FileDialogSettings settings, out string selectedFile) { if (!SelectFile(settings, false, out var selection)) { selectedFile = null; return(false); } selectedFile = selection.FirstOrDefault(); return(true); }
private void OnExport() { if (this.Results.CurrentValue == null) { return; } if (!this.interactionService.SaveFile(FileDialogSettings.FromFilterString("XML files|*.xml"), out var selectedFile)) { return; } this.Results.CurrentValue.Export(selectedFile); }
private void OpenTestAssemblyMenuItem_Click(object sender, RoutedEventArgs e) { List <KeyValuePair <string, string> > filters = new List <KeyValuePair <string, string> >(); filters.Add(new KeyValuePair <string, string>("测试程序集", Constants.TestAssemblyFileTypeExtension)); filters.Add(new KeyValuePair <string, string>("所有文件", "*")); FileDialogSettings fileDialogSettings = new FileDialogSettings() { Title = "选择测试程序集", Multiselect = true, Filters = filters }; IDialogService <object> dialogService = (App.Current as App).Container.GetService <IDialogService <object> >(); if (dialogService.ShowOpenFileDialog(this, fileDialogSettings, false)) { List <string> testAssemblies = new List <string>(); testAssemblies.AddRange(fileDialogSettings.FileNames); if (!string.IsNullOrEmpty(fileDialogSettings.FileName) && !testAssemblies.Contains(fileDialogSettings.FileName)) { testAssemblies.Add(fileDialogSettings.FileName); } TestProjectsViewModel tmp = this.testProjectView.DataContext as TestProjectsViewModel; TestProjectInfo testProjectInfo = sender as TestProjectInfo; if (testProjectInfo == null) { testProjectInfo = tmp.CurrentTestProject?.TestProjectInfo; } TestMethodsSelector testMethodsSelectorDialog = new TestMethodsSelector(testAssemblies, testProjectInfo); if (testMethodsSelectorDialog.ShowDialog() == true) { if (testMethodsSelectorDialog.TestProject.Name == "测试用例仓库") { this.RefreshTestMesthodsList(); } else { this.OpenTestProject(tmp.CurrentTestProject?.TestProjectInfo); } } } }
private async void OpenExecuted() { if (this.State.IsSaved) { this.State.IsSaved = false; } if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.WingetExtension).BuildFilter()), out var selectedFile)) { return; } this.yamlPath = selectedFile; var task = this.Definition.LoadFromYaml(selectedFile); this.GeneralProgress.MonitorProgress(task); await task.ConfigureAwait(false); }
private void OpenBrowseDialog( string moduleName, string navigationPath, string fileParameterName = "file", string fileFilter = null) { if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(fileFilter), out var selected)) { return; } var parameters = new DialogParameters { { fileParameterName, selected } }; this.moduleManager.LoadModule(moduleName); this.dialogService.ShowDialog(navigationPath, parameters, this.OnDialogClosed); }
protected override async Task <bool> Save(CancellationToken cancellationToken, IProgress <ProgressData> progress) { if (!this.IsValid) { return(false); } var settings = new FileDialogSettings("Appinstaller files|*.appinstaller|All files|*.*", this.previousPath); if (!this.interactionService.SaveFile(settings, out var selected)) { return(false); } this.previousPath = selected; var appInstaller = this.GetCurrentAppInstallerConfig(); await this.appInstallerBuilder.Create(appInstaller, selected, cancellationToken, progress).ConfigureAwait(false); return(true); }
private async void OnAddTestMethodsFromAssembly() { List <KeyValuePair <string, string> > filters = new List <KeyValuePair <string, string> >(); filters.Add(new KeyValuePair <string, string>("测试程序集", Constants.TestAssemblyFileTypeExtension)); filters.Add(new KeyValuePair <string, string>("所有文件", "*")); FileDialogSettings fileDialogSettings = new FileDialogSettings { Title = "选择测试程序集", Multiselect = true, Filters = filters }; if (this.dialogService.ShowOpenFileDialog(this, fileDialogSettings, false)) { List <string> testAssemblies = new List <string>(); testAssemblies.AddRange(fileDialogSettings.FileNames); if (!string.IsNullOrEmpty(fileDialogSettings.FileName) && !testAssemblies.Contains(fileDialogSettings.FileName)) { testAssemblies.Add(fileDialogSettings.FileName); } (AddTestMethodsFromAssemblyCommand as DelegateCommand <TestProjectShip>)?.RaiseCanExecuteChanged(); List <TestCaseInfo> testMethods = await Task.Run(() => this.executor.DiscoverTestsV1(testAssemblies, string.Empty)); foreach (var testMethod in testMethods) { if (!this.TestProjectInfo.TestMethods.Contains(testMethod)) { this.TestProjectInfo.TestMethods.Add(testMethod); this.RaisePropertyChanged("TestAssemblies"); } } canAddTestMethodsFromAssembly = true; (AddTestMethodsFromAssemblyCommand as DelegateCommand <TestProjectShip>)?.RaiseCanExecuteChanged(); } }
public bool SaveFile(FileDialogSettings settings, out string selectedFile) { var dlg = new SaveFileDialog { Filter = PrepareFilterString(settings.Filter) }; if (settings.InitialSelection != null) { var fileInfo = new FileInfo(settings.InitialSelection); if (fileInfo.Directory?.Exists == true) { dlg.InitialDirectory = fileInfo.Directory.FullName; } dlg.FileName = fileInfo.Name; } dlg.CheckFileExists = false; var result = dlg.ShowDialog(GetActiveWindow()) == true; selectedFile = dlg.FileName; return(result); }
private void OpenExecuted(string selected) { if (selected != null) { if (!File.Exists(selected)) { selected = null; } else { previousPath = selected; } } if (selected == null) { if (this.previousPath != null) { // ReSharper disable once StringLiteralTypo var settings = new FileDialogSettings(new DialogFilterBuilder("*.appinstaller").BuildFilter(), this.previousPath); if (!this.interactionService.SelectFile(settings, out selected)) { return; } } // ReSharper disable once StringLiteralTypo else if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*.appinstaller").BuildFilter()), out selected)) { return; } } this.previousPath = selected; AppInstallerConfig.FromFile(selected).ContinueWith(t => { if (t.IsFaulted) { // ReSharper disable once PossibleNullReferenceException this.interactionService.ShowError("The selected file is not a valid .appinstaller.", t.Exception.GetBaseException(), InteractionResult.OK); return; } if (t.IsCanceled) { return; } if (!t.IsCompleted) { return; } var builder = new AppInstallerBuilder(t.Result); this.AllowDowngrades.CurrentValue = builder.AllowDowngrades; this.AppInstallerUpdateCheckingMethod.CurrentValue = builder.CheckForUpdates; this.AppInstallerUri.CurrentValue = builder.RedirectUri.ToString(); this.BlockLaunching.CurrentValue = builder.UpdateBlocksActivation; this.Hours.CurrentValue = builder.HoursBetweenUpdateChecks.ToString(); this.MainPackageUri.CurrentValue = builder.MainPackageUri.ToString(); this.Version.CurrentValue = builder.Version; this.ShowPrompt.CurrentValue = builder.ShowPrompt; this.TabPackage.Name.CurrentValue = builder.MainPackageName; this.TabPackage.Version.CurrentValue = builder.MainPackageVersion; this.TabPackage.Publisher.CurrentValue = builder.MainPackagePublisher; this.TabPackage.PackageType.CurrentValue = builder.MainPackageType; this.TabPackage.Architecture.CurrentValue = builder.MainPackageArchitecture; this.AllowDowngrades.CurrentValue = builder.AllowDowngrades; this.OnPropertyChanged(nameof(ShowLaunchOptions)); this.OnPropertyChanged(nameof(CompatibleWindows)); }, CancellationToken.None, TaskContinuationOptions.AttachedToParent | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.FromCurrentSynchronizationContext()); }
protected override async Task <bool> Save(CancellationToken cancellationToken, IProgress <ProgressData> progress) { this.WingetVerified = false; if (!this.IsValid) { return(false); } string selected; FileDialogSettings settings; if (string.IsNullOrEmpty(this.yamlPath) || !File.Exists(this.yamlPath)) { settings = FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.WingetExtension).BuildFilter()); } else { settings = new FileDialogSettings(new DialogFilterBuilder("*" + FileConstants.WingetExtension).BuildFilter(), null, this.yamlPath); } var userSelected = this.interactionService.SaveFile(settings, out selected); if (!userSelected) { return(false); } this.yamlPath = selected; var tempPath = Path.Combine(Path.GetTempPath(), "msixhero-" + Guid.NewGuid().ToString("N").Substring(0, 8) + FileConstants.WingetExtension); try { if (!(await this.Definition.Save(tempPath, cancellationToken, progress).ConfigureAwait(false))) { return(false); } var winGetPath = await this.yamlValidator.GetWingetPath(cancellationToken).ConfigureAwait(false); if (winGetPath != null) { progress.Report(new ProgressData(100, "Validating with winget CLI...")); var validationDetails = await yamlValidator.ValidateAsync(tempPath, false, cancellationToken).ConfigureAwait(false); await Task.Delay(TimeSpan.FromMilliseconds(400), cancellationToken).ConfigureAwait(false); if (validationDetails != null) { if (1 == this.interactionService.ShowMessage("Winget validation failed. Your package may not be accepted after pushing to the official repo. Press 'See details' to to show detailed warnings.", new[] { "Ignore this warning", "Fix issues" }, "Validation errors", validationDetails)) { this.WingetVerified = false; this.OnPropertyChanged(nameof(WingetVerified)); return(false); } } else { this.WingetVerified = true; this.OnPropertyChanged(nameof(WingetVerified)); } } File.Move(tempPath, selected, true); return(true); } finally { if (File.Exists(tempPath)) { File.Delete(tempPath); } } }
private async void OpenExecuted(string selected) { if (selected != null) { if (!File.Exists(selected)) { selected = null; } else { previousPath = selected; } } if (selected == null) { if (this.previousPath != null) { var settings = new FileDialogSettings(new DialogFilterBuilder("*" + FileConstants.AppInstallerExtension).BuildFilter(), this.previousPath); if (!this.interactionService.SelectFile(settings, out selected)) { return; } } else if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.AppInstallerExtension).BuildFilter()), out selected)) { return; } } this.previousPath = selected; AppInstallerConfig file; try { file = await AppInstallerConfig.FromFile(selected).ConfigureAwait(true); } catch (Exception e) { // ReSharper disable once PossibleNullReferenceException this.interactionService.ShowError("The selected file is not a valid .appinstaller.", e, InteractionResult.OK); return; } var builder = new AppInstallerBuilder(file); this.AllowDowngrades.CurrentValue = builder.AllowDowngrades; this.AppInstallerUpdateCheckingMethod.CurrentValue = builder.CheckForUpdates; this.AppInstallerUri.CurrentValue = builder.RedirectUri.ToString(); if (builder.ShowPrompt) { this.PromptMode.CurrentValue = builder.UpdateBlocksActivation ? ViewModel.PromptMode.Force : ViewModel.PromptMode.Inform; } else { this.PromptMode.CurrentValue = ViewModel.PromptMode.Background; } this.Hours.CurrentValue = builder.HoursBetweenUpdateChecks.ToString(); this.MainPackageUri.CurrentValue = builder.MainPackageUri.ToString(); this.Version.CurrentValue = builder.Version; this.TabPackage.Name.CurrentValue = builder.MainPackageName; this.TabPackage.Version.CurrentValue = builder.MainPackageVersion; this.TabPackage.Publisher.CurrentValue = builder.MainPackagePublisher; this.TabPackage.PackageType.CurrentValue = builder.MainPackageType; this.TabPackage.Architecture.CurrentValue = builder.MainPackageArchitecture; this.TabOptionalPackages.SetPackages(file.Optional); this.TabRelatedPackages.SetPackages(file.Related); this.AllowDowngrades.CurrentValue = builder.AllowDowngrades; this.OnPropertyChanged(nameof(ShowLaunchOptions)); this.OnPropertyChanged(nameof(CompatibleWindows)); }
private async void OnAddPackage(string packagePath, bool forAllUsers) { if (packagePath == null) { if (forAllUsers) { if (!this.interactionService.SelectFile(FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.MsixExtension, "*" + FileConstants.AppxExtension).BuildFilter()), out packagePath)) { return; } } else { if (!this.interactionService.SelectFile( // ReSharper disable StringLiteralTypo FileDialogSettings.FromFilterString(new DialogFilterBuilder("*" + FileConstants.MsixExtension, "*" + FileConstants.AppxExtension, "*" + FileConstants.AppxBundleExtension, "*" + FileConstants.AppInstallerExtension, FileConstants.AppxManifestFile).BuildFilter()), out packagePath)) // ReSharper restore StringLiteralTypo { return; } } } AddAppxPackageOptions options = 0; if (forAllUsers) { options |= AddAppxPackageOptions.AllUsers; } options |= AddAppxPackageOptions.KillRunningApps; var context = this.busyManager.Begin(); try { using var wrappedProgress = new WrappedProgress(context); var p1 = wrappedProgress.GetChildProgress(90); var p2 = wrappedProgress.GetChildProgress(10); var manager = await this.packageInstallerProvider.GetProxyFor(forAllUsers?SelfElevationLevel.AsAdministrator : SelfElevationLevel.AsInvoker).ConfigureAwait(false); await manager.Add(packagePath, options, progress : p1).ConfigureAwait(false); AppxIdentity appxIdentity = null; if (!string.Equals(FileConstants.AppInstallerExtension, Path.GetExtension(packagePath), StringComparison.OrdinalIgnoreCase)) { appxIdentity = await new AppxIdentityReader().GetIdentity(packagePath).ConfigureAwait(false); #pragma warning disable 4014 this.interactionService.ShowToast("App installed", $"{appxIdentity.Name} has been just installed.", InteractionType.None); #pragma warning restore 4014 } else { #pragma warning disable 4014 this.interactionService.ShowToast("App installed", $"A new app has been just installed from {Path.GetFileName(packagePath)}.", InteractionType.None); #pragma warning restore 4014 } var allPackages = await this.application.CommandExecutor.Invoke <GetPackagesCommand, IList <InstalledPackage> >(this, new GetPackagesCommand(forAllUsers ? PackageFindMode.AllUsers : PackageFindMode.CurrentUser), progress : p2).ConfigureAwait(false); if (appxIdentity != null) { var selected = allPackages.FirstOrDefault(p => p.Name == appxIdentity.Name); if (selected != null) { //this.application.ApplicationState.Packages.SelectedPackages.Clear(); //this.application.ApplicationState.Packages.SelectedPackages.Add(selected); await this.application.CommandExecutor.Invoke(this, new SelectPackagesCommand(selected.ManifestLocation)).ConfigureAwait(false); } } else { await this.application.CommandExecutor.Invoke(this, new SelectPackagesCommand()).ConfigureAwait(false); } } catch (Exception exception) { Logger.Error(exception); this.interactionService.ShowError(exception.Message, exception); } finally { this.busyManager.End(context); } }
protected override async Task <bool> Save(CancellationToken cancellationToken, IProgress <ProgressData> progress) { this.WingetVerified = false; if (!this.IsValid) { return(false); } string selected; FileDialogSettings settings; if (string.IsNullOrEmpty(this.yamlPath) || !File.Exists(this.yamlPath)) { settings = FileDialogSettings.FromFilterString(new DialogFilterBuilder("*.yaml").BuildFilter()); } else { settings = new FileDialogSettings(new DialogFilterBuilder("*.yaml").BuildFilter(), null, this.yamlPath); } var userSelected = this.interactionService.SaveFile(settings, out selected); if (!userSelected) { return(false); } this.yamlPath = selected; var tempPath = Path.Combine(Path.GetTempPath(), "msixhero-" + Guid.NewGuid().ToString("N").Substring(0, 8) + ".yaml"); try { if (!(await this.Definition.Save(tempPath, cancellationToken, progress).ConfigureAwait(false))) { return(false); } var validationDetails = await yamlValidator.ValidateAsync(tempPath, false, cancellationToken).ConfigureAwait(false); if (validationDetails != null) { progress.Report(new ProgressData(100, "Validating with winget CLI...")); await Task.Delay(TimeSpan.FromMilliseconds(1000), cancellationToken).ConfigureAwait(false); if (validationDetails.IndexOf("Manifest validation succeeded.", StringComparison.OrdinalIgnoreCase) == -1) { var msg = string.Join(Environment.NewLine, validationDetails.Split(Environment.NewLine).Skip(1)); if (1 == this.interactionService.ShowMessage("Winget CLI returned validation errors.", new[] { "Ignore these errors", "Continue editing" }, "Validation errors", msg)) { return(false); } } else { this.WingetVerified = true; this.OnPropertyChanged(nameof(WingetVerified)); } } File.Move(tempPath, selected, true); return(true); } finally { if (File.Exists(tempPath)) { File.Delete(tempPath); } } }
public bool SelectFiles(FileDialogSettings settings, out string[] selectedFiles) { return(SelectFile(settings, true, out selectedFiles)); }
protected override async Task <bool> Save(CancellationToken cancellationToken, IProgress <ProgressData> progress) { if (!this.IsValid) { return(false); } // ReSharper disable once NotAccessedVariable string selectedPath; switch (this.Create.CurrentValue) { case ModificationPackageBuilderAction.Manifest: if (!this.interactionService.SelectFolder(out selectedPath)) { return(false); } selectedPath = Path.Join(selectedPath, "AppxManifest.xml"); break; case ModificationPackageBuilderAction.Msix: case ModificationPackageBuilderAction.SignedMsix: if (!this.interactionService.SaveFile(FileDialogSettings.FromFilterString("MSIX Modification Packages|*.msix"), out selectedPath)) { return(false); } break; default: throw new ArgumentOutOfRangeException(); } var modificationPkgCreationRequest = new ModificationPackageConfig { DisplayName = this.DisplayName.CurrentValue, Name = this.Name.CurrentValue, Publisher = this.PublisherName.CurrentValue, DisplayPublisher = this.PublisherDisplayName.CurrentValue, Version = this.Version.CurrentValue, ParentName = this.ParentName.CurrentValue, ParentPublisher = this.ParentPublisher.CurrentValue, IncludeVfsFolders = this.IncludeVfsFolders.CurrentValue && this.IsIncludeVfsFoldersEnabled, IncludeFolder = this.IncludeFiles.CurrentValue && !string.IsNullOrEmpty(this.SourceFolder.CurrentValue) ? new DirectoryInfo(this.SourceFolder.CurrentValue) : null, IncludeRegistry = this.IncludeRegistry.CurrentValue && !string.IsNullOrEmpty(this.SourceRegistryFile.CurrentValue) ? new FileInfo(this.SourceRegistryFile.CurrentValue) : null, ParentPackagePath = this.SourcePath.CurrentValue }; await this.contentBuilder.Create(modificationPkgCreationRequest, selectedPath, this.Create.CurrentValue, cancellationToken, progress).ConfigureAwait(false); switch (this.Create.CurrentValue) { case ModificationPackageBuilderAction.Manifest: this.Result = selectedPath; break; case ModificationPackageBuilderAction.Msix: this.Result = selectedPath; break; case ModificationPackageBuilderAction.SignedMsix: var manager = await this.signingManagerFactory.GetProxyFor(SelfElevationLevel.AsInvoker, cancellationToken).ConfigureAwait(false); cancellationToken.ThrowIfCancellationRequested(); switch (this.TabCertificate.Store.CurrentValue) { case CertificateSource.Pfx: await manager.SignPackageWithPfx(selectedPath, true, this.TabCertificate.PfxPath.CurrentValue, this.TabCertificate.Password.CurrentValue, this.TabCertificate.TimeStamp.CurrentValue, IncreaseVersionMethod.None, cancellationToken, progress).ConfigureAwait(false); break; case CertificateSource.Personal: await manager.SignPackageWithInstalled(selectedPath, true, this.TabCertificate.SelectedPersonalCertificate?.CurrentValue?.Model, this.TabCertificate.TimeStamp.CurrentValue, IncreaseVersionMethod.None, cancellationToken, progress).ConfigureAwait(false); break; case CertificateSource.DeviceGuard: await manager.SignPackageWithDeviceGuardFromUi(selectedPath, this.TabCertificate.DeviceGuard.CurrentValue, this.TabCertificate.TimeStamp.CurrentValue, IncreaseVersionMethod.None, cancellationToken, progress).ConfigureAwait(false); break; } this.Result = selectedPath; break; } return(true); }