|
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Reflection;
using System.IO;
using System.Xml;
using System.Windows.Forms;
namespace RegexTester
{
/// <summary>
/// Installs the Regular Expression Tester.
/// </summary>
[RunInstaller(true)]
public partial class RegexTesterInstaller : System.Configuration.Install.Installer
{
public RegexTesterInstaller()
{
InitializeComponent();
}
private string GetAddInXmlPath()
{
return Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData),
@"Microsoft\MSEnvShared\Addins\RegularExpressionEvaluator.AddIn");
}
public override void Install(System.Collections.IDictionary stateSaver)
{
string assemblyPath = base.Context.Parameters["AssemblyPath"];
string addinXmlPath = GetAddInXmlPath();
Stream addInStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("RegexTester.RegexTester.AddIn");
XmlDocument doc = new XmlDocument();
doc.Load(addInStream);
XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(doc.NameTable);
nameSpaceManager.AddNamespace("addin", "http://schemas.microsoft.com/AutomationExtensibility");
XmlNode node = doc.SelectSingleNode("/addin:Extensibility/addin:Addin/addin:Assembly", nameSpaceManager);
node.InnerText = assemblyPath;
string directoryName = Path.GetDirectoryName(addinXmlPath);
if (!Directory.Exists(directoryName))
{
Directory.CreateDirectory(directoryName);
}
using (FileStream fs = new FileStream(addinXmlPath, FileMode.Create, FileAccess.Write, FileShare.Write))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = System.Text.Encoding.UTF8;
XmlWriter writer = XmlWriter.Create(fs, settings);
doc.WriteTo(writer);
writer.Flush();
writer.Close();
}
base.Install(stateSaver);
}
private void DeleteAddInFile()
{
string file = GetAddInXmlPath();
if (File.Exists(file))
{
File.Delete(file);
}
}
public override void Uninstall(IDictionary savedState)
{
DeleteAddInFile();
base.Uninstall(savedState);
}
public override void Rollback(IDictionary savedState)
{
DeleteAddInFile();
base.Rollback(savedState);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
.NET developer. I wanted to be first an astronaut, then a jet pilot, but when I got a Commodore 64 for Christmas I never looked back. Also I would never have qualified for the first two things and everybody knows computer programmers get all the girls.