105 lines
4.6 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|