public static bool SaveOptions(OptionsFileType fileType, string filePath, MainViewModel viewmodel, OSPlatformEnum osPlatform, RegistryTargetEnum registryTarget, DeploymentTypeEnum deploymentType) { bool result = false; switch (fileType) { case OptionsFileType.ADM: if (deploymentType == DeploymentTypeEnum.New) { result = SaveCleanADMFile(filePath, viewmodel, osPlatform, registryTarget); } else { result = SaveADMFile(filePath, viewmodel, osPlatform, registryTarget); } break; case OptionsFileType.REG: if (deploymentType == DeploymentTypeEnum.New) { result = SaveCleanREGFile(filePath, viewmodel, osPlatform, registryTarget); } else { result = SaveREGFile(filePath, viewmodel, osPlatform, registryTarget); } break; case OptionsFileType.WSO: result = SaveWSOFile(filePath, viewmodel); break; } return result; }
public REGVisitor( string regFilePath, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU, bool appendFile = true) { this._regFileWriter = new REGFileWriter(regFilePath, appendFile); this._osPlatform = osPlatform; this._registryTarget = registryTarget; }
/// <summary> /// Defaults are: OS Platform x86; Registry target HKCU; Append to file. /// </summary> public ADMVisitor( string admFilePath, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU, bool appendFile = true, Predicate<string> namePredicate = null) { _namePred = namePredicate; this._admFileWriter = new ADMFileWriter(admFilePath, appendFile); this._osPlatform = osPlatform; this._registryTarget = registryTarget; }
private static string GetOptionLocation(OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKLM) { string optionLocation; if (osPlatform == OSPlatformEnum.x86 || registryTarget == RegistryTargetEnum.HKCU) { optionLocation = @"SOFTWARE\Workshare\Options"; } else { optionLocation = @"SOFTWARE\Wow6432Node\Workshare\Options"; } return string.Format("{0}\\{1}", optionLocation, GetFileVersionInfo()); }
void IVisitor.Visit(UIOptionRootType optionsRoot) { if (this._registryTarget == RegistryTargetEnum.HKLM || this._registryTarget == RegistryTargetEnum.Both) { _localRegistryTarget = RegistryTargetEnum.HKLM; VisitRootInternal(optionsRoot); } if (this._registryTarget == RegistryTargetEnum.HKCU || this._registryTarget == RegistryTargetEnum.Both) { _localRegistryTarget = RegistryTargetEnum.HKCU; VisitRootInternal(optionsRoot); } this._regFileWriter.Flush(); }
void IVisitor.Visit(UIOptionRootType optionsRoot) { if (this._registryTarget == RegistryTargetEnum.HKLM || this._registryTarget == RegistryTargetEnum.Both) { this._localRegistryTarget = RegistryTargetEnum.HKLM; _admFileWriter.WriteHKLMHeader(); VisitRootInternal(optionsRoot); } if (this._registryTarget == RegistryTargetEnum.HKCU || this._registryTarget == RegistryTargetEnum.Both) { this._localRegistryTarget = RegistryTargetEnum.HKCU; _admFileWriter.WriteHKCUHeader(); VisitRootInternal(optionsRoot); } this._admFileWriter.Flush(); //this._admFileWriter.Dispose(); }
private void GenerateOptionGroupTemplates(ADMFileWriter admWriter, RegistryTargetEnum localRegTarget) { // Create Section : Document Management admWriter.StartCategory("Document Management"); // Create OptionGroup : Interwoven Servers GenerateInterwovenTemplate(admWriter, localRegTarget); // Create OptionGroup : SharepointSites GenerateSharepointTemplate(admWriter, localRegTarget); admWriter.EndCategory(); }
private void GenerateSharepointTemplate(ADMFileWriter admWriter, RegistryTargetEnum localRegTarget) { admWriter.StartCategory("SharePointSiteCollection"); for (int i = 1; i < 6; i++) { string instanceName = string.Format("Site{0}", i); WriteSharepointSiteInstance(admWriter, instanceName, localRegTarget); } admWriter.EndCategory(); }
private void GenerateInterwovenTemplate(ADMFileWriter admWriter, RegistryTargetEnum localRegTarget) { admWriter.StartCategory("InterwovenServers"); for (int i = 1; i < 6; i++) { string instanceName = string.Format("Server{0}", i); WriteInterwovenServerInstance(admWriter, instanceName, localRegTarget); } admWriter.EndCategory(); }
private void WriteInterwovenServerInstance(ADMFileWriter admWriter, string instanceName, RegistryTargetEnum localRegTarget) { // Document Management\InterwovenServers\Server1 WriteDocumentManagementInstance(admWriter, _interwovenServersOptionDefs, "InterwovenServers", instanceName, localRegTarget); }
private void WriteSharepointSiteInstance(ADMFileWriter admWriter, string instanceName, RegistryTargetEnum localRegTarget) { // Document Management\SharePointSiteCollection\Site1 WriteDocumentManagementInstance(admWriter, _sharepointSiteCollectionOptionDefs, "SharePointSiteCollection", instanceName, localRegTarget); }
private void WriteDocumentManagementInstance(ADMFileWriter admWriter, List<OptionInfo> optionDefs, string subsectionName, string instanceName, RegistryTargetEnum localRegTarget) { // Document Management\<SubSectionName>\<InstanceName> string sectionName = string.Format("Document Management\\{0}\\{1}", subsectionName, instanceName); string keyname = Utils.GetOptionKeyName(sectionName, string.Empty, this._osPlatform, localRegTarget); admWriter.StartCategory(instanceName); foreach (OptionInfo optDef in optionDefs) { admWriter.StartPolicy(optDef.DisplayText); admWriter.StartKeyName(keyname); OptionDataTypeEnum optionDataType = (OptionDataTypeEnum) Enum.Parse(typeof(OptionDataTypeEnum), optDef.DataType); admWriter.AddPart(optDef.DisplayText, optionDataType, optDef.Name, string.Empty); admWriter.EndPolicy(); } admWriter.EndCategory(); }
private static bool SaveREGFile(string filePath, MainViewModel viewmodel, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU) { // Get UIOptionRootType from View Model UIOptionRootType rootOptions = OptionMapper.DefaultXmlToOptionModel(); OptionMapper.UIModelToOptionModel(rootOptions, viewmodel, true, true); // Save UIOptionRootType using (IVisitor visitor = new REGVisitor(filePath, osPlatform, registryTarget, false)) { rootOptions.Accept(visitor); } return true; }
private void GenerateADMEntries(ADMFileWriter admWriter, RegistryTargetEnum localRegTarget) { var categoryGroups = from opt in _options orderby opt.DisplayText group opt by opt.CategoryRef into optGrp orderby optGrp.Key select new { CategoryName = optGrp.Key, Options = optGrp }; admWriter.StartWorkshareCategory(); foreach (var oCat in categoryGroups) { admWriter.StartCategory(oCat.CategoryName); var subCategoryGroups = from opt in oCat.Options orderby opt.DisplayText group opt by opt.CategoryRef into optGrp orderby optGrp.Key select new { SubCategoryName = optGrp.Key, Options = optGrp }; foreach (var oSubCat in subCategoryGroups) { admWriter.StartCategory(oSubCat.SubCategoryName); foreach (var opt in oSubCat.Options) { if ((localRegTarget == RegistryTargetEnum.HKLM && opt.ReadLocalMachine == "false") || (localRegTarget == RegistryTargetEnum.HKCU && opt.ReadCurrentUser == "false")) { continue; } admWriter.StartPolicy(opt.DisplayText); admWriter.StartKeyName(Utils.GetOptionKeyName(opt.CategoryRef, opt.SubCategoryRef, this._osPlatform, localRegTarget)); OptionDataTypeEnum optionDataType = (OptionDataTypeEnum) Enum.Parse(typeof(OptionDataTypeEnum), opt.DataType); admWriter.AddPart(opt.DisplayText, optionDataType, opt.Name, opt.DefaultValue, opt.ValueRange); admWriter.EndPolicy(); } admWriter.EndCategory(); // SubCategory } if (localRegTarget == RegistryTargetEnum.HKLM) { var hklmOptions = from opt in oCat.Options where (opt.ReadLocalMachine != "false") && (opt.ReadCurrentUser == "true") select opt; admWriter.StartCategory("IgnoredUserOverrides"); foreach (var opt in hklmOptions) { admWriter.StartPolicy(opt.DisplayText); admWriter.StartKeyName(Utils.GetIgnoreHKCUValueKeyName(this._osPlatform)); admWriter.AddPart(opt.DisplayText, OptionDataTypeEnum.Boolean, opt.Name, "false"); admWriter.EndPolicy(); } admWriter.EndCategory(); // IgnoredUserOverrides } admWriter.EndCategory(); // Category } GenerateOptionGroupTemplates(admWriter, localRegTarget); admWriter.EndWorkshareCategory(); }
private static bool SaveCleanREGFile(string filePath, MainViewModel viewModel, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU) { UIOptionRootType defaultXMLOptionRoot = OptionMapper.DefaultXmlToOptionModel(); UIOptionRootType dirtyOptionRoot = OptionMapper.DefaultXmlToOptionModel(); OptionMapper.UIModelToOptionModel(dirtyOptionRoot, viewModel, true, false); MakeOptionRootsMutuallyExclusive(defaultXMLOptionRoot, dirtyOptionRoot); // Save UIOptionRootType using (IVisitor dirtyVisitor = new REGVisitor(filePath, osPlatform, registryTarget, false)) { dirtyOptionRoot.Accept(dirtyVisitor); } using (IVisitor cleanVisitor = new CleanREGVisitor(filePath, osPlatform, registryTarget, true)) { defaultXMLOptionRoot.Accept(cleanVisitor); } return true; }
public ADMConverter(string sourceXMLPath, string destinationADMPath, RegistryTargetEnum target) { _sourceXMLPath = sourceXMLPath; _destinationADMPath = destinationADMPath; _registryTarget = target; }
public static string GetOptionKeyName(string categoryName, string subCategoryName, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKLM) { string rootkey = string.Format("{0}\\{1}\\{2}", GetOptionLocation(osPlatform, registryTarget), categoryName, subCategoryName); return rootkey; }
private static bool SaveCleanADMFile(string filePath, MainViewModel viewmodel, OSPlatformEnum osPlatform = OSPlatformEnum.x86, RegistryTargetEnum registryTarget = RegistryTargetEnum.HKCU) { // Get UIOptionRootType from View Model UIOptionRootType defaultXMLOptionRoot = OptionMapper.DefaultXmlToOptionModel(); UIOptionRootType rootOptions = OptionMapper.DefaultXmlToOptionModel(); OptionMapper.UIModelToOptionModel(rootOptions, viewmodel, true, false); MakeOptionRootsMutuallyExclusive(defaultXMLOptionRoot, rootOptions); // Save UIOptionRootType using (IVisitor dirtyVisitor = new ADMVisitor(filePath, osPlatform, registryTarget, false, (x) => true)) { rootOptions.Accept(dirtyVisitor); } using (IVisitor visitor = new ADMVisitor(filePath, osPlatform, registryTarget, true, (x) => (x != "Internal" && x != "InstanceTemplate"))) { defaultXMLOptionRoot.Accept(visitor); } return true; }