private bool InstallFromCache(PackageWorkingInstallFromCache installFromCache)
        {
            var mode             = installFromCache.Mode;
            var install          = installFromCache.Install;
            var packageDirectory = new DirectoryInfo(installFromCache.PackagePath);
            var path             = packageDirectory.FullName.RemoveStart(nodeModulesPath + @"\");

            try
            {
                var elapsed = TimeSpan.MinValue;

                SkipPath(packageDirectory.Name);
                AddInstallStatus(installFromCache, StatusMode.Normal, $"Installing '{ install }' from cache");

                using (this.StartStopwatch((s) => elapsed = s))
                {
                    installFromCache.InstallPackage();

                    AddPathStatus(path, CacheStatusType.PathProcessed);
                }

                AddInstallStatus(installFromCache, StatusMode.Success, "Install of '{0}' from cache took {1} seconds", path, elapsed.ToDecimalSeconds());
                AddPackageCacheStatus(path, install, CacheStatusType.PathCopiedFromCache);
            }
            catch (Exception ex)
            {
                AddInstallStatus(installFromCache, StatusMode.Error, "Error installing '{0}', ", ex.Message);
                AddPackageCacheStatus(path, install, ex);

                DebugUtils.Break();
                return(false);
            }

            return(true);
        }
        private void InstallFromCache(string name, NpmVersion installVersion, DirectoryInfo cacheDirectory, DirectoryInfo packageDirectory, bool executeActions = true, bool executeDirectly = false)
        {
            var install = name + "@" + installVersion.Version;

            if (!this.ContainsKey(install))
            {
                var workingInstallFromCache = new PackageWorkingInstallFromCache(this.Mode, install, cacheDirectory.FullName, packageDirectory.FullName, this.PackageModules, this);

                HandleEvents(workingInstallFromCache);

                this.Add(install, workingInstallFromCache);

                workingInstallFromCache.InstallPackage(executeActions, executeDirectly);
            }
        }