From 1f47f3634bcea6d00ffa9295746c358a55081146 Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Wed, 6 May 2026 15:30:02 -0700 Subject: [PATCH 1/8] Gating for incoming "Use MSIXVC2 pack" button --- .../ViewModel/PackageCreationViewModel.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs index 327afc4c..b92de994 100644 --- a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs @@ -322,6 +322,20 @@ public bool SupportsSubValAutoUpdate } } + private bool _useMsixvc2 = false; + public bool UseMsixvc2 + { + get => _useMsixvc2; + set => SetProperty(ref _useMsixvc2, value); + } + + private bool _isMakePkg2Available = false; + public bool IsMakePkg2Available + { + get => _isMakePkg2Available; + set => SetProperty(ref _isMakePkg2Available, value); + } + public ICommand MakePackageCommand { get; } public ICommand GameDataPathDroppedCommand { get; } public ICommand BrowseGameDataPathCommand { get; } @@ -371,6 +385,9 @@ public PackageCreationViewModel(PackageModelProvider packageModelService, // Future options can also be checked here to enable new features. } + var makePkg2Path = _pathConfigurationService.MakePkg2Path; + _isMakePkg2Available = !string.IsNullOrEmpty(makePkg2Path) && File.Exists(makePkg2Path); + MakePackageCommand = new RelayCommand(StartMakePackageProcess, CanCreatePackage); GameDataPathDroppedCommand = new RelayCommand(OnGameDataPathDropped); BrowseGameDataPathCommand = new RelayCommand(OnBrowseGameDataPath); From 3b89e3e5c1ee222c0d399f7f8e0edb4398a5cb75 Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Wed, 6 May 2026 16:56:36 -0700 Subject: [PATCH 2/8] Build the command-line arguments and select the executable based on whether the user toggled MSIXVC2 packaging mode --- .../ViewModel/PackageCreationViewModel.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs index b92de994..672f30ce 100644 --- a/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs +++ b/src/PackageUploader.UI/ViewModel/PackageCreationViewModel.cs @@ -667,19 +667,32 @@ private async void StartMakePackageProcess() return; } - string cmdFormat = "pack /v /f \"{0}\" /d \"{1}\" /pd \"{2}\""; - string arguments = string.Format(cmdFormat, MappingDataXmlPath, GameDataPath, buildPath); + string arguments; + string executablePath; - // Populate our arguments for SubVal validation. - if (!PopulateSubValArgs(_settingsFolder, ref arguments)) + if (UseMsixvc2) { - return; + // Argument order matches the makepkg2 script convention: /f /pd /d /msixvc2. + string msixvc2CmdFormat = "pack /f \"{0}\" /pd \"{1}\" /d \"{2}\" /msixvc2"; + arguments = string.Format(msixvc2CmdFormat, MappingDataXmlPath, buildPath, GameDataPath); + executablePath = _pathConfigurationService.MakePkg2Path; + } + else + { + string cmdFormat = "pack /v /f \"{0}\" /d \"{1}\" /pd \"{2}\""; + arguments = string.Format(cmdFormat, MappingDataXmlPath, GameDataPath, buildPath); + executablePath = _pathConfigurationService.MakePkgPath; + + if (!PopulateSubValArgs(_settingsFolder, ref arguments)) + { + return; + } } SetConsoleCtrlHandler(null, false); _makePackageProcess = new Process(); - _makePackageProcess.StartInfo.FileName = _pathConfigurationService.MakePkgPath; + _makePackageProcess.StartInfo.FileName = executablePath; _makePackageProcess.StartInfo.Arguments = arguments; _makePackageProcess.StartInfo.RedirectStandardOutput = true; _makePackageProcess.StartInfo.RedirectStandardError = true; From e659df1500be314c9a953e6c6371559dcaf1ac6e Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Thu, 7 May 2026 16:17:36 -0700 Subject: [PATCH 3/8] MSIXVC2 toggle (only visible when makepkg2.exe is installed) --- .../Resources/Strings/PackageCreation.Designer.cs | 9 +++++++++ .../Resources/Strings/PackageCreation.resx | 3 +++ src/PackageUploader.UI/View/PackageCreationView.xaml | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/PackageUploader.UI/Resources/Strings/PackageCreation.Designer.cs b/src/PackageUploader.UI/Resources/Strings/PackageCreation.Designer.cs index 3a94b78a..22c9eeef 100644 --- a/src/PackageUploader.UI/Resources/Strings/PackageCreation.Designer.cs +++ b/src/PackageUploader.UI/Resources/Strings/PackageCreation.Designer.cs @@ -419,5 +419,14 @@ public static string ValidatorPathTitleText { return ResourceManager.GetString("ValidatorPathTitleText", resourceCulture); } } + + /// + /// Looks up a localized string similar to Package as MSIXVC2 (.msixvc). + /// + public static string UseMsixvc2Text { + get { + return ResourceManager.GetString("UseMsixvc2Text", resourceCulture); + } + } } } diff --git a/src/PackageUploader.UI/Resources/Strings/PackageCreation.resx b/src/PackageUploader.UI/Resources/Strings/PackageCreation.resx index 0fc7fa65..bf8105b8 100644 --- a/src/PackageUploader.UI/Resources/Strings/PackageCreation.resx +++ b/src/PackageUploader.UI/Resources/Strings/PackageCreation.resx @@ -237,4 +237,7 @@ Folder path for SubmissionValidator.dll + + Package as MSIXVC2 (.msixvc) + \ No newline at end of file diff --git a/src/PackageUploader.UI/View/PackageCreationView.xaml b/src/PackageUploader.UI/View/PackageCreationView.xaml index fc05f1a6..9df65ada 100644 --- a/src/PackageUploader.UI/View/PackageCreationView.xaml +++ b/src/PackageUploader.UI/View/PackageCreationView.xaml @@ -406,6 +406,7 @@ + @@ -506,6 +507,16 @@ HorizontalAlignment="Left" TextWrapping="Wrap"/> + + From 73104bff01a8d3d438429c864318d3f810ed48ed Mon Sep 17 00:00:00 2001 From: Elshiekh Ahmed Date: Thu, 7 May 2026 16:47:17 -0700 Subject: [PATCH 4/8] Indeterminate progress bar for MSIXVC2 packaging as no progress is surfaced from makepkg2 tool for packaging --- .../PackingProgressPercentageProvider.cs | 12 ++ .../Strings/PackagingProgress.Designer.cs | 9 ++ .../Resources/Strings/PackagingProgress.resx | 3 + .../View/PackagingProgressView.xaml | 139 +++++++++--------- .../ViewModel/PackageCreationViewModel.cs | 2 + .../ViewModel/PackagingProgressViewModel.cs | 2 + 6 files changed, 101 insertions(+), 66 deletions(-) diff --git a/src/PackageUploader.UI/Providers/PackingProgressPercentageProvider.cs b/src/PackageUploader.UI/Providers/PackingProgressPercentageProvider.cs index 05b72c1a..08469237 100644 --- a/src/PackageUploader.UI/Providers/PackingProgressPercentageProvider.cs +++ b/src/PackageUploader.UI/Providers/PackingProgressPercentageProvider.cs @@ -30,10 +30,22 @@ public bool PackingCancelled } } + private bool _isIndeterminate; + public bool IsIndeterminate + { + get => _isIndeterminate; + set + { + _isIndeterminate = value; + OnPropertyChanged(nameof(IsIndeterminate)); + } + } + public PackingProgressPercentageProvider() { _packingProgressPercentage = 0; _packingCancelled = false; + _isIndeterminate = false; } public event PropertyChangedEventHandler? PropertyChanged; diff --git a/src/PackageUploader.UI/Resources/Strings/PackagingProgress.Designer.cs b/src/PackageUploader.UI/Resources/Strings/PackagingProgress.Designer.cs index c6a6f481..13c2cb48 100644 --- a/src/PackageUploader.UI/Resources/Strings/PackagingProgress.Designer.cs +++ b/src/PackageUploader.UI/Resources/Strings/PackagingProgress.Designer.cs @@ -105,6 +105,15 @@ public static string PercentComplete { } } + /// + /// Looks up a localized string similar to Packaging using MSIXVC2.... + /// + public static string PackingMsixvc2Text { + get { + return ResourceManager.GetString("PackingMsixvc2Text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Validating files.... /// diff --git a/src/PackageUploader.UI/Resources/Strings/PackagingProgress.resx b/src/PackageUploader.UI/Resources/Strings/PackagingProgress.resx index 23b3d4f1..c7e70f37 100644 --- a/src/PackageUploader.UI/Resources/Strings/PackagingProgress.resx +++ b/src/PackageUploader.UI/Resources/Strings/PackagingProgress.resx @@ -138,4 +138,7 @@ Verifying package contents... + + Packaging using MSIXVC2... + \ No newline at end of file diff --git a/src/PackageUploader.UI/View/PackagingProgressView.xaml b/src/PackageUploader.UI/View/PackagingProgressView.xaml index a3c59171..12b677cb 100644 --- a/src/PackageUploader.UI/View/PackagingProgressView.xaml +++ b/src/PackageUploader.UI/View/PackagingProgressView.xaml @@ -23,72 +23,78 @@ - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -219,8 +225,9 @@ HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0, 30, 0, 0"/> - - + +