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); }
/// <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); }
public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller) { MessageQueueInstaller installer = otherInstaller as MessageQueueInstaller; if (installer == null) { return(false); } return(installer.Path == this.Path); }
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); }
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(); }
// 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); }
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); }
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()); }
/// <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)); } }
// 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) {}
public override bool IsEquivalentInstaller(ComponentInstaller otherInstaller) { throw new NotImplementedException(); }
public virtual bool IsEquivalentInstaller(ComponentInstaller otherInstaller) { }