From fb88973a44eff412571d608060e1a9b9c1381171 Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Tue, 19 May 2026 10:52:34 -0700 Subject: [PATCH 1/3] Addressing bug on "Back Button" navigation when performing makepkg2 actions on legacy paths --- src/PackageUploader.UI/Model/PackageModel.cs | 1 + src/PackageUploader.UI/ViewModel/Msixvc2UploadViewModel.cs | 1 + src/PackageUploader.UI/ViewModel/Msixvc2UploadingViewModel.cs | 4 ++-- src/PackageUploader.UI/ViewModel/PackageUploadViewModel.cs | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/PackageUploader.UI/Model/PackageModel.cs b/src/PackageUploader.UI/Model/PackageModel.cs index d9caa6a4..067bfcbf 100644 --- a/src/PackageUploader.UI/Model/PackageModel.cs +++ b/src/PackageUploader.UI/Model/PackageModel.cs @@ -27,4 +27,5 @@ public class PackageModel public string FolderSize { get; set; } = string.Empty; public string UploadArguments { get; set; } = string.Empty; public string MakePkg2Path { get; set; } = string.Empty; + public Type? UploadOriginPage { get; set; } = null; } diff --git a/src/PackageUploader.UI/ViewModel/Msixvc2UploadViewModel.cs b/src/PackageUploader.UI/ViewModel/Msixvc2UploadViewModel.cs index b6f5f846..72d49977 100644 --- a/src/PackageUploader.UI/ViewModel/Msixvc2UploadViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/Msixvc2UploadViewModel.cs @@ -616,6 +616,7 @@ private void StartPackAndUploadAsync() _packageModelProvider.Package.FolderSize = EstimatedFolderSize; _packageModelProvider.Package.UploadArguments = uploadArgs; _packageModelProvider.Package.MakePkg2Path = makePkg2Path; + _packageModelProvider.Package.UploadOriginPage = typeof(Msixvc2UploadView); if (branchOrFlight != null) { _packageModelProvider.Package.BranchId = branchOrFlight.CurrentDraftInstanceId; diff --git a/src/PackageUploader.UI/ViewModel/Msixvc2UploadingViewModel.cs b/src/PackageUploader.UI/ViewModel/Msixvc2UploadingViewModel.cs index c8b4089d..a64c5bb4 100644 --- a/src/PackageUploader.UI/ViewModel/Msixvc2UploadingViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/Msixvc2UploadingViewModel.cs @@ -293,7 +293,7 @@ private void CancelUpload() System.Windows.Application.Current.Dispatcher.Invoke(() => { - _windowService.NavigateTo(typeof(Msixvc2UploadView)); + _windowService.NavigateTo(_packageModelProvider.Package.UploadOriginPage ?? typeof(Msixvc2UploadView)); }); } @@ -346,7 +346,7 @@ private void SetErrorAndGoToErrorPage(string title, string detail) { _errorModelProvider.Error.MainMessage = title; _errorModelProvider.Error.DetailMessage = detail; - _errorModelProvider.Error.OriginPage = typeof(Msixvc2UploadView); + _errorModelProvider.Error.OriginPage = _packageModelProvider.Package.UploadOriginPage ?? typeof(Msixvc2UploadView); _errorModelProvider.Error.LogsPath = _lastLogFilePath; System.Windows.Application.Current.Dispatcher.Invoke(() => diff --git a/src/PackageUploader.UI/ViewModel/PackageUploadViewModel.cs b/src/PackageUploader.UI/ViewModel/PackageUploadViewModel.cs index 54e05977..2067656a 100644 --- a/src/PackageUploader.UI/ViewModel/PackageUploadViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/PackageUploadViewModel.cs @@ -1131,6 +1131,7 @@ private void StartMsixvc2Upload() Package.FolderSize = PackageSize; Package.UploadArguments = uploadArgs; Package.MakePkg2Path = makePkg2Path; + Package.UploadOriginPage = typeof(PackageUploadView); if (branchOrFlight != null) { Package.BranchId = branchOrFlight.CurrentDraftInstanceId; From 2fee4fdb25abd865d24cf9dfab469b0f27167a5d Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Tue, 19 May 2026 11:13:04 -0700 Subject: [PATCH 2/3] Ensure XSAPI.dll is co-located with SubmissionValidator.dll in the settings folder, since makepkg2's /updatesubval downloads only the validator DLL but it depends on XSAPI.dll at load time. --- .../ViewModel/PackageCreationViewModel.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs index 1ccf86fc..bc22f847 100644 --- a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs @@ -672,6 +672,8 @@ private async void StartMakePackageProcess() if (UseMsixvc2) { + CopyXsapiDllToSettingsFolder(_settingsFolder); + string msixvc2CmdFormat = "pack /f \"{0}\" /pd \"{1}\" /d \"{2}\" /msixvc2 /updatesubval /validationpath \"{3}\""; arguments = string.Format(msixvc2CmdFormat, MappingDataXmlPath, buildPath, GameDataPath, _settingsFolder); executablePath = _pathConfigurationService.MakePkg2Path; @@ -900,6 +902,40 @@ private bool PopulateSubValArgs(string settingsFolder, ref string arguments) return true; } + /// + /// Copies XSAPI.dll from the GDK bin folder to the settings folder if it exists. + /// SubmissionValidator.dll has a native dependency on XSAPI.dll, and when makepkg2 downloads + /// a fresh validator via /updatesubval, XSAPI.dll must be in the same directory for it to load. + /// + private void CopyXsapiDllToSettingsFolder(string settingsFolder) + { + try + { + string? gdkBinDir = Path.GetDirectoryName(_pathConfigurationService.BaseSubValPath); + if (string.IsNullOrEmpty(gdkBinDir)) + { + return; + } + + string sourceXsapi = Path.Combine(gdkBinDir, "xsapi.dll"); + if (!File.Exists(sourceXsapi)) + { + return; + } + + string destXsapi = Path.Combine(settingsFolder, "xsapi.dll"); + if (!File.Exists(destXsapi)) + { + File.Copy(sourceXsapi, destXsapi, overwrite: false); + _logger.LogInformation("Copied xsapi.dll to settings folder for SubmissionValidator dependency."); + } + } + catch (Exception ex) + { + _logger.LogWarning("Failed to copy xsapi.dll to settings folder: {message}", ex.Message); + } + } + private async Task GenerateMappingFile(string tempBuildPath) { Process? makePackageProcess; From afe383093ec8fb1aa0d592af37fadcdb116daa75 Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Tue, 19 May 2026 13:31:02 -0700 Subject: [PATCH 3/3] Added comment indicating removal of temporary workaround for submission validator dependency --- src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs index bc22f847..6ef05281 100644 --- a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs @@ -672,6 +672,7 @@ private async void StartMakePackageProcess() if (UseMsixvc2) { + // According to the SubmissionValidator development team, an upcoming version will no longer have this dependency and this workaround will be removable CopyXsapiDllToSettingsFolder(_settingsFolder); string msixvc2CmdFormat = "pack /f \"{0}\" /pd \"{1}\" /d \"{2}\" /msixvc2 /updatesubval /validationpath \"{3}\"";