diff --git a/src/UniGetUI.PackageEngine.Managers.Vcpkg/Vcpkg.cs b/src/UniGetUI.PackageEngine.Managers.Vcpkg/Vcpkg.cs index c973d25cb..af474f00c 100644 --- a/src/UniGetUI.PackageEngine.Managers.Vcpkg/Vcpkg.cs +++ b/src/UniGetUI.PackageEngine.Managers.Vcpkg/Vcpkg.cs @@ -21,6 +21,8 @@ public class Vcpkg : PackageManager public Dictionary TripletSourceMap; public static Uri URI_VCPKG_IO = new Uri("https://vcpkg.io/"); + private bool hasBeenBootstrapped; + public Vcpkg() { Dependencies = [ @@ -373,6 +375,30 @@ public override void RefreshPackageIndexes() processLogger.AddToStdOut(p.StandardOutput.ReadToEnd()); processLogger.AddToStdErr(p.StandardError.ReadToEnd()); processLogger.Close(p.ExitCode); + + if (!hasBeenBootstrapped) + { + p = new() + { + StartInfo = new ProcessStartInfo + { + FileName = "cmd.exe", + WorkingDirectory = vcpkgRoot, + Arguments = "/C .\\bootstrap-vcpkg.bat", + UseShellExecute = false, + // RedirectStandardOutput = true, + // RedirectStandardError = true, + CreateNoWindow = true + } + }; + IProcessTaskLogger processLogger2 = TaskLogger.CreateNew(LoggableTaskType.RefreshIndexes, p); + p.Start(); + p.WaitForExit(); + // processLogger2.AddToStdOut(p.StandardOutput.ReadToEnd()); + // processLogger2.AddToStdErr(p.StandardError.ReadToEnd()); + processLogger2.Close(p.ExitCode); + hasBeenBootstrapped = true; + } } public static Tuple GetVcpkgPath()