浏览代码

Delete C# service... going C++, probably integrating with core.

Adam Ierymenko 11 年之前
父节点
当前提交
8031fe00c7

+ 0 - 71
windows/ZeroTierOne.sln

@@ -13,11 +13,6 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroTierOne", "ZeroTierOne\ZeroTierOne.vcxproj", "{B00A4957-5977-4AC1-9EF4-571DC27EADA2}"
 EndProject
 Project("{6141683F-8A12-4E36-9623-2EB02B2C2303}") = "ZeroTierOneInstaller", "ZeroTierOneInstaller\ZeroTierOneInstaller.isproj", "{C4424647-0581-47D1-918B-575BFF735CAA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3} = {63D28112-9A56-42FA-9C3E-EF6C58AF09B3}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZeroTierOneService", "ZeroTierOneService\ZeroTierOneService.csproj", "{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -511,72 +506,6 @@ Global
 		{C4424647-0581-47D1-918B-575BFF735CAA}.Win8 Release|Win32.Build.0 = SingleImage
 		{C4424647-0581-47D1-918B-575BFF735CAA}.Win8 Release|x64.ActiveCfg = SingleImage
 		{C4424647-0581-47D1-918B-575BFF735CAA}.Win8 Release|x64.Build.0 = SingleImage
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.CD_ROM|x64.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|Win32.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.DVD-5|x64.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Release|x64.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.SingleImage|x64.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|Any CPU.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|Win32.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Debug|x64.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Vista Release|x64.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|Any CPU.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|Win32.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Debug|x64.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win7 Release|x64.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|Any CPU.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|Win32.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Debug|x64.ActiveCfg = Debug|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|Any CPU.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|Any CPU.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|Mixed Platforms.Build.0 = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|Win32.ActiveCfg = Release|Any CPU
-		{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}.Win8 Release|x64.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 0 - 6
windows/ZeroTierOneService/App.config

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-    </startup>
-</configuration>

+ 0 - 25
windows/ZeroTierOneService/Program.cs

@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.ServiceProcess;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ZeroTierOneService
-{
-    static class Program
-    {
-        /// <summary>
-        /// The main entry point for the application.
-        /// </summary>
-        static void Main()
-        {
-            ServiceBase[] ServicesToRun;
-            ServicesToRun = new ServiceBase[] 
-            { 
-                new Service() 
-            };
-            ServiceBase.Run(ServicesToRun);
-        }
-    }
-}

+ 0 - 36
windows/ZeroTierOneService/Properties/AssemblyInfo.cs

@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("ZeroTierOneService")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ZeroTierOneService")]
-[assembly: AssemblyCopyright("Copyright ©  2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("540d1a89-f952-4927-a99a-cb0fb4d9d619")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]

+ 0 - 41
windows/ZeroTierOneService/Service.Designer.cs

@@ -1,41 +0,0 @@
-namespace ZeroTierOneService
-{
-    partial class Service
-    {
-        /// <summary> 
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Component Designer generated code
-
-        /// <summary> 
-        /// Required method for Designer support - do not modify 
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            // 
-            // Service
-            // 
-            this.ServiceName = "Service1";
-
-        }
-
-        #endregion
-
-    }
-}

+ 0 - 110
windows/ZeroTierOneService/Service.cs

@@ -1,110 +0,0 @@
-using System;
-using System.IO;
-using System.Collections.Generic;
-using System.Data;
-using System.Diagnostics;
-using System.ServiceProcess;
-using System.Threading;
-
-namespace ZeroTierOneService
-{
-    public partial class Service : ServiceBase
-    {
-        public Service()
-        {
-            InitializeComponent();
-
-            this.ztHome = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + Path.DirectorySeparatorChar + "ZeroTier" + Path.DirectorySeparatorChar + "One";
-            this.ztUpdatesFolder = this.ztHome + Path.DirectorySeparatorChar + "updates.d";
-            this.ztBinary = this.ztHome + Path.DirectorySeparatorChar + (Environment.Is64BitOperatingSystem ? "zerotier-one_x64.exe" : "zerotier-one_x86.exe");
-
-            this.ztService = null;
-            this.ztKiller = null;
-        }
-
-        protected override void OnStart(string[] args)
-        {
-            startZeroTierDaemon();
-        }
-
-        protected override void OnStop()
-        {
-            stopZeroTierDaemon();
-        }
-
-        private void startZeroTierDaemon()
-        {
-            if (ztService != null)
-                return;
-            ztService = new Process();
-            try
-            {
-                ztService.StartInfo.UseShellExecute = false;
-                ztService.StartInfo.FileName = ztBinary;
-                ztService.StartInfo.Arguments = "";
-                ztService.StartInfo.CreateNoWindow = true;
-                ztService.Exited += ztService_Exited;
-                ztService.Start();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-                ztService = null;
-            }
-        }
-
-        private void stopZeroTierDaemon()
-        {
-            while (ztKiller != null)
-                Thread.Sleep(250);
-
-            ztKiller = new Process();
-            try
-            {
-                ztKiller.StartInfo.UseShellExecute = false;
-                ztKiller.StartInfo.FileName = ztBinary;
-                ztKiller.StartInfo.Arguments = "-q terminate ServiceShutdown";
-                ztKiller.StartInfo.CreateNoWindow = true;
-                ztKiller.Exited += ztKiller_Exited;
-                ztKiller.Start();
-            }
-            catch (Exception e)
-            {
-                ztKiller = null;
-            }
-
-            int waited = 0;
-            while (ztKiller != null)
-            {
-                Thread.Sleep(250);
-                if (++waited > 100)
-                    break;
-            }
-
-            if (ztService != null)
-            {
-                ztService.Kill();
-                ztService = null;
-            }
-        }
-
-        // Event generated when ztService exits
-        private void ztService_Exited(object sender, System.EventArgs e)
-        {
-            ztService = null;
-        }
-
-        // Event generated when ztKiller is done
-        private void ztKiller_Exited(object sender, System.EventArgs e)
-        {
-            ztKiller = null;
-        }
-
-        private string ztHome;
-        private string ztUpdatesFolder;
-        private string ztBinary;
-
-        private volatile Process ztService;
-        private volatile Process ztKiller;
-    }
-}

+ 0 - 123
windows/ZeroTierOneService/Service.resx

@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>False</value>
-  </metadata>
-</root>

+ 0 - 116
windows/ZeroTierOneService/ZeroTierOneService.csproj

@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{63D28112-9A56-42FA-9C3E-EF6C58AF09B3}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>ZeroTierOneService</RootNamespace>
-    <AssemblyName>ZeroTierOneService</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup>
-    <StartupObject>ZeroTierOneService.Program</StartupObject>
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignAssembly>false</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignManifests>false</SignManifests>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ManifestCertificateThumbprint>5809BB3255B4F32DD93619C1CF26A7DF6C282A89</ManifestCertificateThumbprint>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.ServiceProcess" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Service.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="Service.Designer.cs">
-      <DependentUpon>Service.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Service.resx">
-      <DependentUpon>Service.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
-      <Visible>False</Visible>
-      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>