public void Patching_System_SaveAndReload_Installer_FaultyBefore()
        {
            var installer = new ComponentInstaller
            {
                ComponentId = "C7",
                Version     = new Version(1, 0),
                Description = "C7 description",
                ReleaseDate = new DateTime(2020, 07, 31),
            };

            var packages = PackageManager.Storage.LoadInstalledPackagesAsync(CancellationToken.None)
                           .ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.IsFalse(packages.Any());

            // SAVE
            PackageManager.SavePackage(Manifest.Create(installer), ExecutionResult.FaultyBefore, null);

            // RELOAD
            packages = PackageManager.Storage.LoadInstalledPackagesAsync(CancellationToken.None)
                       .ConfigureAwait(false).GetAwaiter().GetResult();

            // ASSERT
            var patches = packages.Select(PatchManager.CreatePatch).ToArray();

            Assert.AreEqual(1, patches.Length);
            Assert.IsTrue(patches[0].Id > 0);
            Assert.AreEqual("C7: 1.0", patches[0].ToString());
            Assert.AreEqual(ExecutionResult.FaultyBefore, patches[0].ExecutionResult);
        }
        public void Patching_System_CreatePackageFromInstaller_NoDep()
        {
            var installer = new ComponentInstaller
            {
                ComponentId = "C7",
                Version     = new Version(1, 0),
                Description = "C7 description",
                ReleaseDate = new DateTime(2345, 07, 31),
            };
            var expectedManifest = @"<?xml version='1.0' encoding='utf-8'?>
<Package type='Install'>
  <Id>C7</Id>
  <ReleaseDate>2345-07-31</ReleaseDate>
  <Version>1.0</Version>
  <Description>C7 description</Description>
</Package>".Replace('\'', '"');

            // ACTION
            var pkg = PatchManager.CreatePackage(installer);

            // ASSERT
            Assert.AreEqual("C7", pkg.ComponentId);
            Assert.AreEqual(new Version(1, 0), pkg.ComponentVersion);
            Assert.AreEqual("C7 description", pkg.Description);
            Assert.AreEqual(new DateTime(2345, 07, 31), pkg.ReleaseDate);
            Assert.AreEqual(expectedManifest, pkg.Manifest);
        }
Ejemplo n.º 3
0
        /// <summary>Indicates whether two installers would install the same service.</summary>
        /// <returns>true if calling <see cref="M:System.ServiceProcess.ServiceInstaller.Install(System.Collections.IDictionary)" /> on both of these installers would result in installing the same service; otherwise, false.</returns>
        /// <param name="otherInstaller">A <see cref="T:System.Configuration.Install.ComponentInstaller" /> to which you are comparing the current installer. </param>
        public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller)
        {
            ServiceInstaller serviceInstaller = otherInstaller as ServiceInstaller;

            if (serviceInstaller == null)
            {
                return(false);
            }
            return(serviceInstaller.ServiceName == this.ServiceName);
        }
        public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller)
        {
            EventLogInstaller installer = otherInstaller as EventLogInstaller;

            if (installer == null)
            {
                return(false);
            }
            return(installer.Source == this.Source);
        }
Ejemplo n.º 5
0
        public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller)
        {
            MessageQueueInstaller installer = otherInstaller as MessageQueueInstaller;

            if (installer == null)
            {
                return(false);
            }
            return(installer.Path == this.Path);
        }
Ejemplo n.º 6
0
        public void PatchingSystem_ReSaveAndReloadInstaller()
        {
            var installer = new ComponentInstaller
            {
                ComponentId  = "C7",
                Version      = new Version(1, 0),
                Description  = "C7 description",
                ReleaseDate  = new DateTime(2020, 07, 31),
                Dependencies = new[]
                {
                    Dep("C1", "1.0 <= v <= 1.0"),
                    Dep("C2", "1.0 <= v       "),
                    Dep("C3", "1.0 <  v       "),
                    Dep("C4", "       v <= 2.0"),
                    Dep("C5", "       v <  2.0"),
                    Dep("C6", "1.0 <= v <  2.0"),
                }
            };

            var packages = PackageManager.Storage.LoadInstalledPackagesAsync(CancellationToken.None)
                           .ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.IsFalse(packages.Any());

            // SAVE-1
            PackageManager.SavePackage(Manifest.Create(installer), null, false,
                                       new PackagingException(PackagingExceptionType.DependencyNotFound));

            // SAVE-2
            PackageManager.SavePackage(Manifest.Create(installer), null, true, null);

            // RELOAD
            packages = PackageManager.Storage.LoadInstalledPackagesAsync(CancellationToken.None)
                       .ConfigureAwait(false).GetAwaiter().GetResult();

            // ASSERT
            var patches = packages.Select(PatchManager.CreatePatch).ToArray();

            Assert.AreEqual(1, patches.Length);
            Assert.IsTrue(patches[0].Id > 0);
            Assert.AreEqual("C7", patches[0].ComponentId);
            Assert.AreEqual(new Version(1, 0), patches[0].Version);
            Assert.AreEqual("C7 description", patches[0].Description);
            Assert.AreEqual(new DateTime(2020, 07, 31), patches[0].ReleaseDate);
            var dep = string.Join(",", patches[0].Dependencies).Replace(" ", "");

            Assert.AreEqual("C1:1.0<=v<=1.0,C2:1.0<=v,C3:1.0<v,C4:v<=2.0,C5:v<2.0,C6:1.0<=v<2.0", dep);
            Assert.IsTrue(patches[0].ExecutionDate > DateTime.UtcNow.AddMinutes(-1));
            Assert.IsTrue(patches[0].ExecutionDate <= DateTime.UtcNow);
            Assert.AreEqual(ExecutionResult.Successful, patches[0].ExecutionResult);
            Assert.IsNull(patches[0].ExecutionError);
        }
Ejemplo n.º 7
0
        private static void Services(HostBuilderContext context, IServiceCollection services)
        {
            var configSection = context.Configuration.GetSection("AppConfig");

            services.Configure <AppConfig>(configSection);

            ConverterInstaller.Install(services);
            ComponentInstaller.Install(services);
            ValidatorInstaller.Install(services);
            ServiceInstaller.Install(services);

            services.AddLogging();
        }
Ejemplo n.º 8
0
        // Determine if another installer is equivalent to this one.
        public override bool IsEquivalentInstaller
            (ComponentInstaller otherInstaller)
        {
            EventLogInstaller other = (otherInstaller as EventLogInstaller);

            if (other != null)
            {
                if (log == other.log && source == other.source)
                {
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 9
0
        public void PatchingSystem_CreatePackageFromInstaller()
        {
            var installer = new ComponentInstaller
            {
                ComponentId  = "C7",
                Version      = new Version(1, 0),
                Description  = "C7 description",
                ReleaseDate  = new DateTime(2345, 07, 31),
                Dependencies = new[]
                {
                    Dep("C1", "1.0 <= v <= 1.0"),
                    Dep("C2", "1.0 <= v       "),
                    Dep("C3", "1.0 <  v       "),
                    Dep("C4", "       v <= 2.0"),
                    Dep("C5", "       v <  2.0"),
                    Dep("C6", "1.0 <= v <  2.0"),
                }
            };
            var expectedManifest = @"<?xml version='1.0' encoding='utf-8'?>
<Package type='Install'>
  <Id>C7</Id>
  <ReleaseDate>2345-07-31</ReleaseDate>
  <Version>1.0</Version>
  <Description>C7 description</Description>
  <Dependencies>
    <Dependency id='C1' version='1.0' />
    <Dependency id='C2' minVersion='1.0' />
    <Dependency id='C3' minVersionExclusive='1.0' />
    <Dependency id='C4' maxVersion='2.0' />
    <Dependency id='C5' maxVersionExclusive='2.0' />
    <Dependency id='C6' minVersion='1.0' maxVersionExclusive='2.0' />
  </Dependencies>
</Package>".Replace('\'', '"');

            // ACTION
            var pkg = PatchManager.CreatePackage(installer);

            // ASSERT
            Assert.AreEqual("C7", pkg.ComponentId);
            Assert.AreEqual(new Version(1, 0), pkg.ComponentVersion);
            Assert.AreEqual("C7 description", pkg.Description);
            Assert.AreEqual(new DateTime(2345, 07, 31), pkg.ReleaseDate);
            Assert.AreEqual(expectedManifest, pkg.Manifest);
        }
Ejemplo n.º 10
0
        public void PatchingSystem_InstalledComponents()
        {
            var installer1 = new ComponentInstaller
            {
                ComponentId  = "C1",
                Version      = new Version(1, 0),
                Description  = "C1 description",
                ReleaseDate  = new DateTime(2020, 07, 30),
                Dependencies = null
            };
            var installer2 = new ComponentInstaller
            {
                ComponentId  = "C2",
                Version      = new Version(2, 0),
                Description  = "C2 description",
                ReleaseDate  = new DateTime(2020, 07, 31),
                Dependencies = new[]
                {
                    Dep("C1", "1.0 <= v <= 1.0"),
                }
            };

            PackageManager.SavePackage(Manifest.Create(installer1), null, true, null);
            PackageManager.SavePackage(Manifest.Create(installer2), null, true, null);

            var verInfo = RepositoryVersionInfo.Create(CancellationToken.None);

            var components = verInfo.Components.ToArray();

            Assert.AreEqual(2, components.Length);

            Assert.AreEqual("C1", components[0].ComponentId);
            Assert.AreEqual("C2", components[1].ComponentId);

            Assert.AreEqual("1.0", components[0].Version.ToString());
            Assert.AreEqual("2.0", components[1].Version.ToString());

            Assert.AreEqual("C1 description", components[0].Description);
            Assert.AreEqual("C2 description", components[1].Description);

            Assert.AreEqual(0, components[0].Dependencies.Length);
            Assert.AreEqual(1, components[1].Dependencies.Length);
            Assert.AreEqual("C1: 1.0 <= v <= 1.0", components[1].Dependencies[0].ToString());
        }
Ejemplo n.º 11
0
        /// <include file='doc\InstallerDesign.uex' path='docs/doc[@for="InstallerDesign.AddInstaller"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public static void AddInstaller(IComponent component)
        {
            try {
                // create an installer for the component.
                Installer installer = CreateInstaller(component);

                // add the installer to the right document
                IDesignerHost host      = GetProjectInstallerDocument(component);
                IContainer    container = host.Container;

                bool found = false;
                ComponentInstaller currentInstaller = installer as ComponentInstaller;
                if (currentInstaller != null)
                {
                    ComponentCollection allInstallers = container.Components;
                    foreach (IComponent inst in allInstallers)
                    {
                        ComponentInstaller compInst = inst as ComponentInstaller;
                        if (compInst == null)
                        {
                            continue;
                        }
                        if (compInst.GetType() == currentInstaller.GetType() && currentInstaller.IsEquivalentInstaller(compInst))
                        {
                            found     = true;
                            installer = compInst;
                            break;
                        }
                    }
                }
                if (!found)
                {
                    container.Add(installer);
                }

                // and select the installer
                SelectComponent(installer);
            }
            catch (ExternalException e) {
                MessageBox.Show(e.GetType().FullName + ": " + e.Message + "(" + e.ErrorCode.ToString("X8") + ")\r\n" + e.StackTrace, SR.GetString(SR.InstallerDesign_AddInstallerFailed));
            }
        }
Ejemplo n.º 12
0
        // ReSharper disable once VirtualMemberNeverOverridden.Global
        public virtual IWindsorInstaller GetWindsorInstaller()
        {
            Assembly assembly = this.GetAssembly();

            var compositeInstaller = new CompositeInstaller();

            if (this.SearchWindsorInstallersInThisAssembly)
            {
                IWindsorInstaller assemblySpecificInstallers = FromAssembly.Instance(assembly);
                compositeInstaller.Add(assemblySpecificInstallers);
            }

            if (this.PopulateComponentsAutomatically)
            {
                var componentInstaller = new ComponentInstaller(this);
                compositeInstaller.Add(componentInstaller);
            }

            return(compositeInstaller);
        }
        public void Patching_System_InstalledComponents_Descriptions()
        {
            var installer = new ComponentInstaller
            {
                ComponentId  = "C1",
                Version      = new Version(1, 0),
                Description  = "C1 component",
                ReleaseDate  = new DateTime(2020, 07, 30),
                Dependencies = null
            };
            var patch = new SnPatch
            {
                ComponentId = "C1",
                Version     = new Version(2, 0),
                Description = "C1 patch",
                ReleaseDate = new DateTime(2020, 07, 31),
                Boundary    = new VersionBoundary
                {
                    MinVersion = new Version(1, 0)
                },
                Dependencies = new[]
                {
                    Dep("C2", "1.0 <= v <= 1.0"),
                }
            };

            PackageManager.SavePackage(Manifest.Create(installer), null, true, null);
            PackageManager.SavePackage(Manifest.Create(patch), null, true, null);

            var verInfo = RepositoryVersionInfo.Create(CancellationToken.None);

            var components = verInfo.Components.ToArray();

            Assert.AreEqual(1, components.Length);
            Assert.AreEqual("C1", components[0].ComponentId);
            Assert.AreEqual("2.0", components[0].Version.ToString());
            Assert.AreEqual("C1 component", components[0].Description);
            Assert.AreEqual(1, components[0].Dependencies.Length);
            Assert.AreEqual("C2: 1.0 <= v <= 1.0", components[0].Dependencies[0].ToString());
        }
	public virtual bool IsEquivalentInstaller(ComponentInstaller otherInstaller) {}
Ejemplo n.º 15
0
 public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 16
0
 public virtual bool IsEquivalentInstaller(ComponentInstaller otherInstaller)
 {
 }