public static void InstallDistro(string distroName, string tarGzPath, string targetPath) { using (var distroKey = FindDistroKey(distroName)) { if (distroKey != null) { Error("Name already exists."); } } if (!File.Exists(tarGzPath)) { Error("File not found."); } if (Directory.Exists(targetPath)) { Error("Target directory already exists."); } string tmpRootPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "rootfs"); if (Directory.Exists(tmpRootPath)) { Error("The \"rootfs\" directory already exists in the directory containing the program."); } CheckWinApiResult(WslWinApi.WslRegisterDistribution(distroName, Path.GetFullPath(tarGzPath))); Directory.CreateDirectory(targetPath); Directory.Move(tmpRootPath, Path.Combine(targetPath, "rootfs")); SetInstallationDirectory(distroName, targetPath); }
public static uint LaunchDistro(string distroName, string command) { using (var distroKey = FindDistroKey(distroName)) { if (distroKey == null) { Error("Name not found."); } } CheckWinApiResult(WslWinApi.WslLaunchInteractive(distroName, command, true, out var exitCode)); return(exitCode); }