aboutsummaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolset.WixBA/WixDistribution.cs
blob: 0d20e5855b1e9448f1615f8b0f9fd63ded1b5b75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// 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.

using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;

[assembly: AssemblyCompany(".NET Foundation")]
[assembly: AssemblyCopyright("Copyright (c) .NET Foundation and contributors. All rights reserved.")]
[assembly: AssemblyProduct("WiX Toolset")]

#if DEBUG
    [assembly: AssemblyConfiguration("DEBUG")]
#else
    [assembly: AssemblyConfiguration("")]
#endif
[assembly: NeutralResourcesLanguage("en-US")]

namespace WixToolset
{
    /// <summary>
    /// Distribution specific strings.
    /// </summary>
    internal static class WixDistribution
    {
        /// <summary>
        /// News URL for the distribution.
        /// </summary>
        public static string NewsUrl = "http://wixtoolset.org/news/";

        /// <summary>
        /// Short product name for the distribution.
        /// </summary>
        public static string ShortProduct = "WiX Toolset";

        /// <summary>
        /// Support URL for the distribution.
        /// </summary>
        public static string SupportUrl = "http://wixtoolset.org/";

        /// <summary>
        /// Telemetry URL format for the distribution.
        /// </summary>
        public static string TelemetryUrlFormat = "http://wixtoolset.org/integrationtelemetry/v{0}/?r={1}";

        /// <summary>
        /// VS Extensions Landing page Url for the distribution.
        /// </summary>
        public static string VSExtensionsLandingUrl = "http://wixtoolset.org/releases/";

        public static string ReplacePlaceholders(string original, Assembly assembly)
        {
            if (null != assembly)
            {
                FileVersionInfo fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location);

                original = original.Replace("[FileComments]", fileVersion.Comments);
                original = original.Replace("[FileCopyright]", fileVersion.LegalCopyright);
                original = original.Replace("[FileProductName]", fileVersion.ProductName);
                original = original.Replace("[FileVersion]", fileVersion.FileVersion);

                if (original.Contains("[FileVersionMajorMinor]"))
                {
                    Version version = new Version(fileVersion.FileVersion);
                    original = original.Replace("[FileVersionMajorMinor]", String.Concat(version.Major, ".", version.Minor));
                }

                AssemblyCompanyAttribute company;
                if (WixDistribution.TryGetAttribute(assembly, out company))
                {
                    original = original.Replace("[AssemblyCompany]", company.Company);
                }

                AssemblyCopyrightAttribute copyright;
                if (WixDistribution.TryGetAttribute(assembly, out copyright))
                {
                    original = original.Replace("[AssemblyCopyright]", copyright.Copyright);
                }

                AssemblyDescriptionAttribute description;
                if (WixDistribution.TryGetAttribute(assembly, out description))
                {
                    original = original.Replace("[AssemblyDescription]", description.Description);
                }

                AssemblyProductAttribute product;
                if (WixDistribution.TryGetAttribute(assembly, out product))
                {
                    original = original.Replace("[AssemblyProduct]", product.Product);
                }

                AssemblyTitleAttribute title;
                if (WixDistribution.TryGetAttribute(assembly, out title))
                {
                    original = original.Replace("[AssemblyTitle]", title.Title);
                }
            }

            original = original.Replace("[NewsUrl]", WixDistribution.NewsUrl);
            original = original.Replace("[ShortProduct]", WixDistribution.ShortProduct);
            original = original.Replace("[SupportUrl]", WixDistribution.SupportUrl);
            return original;
        }

        private static bool TryGetAttribute<T>(Assembly assembly, out T attribute) where T : Attribute
        {
            attribute = null;

            object[] customAttributes = assembly.GetCustomAttributes(typeof(T), false);
            if (null != customAttributes && 0 < customAttributes.Length)
            {
                attribute = customAttributes[0] as T;
            }

            return null != attribute;
        }
    }
}