aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/WixDistribution.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/WixDistribution.cs')
-rw-r--r--src/WixToolset.Core/WixDistribution.cs109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/WixToolset.Core/WixDistribution.cs b/src/WixToolset.Core/WixDistribution.cs
new file mode 100644
index 00000000..4ceb8982
--- /dev/null
+++ b/src/WixToolset.Core/WixDistribution.cs
@@ -0,0 +1,109 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3using System;
4using System.Diagnostics;
5using System.Reflection;
6using System.Resources;
7
8[assembly: NeutralResourcesLanguage("en-US")]
9
10namespace WixToolset
11{
12 /// <summary>
13 /// Distribution specific strings.
14 /// </summary>
15 internal static class WixDistribution
16 {
17 /// <summary>
18 /// News URL for the distribution.
19 /// </summary>
20 public static string NewsUrl = "http://wixtoolset.org/news/";
21
22 /// <summary>
23 /// Short product name for the distribution.
24 /// </summary>
25 public static string ShortProduct = "WiX Toolset";
26
27 /// <summary>
28 /// Support URL for the distribution.
29 /// </summary>
30 public static string SupportUrl = "http://wixtoolset.org/";
31
32 /// <summary>
33 /// Telemetry URL format for the distribution.
34 /// </summary>
35 public static string TelemetryUrlFormat = "http://wixtoolset.org/telemetry/v{0}/?r={1}";
36
37 /// <summary>
38 /// VS Extensions Landing page Url for the distribution.
39 /// </summary>
40 public static string VSExtensionsLandingUrl = "http://wixtoolset.org/releases/";
41
42 public static string ReplacePlaceholders(string original, Assembly assembly)
43 {
44 if (null != assembly)
45 {
46 FileVersionInfo fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location);
47
48 original = original.Replace("[FileComments]", fileVersion.Comments);
49 original = original.Replace("[FileCopyright]", fileVersion.LegalCopyright);
50 original = original.Replace("[FileProductName]", fileVersion.ProductName);
51 original = original.Replace("[FileVersion]", fileVersion.FileVersion);
52
53 if (original.Contains("[FileVersionMajorMinor]"))
54 {
55 Version version = new Version(fileVersion.FileVersion);
56 original = original.Replace("[FileVersionMajorMinor]", String.Concat(version.Major, ".", version.Minor));
57 }
58
59 AssemblyCompanyAttribute company;
60 if (WixDistribution.TryGetAttribute(assembly, out company))
61 {
62 original = original.Replace("[AssemblyCompany]", company.Company);
63 }
64
65 AssemblyCopyrightAttribute copyright;
66 if (WixDistribution.TryGetAttribute(assembly, out copyright))
67 {
68 original = original.Replace("[AssemblyCopyright]", copyright.Copyright);
69 }
70
71 AssemblyDescriptionAttribute description;
72 if (WixDistribution.TryGetAttribute(assembly, out description))
73 {
74 original = original.Replace("[AssemblyDescription]", description.Description);
75 }
76
77 AssemblyProductAttribute product;
78 if (WixDistribution.TryGetAttribute(assembly, out product))
79 {
80 original = original.Replace("[AssemblyProduct]", product.Product);
81 }
82
83 AssemblyTitleAttribute title;
84 if (WixDistribution.TryGetAttribute(assembly, out title))
85 {
86 original = original.Replace("[AssemblyTitle]", title.Title);
87 }
88 }
89
90 original = original.Replace("[NewsUrl]", WixDistribution.NewsUrl);
91 original = original.Replace("[ShortProduct]", WixDistribution.ShortProduct);
92 original = original.Replace("[SupportUrl]", WixDistribution.SupportUrl);
93 return original;
94 }
95
96 private static bool TryGetAttribute<T>(Assembly assembly, out T attribute) where T : Attribute
97 {
98 attribute = null;
99
100 object[] customAttributes = assembly.GetCustomAttributes(typeof(T), false);
101 if (null != customAttributes && 0 < customAttributes.Length)
102 {
103 attribute = customAttributes[0] as T;
104 }
105
106 return null != attribute;
107 }
108 }
109}