JD2022-TU1/main/tools/legacy/ProjectScanner/ProjectScannerSetupClass/ProjectScannerSetup.cs

105 lines
4.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.IO;
using System.Xml;
namespace ProjectScannerSetupClass
{
[RunInstaller(true)]
public partial class ProjectScannerSetup : Installer
{
public ProjectScannerSetup()
{
InitializeComponent();
}
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
try
{
string UserProfile = Environment.GetEnvironmentVariable("USERPROFILE");
string PathToP4VSettings = Path.Combine(UserProfile, ".p4qt");
string CustomToolsXML = Path.Combine(PathToP4VSettings, "customtools.xml");
XmlDocument xml = new XmlDocument();
XmlNode rootNode;
if (!File.Exists(CustomToolsXML) || new FileInfo(CustomToolsXML).Length == 0)
{
xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", "no"));
rootNode = xml.AppendChild(xml.CreateElement("CustomToolDefList"));
rootNode.Attributes.Append(xml.CreateAttribute("varName"));
rootNode.Attributes["varName"].Value = "customtooldeflist";
}
else
{
xml.Load(CustomToolsXML);
rootNode = xml.SelectSingleNode("/CustomToolDefList");
}
XmlNode NewTool;
XmlNode ToolDef;
XmlNode subNode;
NewTool = xml.SelectSingleNode("/CustomToolDefList/CustomToolDef/Definition/Name[contains(.,'Rename && change paths in techno files')]");
if (NewTool == null)
{
NewTool = xml.CreateElement("CustomToolDef");
ToolDef = xml.CreateElement("Definition");
subNode = ToolDef.AppendChild(xml.CreateElement("Name"));
subNode.InnerText = "Rename && change paths in techno files";
subNode = ToolDef.AppendChild(xml.CreateElement("Command"));
subNode.InnerText = Path.Combine(Context.Parameters["TargetDir"], "ProjectScannerP4V.exe");
subNode = ToolDef.AppendChild(xml.CreateElement("Arguments"));
subNode.InnerText = "move $c $p $u %D";
subNode = NewTool.AppendChild(xml.CreateElement("AddToContext"));
subNode.InnerText = "true";
NewTool.AppendChild(ToolDef);
rootNode.AppendChild(NewTool);
}
else
{
NewTool.SelectSingleNode("../Arguments").InnerText = "move $i $p $u %D";
NewTool.SelectSingleNode("../Command").InnerText = Path.Combine(Context.Parameters["TargetDir"], "ProjectScannerP4V.exe");
}
NewTool = xml.SelectSingleNode("/CustomToolDefList/CustomToolDef/Definition/Name[contains(.,'Change paths in techno files')]");
if (NewTool == null)
{
NewTool = xml.CreateElement("CustomToolDef");
ToolDef = xml.CreateElement("Definition");
subNode = ToolDef.AppendChild(xml.CreateElement("Name"));
subNode.InnerText = "Change paths in techno files";
subNode = ToolDef.AppendChild(xml.CreateElement("Command"));
subNode.InnerText = Path.Combine(Context.Parameters["TargetDir"], "ProjectScannerP4V.exe");
subNode = ToolDef.AppendChild(xml.CreateElement("Arguments"));
subNode.InnerText = "change $i $p $u %D";
subNode = NewTool.AppendChild(xml.CreateElement("AddToContext"));
subNode.InnerText = "true";
NewTool.AppendChild(ToolDef);
rootNode.AppendChild(NewTool);
}
else
{
NewTool.SelectSingleNode("../Arguments").InnerText = "change $c $p $u %D";
NewTool.SelectSingleNode("../Command").InnerText = Path.Combine(Context.Parameters["TargetDir"], "ProjectScannerP4V.exe");
}
xml.Save(CustomToolsXML);
}
catch (System.Exception ex)
{
throw new InstallException("Install aborted\nreason:\n" + ex.ToString(), ex);
}
}
}
}