示例#1
0
        protected virtual void OnInstallPackages(FileTransaction fileTransaction, IEnumerable <PackageInfo> packages,
                                                 IProductConfigurationProvider productConfigProvider,
                                                 IPackageConfigurationProvider packageConfigProvider,
                                                 IDeploymentStartegyProvider deploymentStartegy)
        {
            foreach (var package in packages)
            {
                var files          = deploymentStartegy.GetPackageFiles(package.Id, package.PackagePath).ToList();
                var installedFiles = new List <string>();

                var e = new BeforePackageInstalledEvent();
                e.FilesToInstall.AddRange(files);
                RaiseDeploymentEvent(e, package.Id);

                foreach (var file in e.FilesToInstall)
                {
                    if (file.Action == FileAction.Copy)
                    {
                        fileTransaction.InstallFile(file);
                        installedFiles.Add(file.TargetFileName);
                    }
                    else if (file.Action == FileAction.Delete)
                    {
                        fileTransaction.DeleteFile(file.TargetFileName);
                    }
                }

                var cfg = packageConfigProvider.GetPackageConfiguration(package.Id, package.PackagePath);
                productConfigProvider.SetPackageConfiguration(cfg, installedFiles, package.Dependencies.Select(x => x.Id.ToString()));

                RaiseDeploymentEvent(new AfterPackageInstalledEvent(), package.Id);
                Logger.Info($"Package {package.Id} installed");
            }
        }
示例#2
0
 public RuntimeEngine(RuntimeConfiguration configuration)
 {
     RuntimeContext         = configuration.RuntimeContext;
     _configurationProvider = configuration
                              .ProductConfigurationSource
                              .GetProductConfigurationProvider(RuntimeContext.ProductPath);
 }
示例#3
0
 /// <summary>
 /// Installs provided packages
 /// </summary>
 /// <param name="fileTransaction">File transaction to use</param>
 /// <param name="packages">Packages to install</param>
 /// <param name="productConfigProvider">Product configuration</param>
 /// <param name="packageConfigProvider">Packages configuration</param>
 /// <param name="deploymentStartegy">Deployment strategy to use</param>
 public void InstallPackages(FileTransaction fileTransaction, IEnumerable <PackageInfo> packages,
                             IProductConfigurationProvider productConfigProvider,
                             IPackageConfigurationProvider packageConfigProvider,
                             IDeploymentStartegyProvider deploymentStartegy)
 {
     OnInstallPackages(fileTransaction, packages, productConfigProvider, packageConfigProvider,
                       deploymentStartegy);
 }
        public DefaultDeploymentContext(string productPath, string framework,
                                        IPackageConfigurationProvider packageConfigurationProvider,
                                        IProductConfigurationProvider productConfigurationProvider)
        {
            ProductPath     = productPath;
            TargetFramework = framework;

            PackageConfigurationProvider = packageConfigurationProvider;
            ProductConfigurationProvider = productConfigurationProvider;
        }
示例#5
0
        protected virtual void OnDeletePackages(FileTransaction fileTransaction, IEnumerable <PackageId> packages,
                                                IProductConfigurationProvider productConfig)
        {
            foreach (var packageId in packages)
            {
                var files = productConfig.GetInstalledFiles(packageId, true);

                var deleteEvent = new BeforePackageUninstalledEvent();
                deleteEvent.FilesToDelete.AddRange(files);
                RaiseDeploymentEvent(deleteEvent, packageId);

                foreach (var file in deleteEvent.FilesToDelete)
                {
                    fileTransaction.DeleteFile(file);
                }

                productConfig.RemovePackageConfiguration(packageId);

                RaiseDeploymentEvent(new AfterPackageUninstalledEvent(), packageId);
                Logger.Info($"Package {packageId} uninstalled");
            }
        }
示例#6
0
 /// <summary>
 /// Deletes provided packages
 /// </summary>
 /// <param name="fileTransaction">Transaction to track file system changes</param>
 /// <param name="packages">Packages to delete</param>
 /// <param name="productConfig">Current product configuration</param>
 public void DeletePackages(FileTransaction fileTransaction, IEnumerable <PackageId> packages, IProductConfigurationProvider productConfig)
 {
     OnDeletePackages(fileTransaction, packages, productConfig);
 }
示例#7
0
 internal RuntimeEngine(RuntimeContext runtimeContext, IProductConfigurationProvider configurationProvider)
 {
     RuntimeContext = runtimeContext;
     ConfigurationProvider = configurationProvider;
 }