64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Reflection;
|
|
using Microsoft.VisualStudio.Shell;
|
|
|
|
namespace Microsoft.VisualStudio.RazorExtension
|
|
{
|
|
public class AboutDialogInfoAttribute : RegistrationAttribute
|
|
{
|
|
private readonly string _detailsId;
|
|
private readonly string _name;
|
|
private readonly string _nameId;
|
|
private readonly string _packageGuid;
|
|
|
|
// nameId and detailsId are resource IDs, they should start with #
|
|
public AboutDialogInfoAttribute(string packageGuid, string name, string nameId, string detailsId)
|
|
{
|
|
_packageGuid = packageGuid;
|
|
_name = name;
|
|
_nameId = nameId;
|
|
_detailsId = detailsId;
|
|
}
|
|
|
|
// This is a resource ID it should start with #
|
|
public string IconResourceID { get; set; }
|
|
|
|
private string GetKeyName()
|
|
{
|
|
return "InstalledProducts\\" + _name;
|
|
}
|
|
|
|
public override void Register(RegistrationContext context)
|
|
{
|
|
var attribute = typeof(AboutDialogInfoAttribute).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
|
|
var version = attribute?.InformationalVersion;
|
|
|
|
using (var key = context.CreateKey(GetKeyName()))
|
|
{
|
|
key.SetValue(null, _nameId);
|
|
key.SetValue("Package", Guid.Parse(_packageGuid).ToString("B"));
|
|
key.SetValue("ProductDetails", _detailsId);
|
|
key.SetValue("UseInterface", false);
|
|
key.SetValue("UseVSProductID", false);
|
|
|
|
if (version != null)
|
|
{
|
|
key.SetValue("PID", version);
|
|
}
|
|
|
|
if (IconResourceID != null)
|
|
{
|
|
key.SetValue("LogoID", IconResourceID);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void Unregister(RegistrationContext context)
|
|
{
|
|
context.RemoveKey(GetKeyName());
|
|
}
|
|
}
|
|
} |