protected override void ProcessRecord() { using (var vlt = Util.VaultHelper.GetVault(VaultProfile)) { vlt.OpenStorage(); var v = vlt.LoadVault(); if (v.InstallerProfiles == null) { WriteVerbose("Initializing Installer Profile collection"); v.InstallerProfiles = new Vault.Util.EntityDictionary<Vault.Model.InstallerProfileInfo>(); } WriteVerbose($"Searching for existing Installer Profile for reference [{ProfileName}]"); var ipi = v.InstallerProfiles.GetByRef(ProfileName, throwOnMissing: false); if (ipi == null) WriteVerbose("No existing Profile found"); else WriteVerbose($"Existing Profile found [{ipi.Id}][{ipi.Alias}]"); if (!string.IsNullOrEmpty(Rename)) { if (ipi == null) throw new KeyNotFoundException("no existing profile found that can be renamed"); v.InstallerProfiles.Rename(ProfileName, Rename); ipi.Alias = Rename; } else if (Remove) { WriteVerbose($"Removing named Installer Profile for name [{ProfileName}]"); if (ipi == null) { WriteVerbose("No Installer Profile found for given name"); return; } else { v.InstallerProfiles.Remove(ipi.Id); WriteVerbose("Installer Profile removed"); } } else { if (ipi != null) { if (!Force) throw new InvalidOperationException("existing profile found;" + " specify -Force to overwrite"); WriteVerbose("Removing existing Profile"); v.InstallerProfiles.Remove(ipi.Id); } if (InstallerExtManager.GetProviderInfo(Installer) == null) { throw new ArgumentException("Unknown or invalid Installer provider name") .With(nameof(Installer), Installer); } WriteVerbose("Adding new Installer Profile Info"); ipi = new Vault.Model.InstallerProfileInfo { Id = Guid.NewGuid(), Alias = ProfileName, Label = Label, Memo = Memo, }; var pp = new InstallerProfile { InstallerProvider = Installer, InstanceParameters = (IReadOnlyDictionary<string, object> )InstallerParameters.Convert<string, object>(), }; var asset = vlt.CreateAsset(Vault.VaultAssetType.InstallerConfigInfo, ipi.Id.ToString()); using (var s = vlt.SaveAsset(asset)) { JsonHelper.Save(s, pp); } v.InstallerProfiles.Add(ipi); } vlt.SaveVault(v); } }