Пример #1
0
        internal static void EnsureCanonicalFoldersArePresent()
        {
            var root = PackageManagerSettings.CoAppRootDirectory;
            // try to make a convenience symlink:  %SYSTEMDRIVE%:\apps
            var appsdir = "{0}:\\apps".format(root[0]);

            if (!Directory.Exists(appsdir) && !File.Exists(appsdir))
            {
                Symlink.MakeDirectoryLink("{0}:\\apps".format(root[0]), root);
            }

            var pathext = EnvironmentUtility.GetSystemEnvironmentVariable("PATHEXT");

            if (pathext.IndexOf(".lnk", StringComparison.CurrentCultureIgnoreCase) == -1)
            {
                EnvironmentUtility.SetSystemEnvironmentVariable("PATHEXT", pathext + ";.lnk");
            }

            foreach (var path in CanonicalFolders.Select(folder => Path.Combine(root, folder)).Where(path => !Directory.Exists(path)))
            {
                Directory.CreateDirectory(path);
            }

            // make sure system paths are updated.
            var binPath = Path.Combine(root, "bin");
            var psPath  = Path.Combine(root, "powershell");

            if (!EnvironmentUtility.SystemPath.Contains(binPath))
            {
                EnvironmentUtility.SystemPath = EnvironmentUtility.SystemPath.Prepend(binPath);
            }
            if (!EnvironmentUtility.PowershellModulePath.Contains(psPath))
            {
                EnvironmentUtility.PowershellModulePath = EnvironmentUtility.PowershellModulePath.Prepend(psPath);
            }

            EnvironmentUtility.BroadcastChange();
        }