/// <summary> /// /// </summary> /// <param name="visioContentType"></param> /// <param name="sourceLineNumbers"></param> /// <param name="attrib"></param> /// <param name="publishInfo"></param> /// <param name="addonAttrs"></param> private void ParseAddonAttrs(VisioContentType visioContentType, SourceLineNumberCollection sourceLineNumbers, XmlAttribute attrib, VisioPublishInfo publishInfo, AddonAttrs addonAttrs) { if (visioContentType != VisioContentType.Addon) { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } else { if (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { publishInfo.AddonAttrs |= addonAttrs; } else { publishInfo.AddonAttrs &= ~addonAttrs; } } }
/// <summary> /// Returns the list of PublishComponent rows /// </summary> /// <param name="visioContentType"></param> /// <param name="fileName"></param> /// <returns></returns> public IEnumerable <RowInfo> GenerateRowInfos(VisioContentType visioContentType, string fileName) { var result = new List <RowInfo>(); var editionCode = GetVisioEditionCode(VisioEdition); var enablingPolicyCode = (int)(EnablingPolicy) | (int)(StaticEnableConditions); var addonAttrsCode = (int)(AddonAttrs); var invokeOnStartupCode = (InvokeOnStartup ? 1 : 0); if ((VisioVersion & VisioVersion.Visio2003) == VisioVersion.Visio2003) { string appData2003 = ""; switch (visioContentType) { case VisioContentType.Stencil: case VisioContentType.Template: appData2003 = String.Format(@"{0}|{1}", MenuPath, AltNames); break; case VisioContentType.Help: appData2003 = null; break; case VisioContentType.Addon: appData2003 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode); break; } if (VisioLanguage == 1) { foreach (var lcid in GetAllVisioLanguageCodes()) { result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2003), Qualifier = MakeQualifier(visioContentType, lcid, fileName, Ordinal), AppData = appData2003 }); } } else { result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2003), Qualifier = MakeQualifier(visioContentType, VisioLanguage, fileName, Ordinal), AppData = appData2003 }); } } var qualifier = MakeQualifier(visioContentType, VisioLanguage, fileName, Ordinal); if ((VisioVersion & VisioVersion.Visio2007) == VisioVersion.Visio2007) { string appData2007 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2007 = String.Format(@"{0}|{1}", MenuPath, AltNames); break; case VisioContentType.Template: appData2007 = String.Format(@"{0}|{1}|{2}", MenuPath, AltNames, FeaturedTemplate ? 1 : 0); break; case VisioContentType.Help: appData2007 = "-1"; break; case VisioContentType.Addon: appData2007 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2007), Qualifier = qualifier, AppData = appData2007 }); } if ((VisioVersion & VisioVersion.Visio2010) == VisioVersion.Visio2010) { string appData2010 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2010 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, QuickShapesCount, editionCode); break; case VisioContentType.Template: appData2010 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, 1, editionCode); break; case VisioContentType.Help: appData2010 = "-1"; break; case VisioContentType.Addon: appData2010 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode, editionCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2010), Qualifier = qualifier, AppData = appData2010 }); } if ((VisioVersion & VisioVersion.Visio2013) == VisioVersion.Visio2013) { string appData2013 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2013 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, QuickShapesCount, editionCode); break; case VisioContentType.Template: appData2013 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, 1, editionCode); break; case VisioContentType.Help: appData2013 = "-1"; break; case VisioContentType.Addon: appData2013 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode, editionCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2013), Qualifier = qualifier, AppData = appData2013 }); } if ((VisioVersion & VisioVersion.Visio2016) == VisioVersion.Visio2016) { string appData2016 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2016 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, QuickShapesCount, editionCode); break; case VisioContentType.Template: appData2016 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, 1, editionCode); break; case VisioContentType.Help: appData2016 = "-1"; break; case VisioContentType.Addon: appData2016 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode, editionCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2016), Qualifier = qualifier, AppData = appData2016 }); } return(result); }
/// <summary> /// Builds a "Qualifier" cell of teh "PublishComponent" table out of it's parts. /// </summary> /// <param name="visioContentType"></param> /// <param name="lcid"></param> /// <param name="fileName"></param> /// <param name="ordinal"></param> /// <returns></returns> public static string MakeQualifier(VisioContentType visioContentType, int lcid, string fileName, uint ordinal) { return((visioContentType == VisioContentType.Addon) ? String.Format(@"{0}\{1}\{2}", lcid, ordinal - 1, fileName) : String.Format(@"{0}\{1}", lcid, fileName)); }
/// <summary> /// Returns the ComponentID for PublishComponent table for given combination of version/content type. /// Visio Component ids are built using the following rule: /// {XXXXXX-XXXX-XXX-XXXXXY} - here X are fixed "base" digits, /// whereas the last one (Y) is determined by content type. /// </summary> /// <param name="contentType"></param> /// <param name="visioVersion"></param> /// <returns></returns> private static string GetVisioComponentId(VisioContentType contentType, VisioVersion visioVersion) { var pattern = GetVisioBaseComponentId(visioVersion); return(pattern.Replace("X", Convert.ToInt32(contentType).ToString(CultureInfo.InvariantCulture))); }
/// <summary> /// Parses a "Visio" element. /// </summary> /// <param name="node">Element to parse.</param> /// <param name="contextComponentId">Identifier for parent component.</param> /// <param name="fileName"></param> /// <param name="visioContentType"></param> private void ParseVisioElement(XmlNode node, string contextComponentId, string fileName, VisioContentType visioContentType) { var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); string component = null; string feature = null; if (visioContentType != GetVisioContentType(fileName)) Core.OnMessage(VisioWarnings.InvalidFileExtension(sourceLineNumbers, fileName, Enum.GetName(typeof(VisioContentType), visioContentType))); var publishInfo = new VisioPublishInfo(fileName); if (node.Attributes != null) foreach (XmlAttribute attrib in node.Attributes) { switch (attrib.LocalName) { case "Feature": feature = Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "Feature", feature); break; case "Component": component = Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "Component", component); break; case "Visio2003": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2003); break; case "Visio2007": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2007); break; case "Visio2010": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2010); break; case "Visio2013": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2013); break; case "VisioEdition": publishInfo.VisioEdition = ParseVisioEditionAttributeValue(sourceLineNumbers, attrib); break; case "Language": publishInfo.VisioLanguage = ParseVisioLanguageCode(sourceLineNumbers, attrib); break; case "MenuPath": if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil || visioContentType == VisioContentType.Addon) publishInfo.MenuPath = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "AltNames": if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil) publishInfo.AltNames = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "QuickShapeCount": if (visioContentType == VisioContentType.Stencil) publishInfo.QuickShapesCount = ParseUint(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "FeaturedTemplate": if (visioContentType == VisioContentType.Template) publishInfo.FeaturedTemplate = (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "LocalizedName": if (visioContentType == VisioContentType.Addon) publishInfo.LocalizedName = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "UniversalName": if (visioContentType == VisioContentType.Addon) publishInfo.UniversalName = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "Ordinal": if (visioContentType == VisioContentType.Addon) publishInfo.Ordinal = ParseUint(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "PerformsActions": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.PerformsActions); break; case "HasAboutBox": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.HasAboutBox); break; case "ProvidesHelp": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.ProvidesHelp); break; case "DisplayWaitCursor": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.DisplayWaitCursor); break; case "HideInUI": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.HideInUI); break; case "EnablingPolicy": if (visioContentType == VisioContentType.Addon) publishInfo.EnablingPolicy = ParseEnablingPolicy(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "StaticEnableConditions": if (visioContentType == VisioContentType.Addon) publishInfo.StaticEnableConditions = ParseStaticEnableConditions(sourceLineNumbers, attrib); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; case "InvokeOnStartup": if (visioContentType == VisioContentType.Addon) publishInfo.InvokeOnStartup = (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)); else Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; default: Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; } } if (string.IsNullOrEmpty(publishInfo.MenuPath)) { if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil) Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "MenuPath")); } if (publishInfo.VisioVersion == VisioVersion.Default) publishInfo.VisioVersion = VisioPublishInfo.GetDefaultVisioVersion(fileName); if (publishInfo.VisioEdition == VisioEdition.Default) publishInfo.VisioEdition = (VisioEdition.X86 | VisioEdition.X64); if ((publishInfo.VisioEdition & VisioEdition.X86) == VisioEdition.X86) Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "SetConfigChangeID"); if ((publishInfo.VisioEdition & VisioEdition.X64) == VisioEdition.X64) Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "SetConfigChangeID64"); if (Core.EncounteredError) return; var featureId = feature ?? Guid.Empty.ToString("B"); var componentId = component ?? contextComponentId; foreach (var rowInfo in publishInfo.GenerateRowInfos(visioContentType, fileName)) { var row = Core.CreateRow(sourceLineNumbers, "PublishComponent"); row[0] = rowInfo.VisioComponentId; row[1] = rowInfo.Qualifier; row[2] = componentId; row[3] = rowInfo.AppData; row[4] = featureId; } }
/// <summary> /// /// </summary> /// <param name="visioContentType"></param> /// <param name="sourceLineNumbers"></param> /// <param name="attrib"></param> /// <param name="publishInfo"></param> /// <param name="addonAttrs"></param> private void ParseAddonAttrs(VisioContentType visioContentType, SourceLineNumberCollection sourceLineNumbers, XmlAttribute attrib, VisioPublishInfo publishInfo, AddonAttrs addonAttrs) { if (visioContentType != VisioContentType.Addon) Core.UnexpectedAttribute(sourceLineNumbers, attrib); else { if (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) publishInfo.AddonAttrs |= addonAttrs; else publishInfo.AddonAttrs &= ~addonAttrs; } }
/// <summary> /// Parses a "Visio" element. /// </summary> /// <param name="node">Element to parse.</param> /// <param name="contextComponentId">Identifier for parent component.</param> /// <param name="fileName"></param> /// <param name="visioContentType"></param> private void ParseVisioElement(XmlElement node, string contextComponentId, string fileName, VisioContentType visioContentType) { var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); string component = null; string feature = null; if (visioContentType != GetVisioContentType(fileName)) { Core.OnMessage(VisioWarnings.InvalidFileExtension(sourceLineNumbers, fileName, Enum.GetName(typeof(VisioContentType), visioContentType))); } var publishInfo = new VisioPublishInfo(fileName); foreach (XmlAttribute attrib in node.Attributes) { switch (attrib.LocalName) { case "Feature": feature = Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "Feature", feature); break; case "Component": component = Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "Component", component); break; case "Visio2003": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2003); break; case "Visio2007": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2007); break; case "Visio2010": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2010); break; case "Visio2013": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2013); break; case "Visio2016": ParseVisioVersionAttribute(sourceLineNumbers, attrib, publishInfo, VisioVersion.Visio2016); break; case "VisioEdition": publishInfo.VisioEdition = ParseVisioEditionAttributeValue(sourceLineNumbers, attrib); break; case "Language": publishInfo.VisioLanguage = ParseVisioLanguageCode(sourceLineNumbers, attrib); break; case "MenuPath": if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil || visioContentType == VisioContentType.Addon) { publishInfo.MenuPath = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "AltNames": if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil) { publishInfo.AltNames = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "QuickShapeCount": if (visioContentType == VisioContentType.Stencil) { publishInfo.QuickShapesCount = ParseUint(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "FeaturedTemplate": if (visioContentType == VisioContentType.Template) { publishInfo.FeaturedTemplate = (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "LocalizedName": if (visioContentType == VisioContentType.Addon) { publishInfo.LocalizedName = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "UniversalName": if (visioContentType == VisioContentType.Addon) { publishInfo.UniversalName = Core.GetAttributeBundleVariableValue(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "Ordinal": if (visioContentType == VisioContentType.Addon) { publishInfo.Ordinal = ParseUint(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "PerformsActions": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.PerformsActions); break; case "HasAboutBox": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.HasAboutBox); break; case "ProvidesHelp": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.ProvidesHelp); break; case "DisplayWaitCursor": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.DisplayWaitCursor); break; case "HideInUI": ParseAddonAttrs(visioContentType, sourceLineNumbers, attrib, publishInfo, AddonAttrs.HideInUI); break; case "EnablingPolicy": if (visioContentType == VisioContentType.Addon) { publishInfo.EnablingPolicy = ParseEnablingPolicy(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "StaticEnableConditions": if (visioContentType == VisioContentType.Addon) { publishInfo.StaticEnableConditions = ParseStaticEnableConditions(sourceLineNumbers, attrib); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; case "InvokeOnStartup": if (visioContentType == VisioContentType.Addon) { publishInfo.InvokeOnStartup = (YesNoType.Yes == Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)); } else { Core.UnexpectedAttribute(sourceLineNumbers, attrib); } break; default: Core.UnexpectedAttribute(sourceLineNumbers, attrib); break; } } if (string.IsNullOrEmpty(publishInfo.MenuPath)) { if (visioContentType == VisioContentType.Template || visioContentType == VisioContentType.Stencil) { Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "MenuPath")); } } if (publishInfo.VisioVersion == VisioVersion.Default) { publishInfo.VisioVersion = VisioPublishInfo.GetDefaultVisioVersion(fileName); } if (publishInfo.VisioEdition == VisioEdition.Default) { publishInfo.VisioEdition = (VisioEdition.X86 | VisioEdition.X64); } if ((publishInfo.VisioEdition & VisioEdition.X86) == VisioEdition.X86) { Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "UpdateConfigChangeID32"); } if ((publishInfo.VisioEdition & VisioEdition.X64) == VisioEdition.X64) { Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "UpdateConfigChangeID64"); } if (Core.EncounteredError) { return; } var featureId = feature ?? Guid.Empty.ToString("B"); var componentId = component ?? contextComponentId; foreach (var rowInfo in publishInfo.GenerateRowInfos(visioContentType, fileName)) { var row = Core.CreateRow(sourceLineNumbers, "PublishComponent"); row[0] = rowInfo.VisioComponentId; row[1] = rowInfo.Qualifier; row[2] = componentId; row[3] = rowInfo.AppData; row[4] = featureId; } }
/// <summary> /// Returns the ComponentID for PublishComponent table for given combination of version/content type. /// Visio Component ids are built using the following rule: /// {XXXXXX-XXXX-XXX-XXXXXY} - here X are fixed "base" digits, /// whereas the last one (Y) is determined by content type. /// </summary> /// <param name="contentType"></param> /// <param name="visioVersion"></param> /// <returns></returns> private static string GetVisioComponentId(VisioContentType contentType, VisioVersion visioVersion) { var pattern = GetVisioBaseComponentId(visioVersion); return pattern.Replace("X", Convert.ToInt32(contentType).ToString(CultureInfo.InvariantCulture)); }
/// <summary> /// Returns the list of PublishComponent rows /// </summary> /// <param name="visioContentType"></param> /// <param name="fileName"></param> /// <returns></returns> public IEnumerable<RowInfo> GenerateRowInfos(VisioContentType visioContentType, string fileName) { var result = new List<RowInfo>(); var editionCode = GetVisioEditionCode(VisioEdition); var enablingPolicyCode = (int) (EnablingPolicy) | (int) (StaticEnableConditions); var addonAttrsCode = (int) (AddonAttrs); var invokeOnStartupCode = (InvokeOnStartup ? 1 : 0); if ((VisioVersion & VisioVersion.Visio2003) == VisioVersion.Visio2003) { string appData2003 = ""; switch (visioContentType) { case VisioContentType.Stencil: case VisioContentType.Template: appData2003 = String.Format(@"{0}|{1}", MenuPath, AltNames); break; case VisioContentType.Help: appData2003 = null; break; case VisioContentType.Addon: appData2003 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode); break; } if (VisioLanguage == 1) { foreach (var lcid in GetAllVisioLanguageCodes()) { result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2003), Qualifier = MakeQualifier(visioContentType, lcid, fileName, Ordinal), AppData = appData2003 }); } } else { result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2003), Qualifier = MakeQualifier(visioContentType, VisioLanguage, fileName, Ordinal), AppData = appData2003 }); } } var qualifier = MakeQualifier(visioContentType, VisioLanguage, fileName, Ordinal); if ((VisioVersion & VisioVersion.Visio2007) == VisioVersion.Visio2007) { string appData2007 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2007 = String.Format(@"{0}|{1}", MenuPath, AltNames); break; case VisioContentType.Template: appData2007 = String.Format(@"{0}|{1}|{2}", MenuPath, AltNames, FeaturedTemplate ? 1 : 0); break; case VisioContentType.Help: appData2007 = "-1"; break; case VisioContentType.Addon: appData2007 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2007), Qualifier = qualifier, AppData = appData2007 }); } if ((VisioVersion & VisioVersion.Visio2010) == VisioVersion.Visio2010) { string appData2010 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2010 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, QuickShapesCount, editionCode); break; case VisioContentType.Template: appData2010 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, 1, editionCode); break; case VisioContentType.Help: appData2010 = "-1"; break; case VisioContentType.Addon: appData2010 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode, editionCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2010), Qualifier = qualifier, AppData = appData2010 }); } if ((VisioVersion & VisioVersion.Visio2013) == VisioVersion.Visio2013) { string appData2013 = ""; switch (visioContentType) { case VisioContentType.Stencil: appData2013 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, QuickShapesCount, editionCode); break; case VisioContentType.Template: appData2013 = String.Format(@"{0}|{1}|{2}|{3}", MenuPath, AltNames, 1, editionCode); break; case VisioContentType.Help: appData2013 = "-1"; break; case VisioContentType.Addon: appData2013 = String.Format(@"{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", MenuPath, LocalizedName, UniversalName, Ordinal, addonAttrsCode, enablingPolicyCode, invokeOnStartupCode, editionCode); break; } result.Add( new RowInfo { VisioComponentId = GetVisioComponentId(visioContentType, VisioVersion.Visio2013), Qualifier = qualifier, AppData = appData2013 }); } return result; }
/// <summary> /// Builds a "Qualifier" cell of teh "PublishComponent" table out of it's parts. /// </summary> /// <param name="visioContentType"></param> /// <param name="lcid"></param> /// <param name="fileName"></param> /// <param name="ordinal"></param> /// <returns></returns> public static string MakeQualifier(VisioContentType visioContentType, int lcid, string fileName, uint ordinal) { return (visioContentType == VisioContentType.Addon) ? String.Format(@"{0}\{1}\{2}", lcid, ordinal - 1, fileName) : String.Format(@"{0}\{1}", lcid, fileName); }