Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }