diff --git a/ZitiConsoleApp/Program.cs b/ZitiConsoleApp/Program.cs new file mode 100644 index 00000000..8fbdbf97 --- /dev/null +++ b/ZitiConsoleApp/Program.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using System.Net; +using System.Xml; +using System.Text; + +namespace ZitiConsoleApp { + class Program { + + private static string _versionUrl = "https://netfoundry.jfrog.io/netfoundry/ziti-maven-snapshot/ziti-tunnel-win/amd64/windows/ziti-tunnel-win/maven-metadata.xml"; + private static string _serviceUrl = "https://netfoundry.jfrog.io/netfoundry/ziti-maven-snapshot/ziti-tunnel-win/amd64/windows/ziti-tunnel-win/${version}/ziti-tunnel-win-${version}.zip"; + + static void Main(string[] args) { + var request = WebRequest.Create(_versionUrl) as HttpWebRequest; + var response = request.GetResponse(); + + Stream receiveStream = response.GetResponseStream(); + StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); + + var result = readStream.ReadToEnd(); + + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(result); + + XmlNode node = xmlDoc.SelectSingleNode("metadata/versioning/release"); + string version = node.InnerText; + Console.WriteLine(version); + + string remoteService = _serviceUrl.Replace("${version}", version); + Console.WriteLine(remoteService); + } + } +} diff --git a/ZitiConsoleApp/ZitiConsoleApp.csproj b/ZitiConsoleApp/ZitiConsoleApp.csproj new file mode 100644 index 00000000..052b6d93 --- /dev/null +++ b/ZitiConsoleApp/ZitiConsoleApp.csproj @@ -0,0 +1,9 @@ + + + + Exe + netcoreapp3.1 + Debug;Release;Releases + + + diff --git a/ZitiInstaller/Package.appxmanifest b/ZitiInstaller/Package.appxmanifest index 274a1d53..ca4464aa 100644 --- a/ZitiInstaller/Package.appxmanifest +++ b/ZitiInstaller/Package.appxmanifest @@ -10,7 +10,7 @@ + Version="0.1.1.0" /> Ziti Tunnel @@ -46,6 +46,11 @@ + + + + + diff --git a/ZitiInstaller/ZitiInstaller.wapproj b/ZitiInstaller/ZitiInstaller.wapproj index ff8c8d26..59db6eb7 100644 --- a/ZitiInstaller/ZitiInstaller.wapproj +++ b/ZitiInstaller/ZitiInstaller.wapproj @@ -8,6 +8,26 @@ Debug x86 + + Releases + AnyCPU + + + Releases + ARM + + + Releases + ARM64 + + + Releases + x64 + + + Releases + x86 + Release x86 @@ -156,6 +176,7 @@ + \ No newline at end of file diff --git a/ZitiTunneler/App.xaml b/ZitiTunneler/App.xaml index 231d8cd0..fa730afb 100644 --- a/ZitiTunneler/App.xaml +++ b/ZitiTunneler/App.xaml @@ -45,7 +45,8 @@ - + + @@ -89,7 +90,7 @@ - + diff --git a/ZitiTunneler/MainMenu.xaml b/ZitiTunneler/MainMenu.xaml index 73fa16c2..2fbe326d 100644 --- a/ZitiTunneler/MainMenu.xaml +++ b/ZitiTunneler/MainMenu.xaml @@ -60,7 +60,6 @@ - diff --git a/ZitiTunneler/MainMenu.xaml.cs b/ZitiTunneler/MainMenu.xaml.cs index d4b04480..04c9d379 100644 --- a/ZitiTunneler/MainMenu.xaml.cs +++ b/ZitiTunneler/MainMenu.xaml.cs @@ -125,22 +125,6 @@ namespace ZitiTunneler Process.Start(new ProcessStartInfo("https://support.netfoundry.io") { UseShellExecute = true }); } - private void RunScript(string scriptText) { - using (PowerShell PowerShellInstance = PowerShell.Create()) { - PowerShellInstance.AddScript(scriptText); - IAsyncResult result = PowerShellInstance.BeginInvoke(); - while (result.IsCompleted==false) { - Console.WriteLine("Waiting for pipeline to finish..."); - Thread.Sleep(1000); - } - System.Windows.MessageBox.Show("Network Reset"); - } - } - - private void ResetNetwork(object sender, MouseButtonEventArgs e) { - RunScript("get-netipinterface|ForEach-Object { Set-DnsClientServerAddress-InterfaceIndex $_.ifIndex-ResetServerAddresses}"); - } - private void DetachWindow(object sender, MouseButtonEventArgs e) { Application.Current.MainWindow.ShowInTaskbar = true; DetachButton.Visibility = Visibility.Collapsed; diff --git a/ZitiTunneler/MainWindow.xaml.cs b/ZitiTunneler/MainWindow.xaml.cs index 64b10746..d496e861 100644 --- a/ZitiTunneler/MainWindow.xaml.cs +++ b/ZitiTunneler/MainWindow.xaml.cs @@ -36,55 +36,10 @@ namespace ZitiTunneler { } } - public static bool IsAdministrator() { - using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) { - WindowsPrincipal principal = new WindowsPrincipal(identity); - return principal.IsInRole(WindowsBuiltInRole.Administrator); - } - } - - private void UpdateServiceFiles() { - if (!Directory.Exists(Path.Combine(Environment.CurrentDirectory, "Service"))) Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "Service")); - string[] files = Directory.GetFiles(Path.Combine(Environment.CurrentDirectory, "Service")); - foreach (string file in files) { - File.Delete(file); - Console.WriteLine($"{file} is deleted."); - } - WebClient webClient = new WebClient(); - webClient.DownloadFile("https://actieve.com/windows-tunneler.zip", Path.Combine(Environment.CurrentDirectory, "Service")+@"\windows-tunneler.zip"); - ZipFile.ExtractToDirectory(Path.Combine(Environment.CurrentDirectory, "Service")+@"\windows-tunneler.zip", Path.Combine(Environment.CurrentDirectory, "Service")); - } - private void LaunchOrInstall() { ServiceController ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName=="ziti"); if (ctl==null) { - if (IsAdministrator()) { - UpdateServiceFiles(); - ProcessStartInfo installService = new ProcessStartInfo(); - installService.CreateNoWindow = true; - installService.UseShellExecute = false; - installService.FileName = Path.Combine(Environment.CurrentDirectory, "Service") + @"\ziti-tunnel.exe"; - installService.WindowStyle = ProcessWindowStyle.Hidden; - installService.Arguments = "install"; - - try { - using (Process exeProcess = Process.Start(installService)) { - exeProcess.WaitForExit(); - ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "ziti"); - if (ctl.Status != ServiceControllerStatus.Running) { - try { - ctl.Start(); - } catch (Exception e) { - SetCantDisplay(); - } - } - } - } catch (Exception e) { - ShowError("Error Installing Service", e.ToString()); - } - } else { - ShowError("Admin Account", "Unable to install service, Admin Account required."); - } + SetCantDisplay(); } else { if (ctl.Status!=ServiceControllerStatus.Running) { try { @@ -260,10 +215,8 @@ namespace ZitiTunneler { private void IdentityForgotten(ZitiIdentity forgotten) { ZitiIdentity idToRemove = null; - foreach (var id in identities) - { - if(id.Fingerprint == forgotten.Fingerprint) - { + foreach (var id in identities) { + if(id.Fingerprint == forgotten.Fingerprint) { idToRemove = id; break; } @@ -301,25 +254,20 @@ namespace ZitiTunneler { ConnectButton.Visibility = Visibility.Visible; DisconnectButton.Visibility = Visibility.Collapsed; } - if (!Application.Current.Properties.Contains("ip")) - { + if (!Application.Current.Properties.Contains("ip")) { Application.Current.Properties.Add("ip", status?.IpInfo?.Ip); } - if (!Application.Current.Properties.Contains("subnet")) - { + if (!Application.Current.Properties.Contains("subnet")) { Application.Current.Properties.Add("subnet", status?.IpInfo?.Subnet); } - if (!Application.Current.Properties.Contains("mtu")) - { + if (!Application.Current.Properties.Contains("mtu")) { Application.Current.Properties.Add("mtu", status?.IpInfo?.MTU); } - if (!Application.Current.Properties.Contains("dns")) - { + if (!Application.Current.Properties.Contains("dns")) { Application.Current.Properties.Add("dns", status?.IpInfo?.DNS); } - foreach (var id in status.Identities) - { + foreach (var id in status.Identities) { updateViewWithIdentity(id); } LoadIdentities(); diff --git a/ZitiTunneler/ZitiTunneler.csproj b/ZitiTunneler/ZitiTunneler.csproj index cae95ba7..4d75f041 100644 --- a/ZitiTunneler/ZitiTunneler.csproj +++ b/ZitiTunneler/ZitiTunneler.csproj @@ -50,7 +50,7 @@ 4 - AnyCPU + x64 pdbonly true bin\Release\ @@ -69,7 +69,7 @@ - false + true true @@ -77,6 +77,12 @@ LocalIntranet + + bin\Releases\ + + + Assets\Images\icon.ico + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll @@ -310,7 +316,9 @@ - + + Always + @@ -325,14 +333,7 @@ false - - - False - Ziti Identity - Ziti - Assets\Images\ziti-white.ico - - + diff --git a/ZitiTunneler/app.manifest b/ZitiTunneler/app.manifest index 7937c16b..bebfd355 100644 --- a/ZitiTunneler/app.manifest +++ b/ZitiTunneler/app.manifest @@ -17,11 +17,11 @@ compatibility. --> - + - + diff --git a/ZitiTunnelerSetup/ZitiTunnelerSetup.vdproj b/ZitiTunnelerSetup/ZitiTunnelerSetup.vdproj new file mode 100644 index 00000000..93654ebf --- /dev/null +++ b/ZitiTunnelerSetup/ZitiTunnelerSetup.vdproj @@ -0,0 +1,1291 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:ZitiTunnelerSetup" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_1B500B533148B9BB79AEF46E6F944598" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1B500B533148B9BB79AEF46E6F944598" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1B500B533148B9BB79AEF46E6F944598" + "OwnerKey" = "8:_BA2D1FFB93DFA96B20BDB20713962934" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_32978CA1373CFEDD759D955C09DB168B" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_32978CA1373CFEDD759D955C09DB168B" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_375E7C39471F4B0C96A7BD07FF9C0DC1" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3A19D123B76E7211716C85D5D473426D" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3A19D123B76E7211716C85D5D473426D" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_652FE5D29FC827A3CC999C3EEE6D4B8E" + "OwnerKey" = "8:_3A19D123B76E7211716C85D5D473426D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7762155D0F77773FC97C65A65C78943D" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7762155D0F77773FC97C65A65C78943D" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AF4FA96205B54EA07F745C1DFF2955FC" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B80A689EE9414DD69D6FE8850A9C575E" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BA2D1FFB93DFA96B20BDB20713962934" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BA2D1FFB93DFA96B20BDB20713962934" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D3FEA36F3FA75A95B2CB8F7BFCC3794D" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EF617B01D446B5A22CC7D97D9AAFDE9C" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7762155D0F77773FC97C65A65C78943D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_EF617B01D446B5A22CC7D97D9AAFDE9C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_D3FEA36F3FA75A95B2CB8F7BFCC3794D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_AF4FA96205B54EA07F745C1DFF2955FC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_BA2D1FFB93DFA96B20BDB20713962934" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_1B500B533148B9BB79AEF46E6F944598" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_32978CA1373CFEDD759D955C09DB168B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_3A19D123B76E7211716C85D5D473426D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_652FE5D29FC827A3CC999C3EEE6D4B8E" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\ZitiTunnelerSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\ZitiTunnelerSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_13BD3CF2A83F4C6DB854F98476FAA80E" + { + "Name" = "8:Primary output from ZitiUpdateService (Active)" + "Condition" = "8:" + "Object" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_B360FBD8_70A3_420F_98BA_44461B934701" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_BAB8DCA65A6D46C094A74322A56906DB" + { + "Name" = "8:Primary output from ZitiUpdateService (Active)" + "Condition" = "8:" + "Object" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "FileType" = "3:2" + "InstallAction" = "3:4" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_B9CEDFA6_611F_48E6_839F_058342051E0C" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E1B64595A3CA487DA362A98B69A8484C" + { + "Name" = "8:Primary output from ZitiUpdateService (Active)" + "Condition" = "8:" + "Object" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "FileType" = "3:2" + "InstallAction" = "3:2" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_38A69FC7_4A1C_4526_B567_79C15BF881A7" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_EDD5EBFAFD934E42A87EAA0010F761E2" + { + "Name" = "8:Primary output from ZitiUpdateService (Active)" + "Condition" = "8:" + "Object" = "8:_D6CD48F4EF21498B9EC75A7FDF5B4559" + "FileType" = "3:2" + "InstallAction" = "3:3" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_B6BF88E7_4F5B_46EE_AD63_B527C3A6C5DE" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_4F975F9EF42D4EBCAA4029CFEF60926B" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.8" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_1B500B533148B9BB79AEF46E6F944598" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_1B500B533148B9BB79AEF46E6F944598" + { + "Name" = "8:Microsoft.Management.Infrastructure.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Management.Infrastructure.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_32978CA1373CFEDD759D955C09DB168B" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_32978CA1373CFEDD759D955C09DB168B" + { + "Name" = "8:System.Net.Http.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.Http.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_375E7C39471F4B0C96A7BD07FF9C0DC1" + { + "SourcePath" = "8:ziti-white.ico" + "TargetName" = "8:ziti-white.ico" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3A19D123B76E7211716C85D5D473426D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" + "ScatterAssemblies" + { + "_3A19D123B76E7211716C85D5D473426D" + { + "Name" = "8:System.IO.Compression.FileSystem.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.IO.Compression.FileSystem.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_652FE5D29FC827A3CC999C3EEE6D4B8E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_652FE5D29FC827A3CC999C3EEE6D4B8E" + { + "Name" = "8:System.IO.Compression.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.IO.Compression.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7762155D0F77773FC97C65A65C78943D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" + "ScatterAssemblies" + { + "_7762155D0F77773FC97C65A65C78943D" + { + "Name" = "8:System.IO.Compression.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.IO.Compression.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_AF4FA96205B54EA07F745C1DFF2955FC" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.NetworkInformation, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_AF4FA96205B54EA07F745C1DFF2955FC" + { + "Name" = "8:System.Net.NetworkInformation.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.NetworkInformation.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B80A689EE9414DD69D6FE8850A9C575E" + { + "SourcePath" = "8:ziti-green.ico" + "TargetName" = "8:ziti-green.ico" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_BA2D1FFB93DFA96B20BDB20713962934" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_BA2D1FFB93DFA96B20BDB20713962934" + { + "Name" = "8:System.Management.Automation.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Management.Automation.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_D3FEA36F3FA75A95B2CB8F7BFCC3794D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:Microsoft.Management.Infrastructure.Native, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=AMD64" + "ScatterAssemblies" + { + "_D3FEA36F3FA75A95B2CB8F7BFCC3794D" + { + "Name" = "8:Microsoft.Management.Infrastructure.Native.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Management.Infrastructure.Native.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EF617B01D446B5A22CC7D97D9AAFDE9C" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_EF617B01D446B5A22CC7D97D9AAFDE9C" + { + "Name" = "8:Newtonsoft.Json.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Newtonsoft.Json.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + "{5EB83D71-FA18-4901-BE56-DE22E13CC478}:_ABE7792AAA534CDAA6008798002D7833" + { + "Name" = "8:Ziti Identity" + "Description" = "8:Zitit Identity File" + "Extensions" = "8:.ziti" + "MIME" = "8:" + "Icon" = "8:_B80A689EE9414DD69D6FE8850A9C575E" + "IconIndex" = "3:0" + "Command" + { + "Command" = "8:_50597817BB3C4AF79F515907EDF0DD3F" + } + "Verbs" + { + "{95C0C507-CBF0-42B8-B119-07219E384A4A}:_23EB97F365E54E5F8D3CEC68533248DB" + { + "Command" = "8:&Open" + "Verb" = "8:open" + "Arguments" = "8:\"%1\"" + "Order" = "3:0" + } + } + } + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_2F842114EFAC40E0871CCAA28C0350B9" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_BEBBAC3CE69745BCB3D8C64B660AC583" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_C4D998AF993A4E24B116091330EFEBDA" + { + "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:Ziti Tunneler" + "ProductCode" = "8:{BA9C9F1A-83B6-4F8F-ACD3-60209838C5AE}" + "PackageCode" = "8:{00CD5F20-AE85-4888-9C48-2E61C27F253A}" + "UpgradeCode" = "8:{A9CDD816-1B98-4843-AAE6-69BC2B90561B}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:TRUE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:JeremyTellier" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:https://support.netfoundry.io" + "Title" = "8:ZitiTunnelerSetup" + "Subject" = "8:" + "ARPCONTACT" = "8:NetFoundry" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:https://netfoundry.io" + "ARPPRODUCTICON" = "8:_B80A689EE9414DD69D6FE8850A9C575E" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:1" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D51816AFBC0E46D989B00346B7A3F816" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D42ABFE51C084D54A718A2957392D2FE" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_B5BAC8FF9F324D139994143E9C54957C" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_76948CA454814D938693865C2453BA3D" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_17F59C349AE646EEAB190484ABF0FF24" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4509FE04070A48E59E66490836B68DAD" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A5EA88B12E724AE9BC93957EBF6A8408" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E34E1B827FF444C3A754B704D84CD677" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_3D18FD426677442C94D2DA4E7D28EB7A" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2A6D0BD2F256448B839AA1DE67A60C56" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A37BC95A6EA14C79A3886F85CDC50858" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D5E7C4DD7C07475E8F0DA8F8CC871063" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_4165E4F1DBCD43DBB484691F70AF1471" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_49E21B963D7F4F7990AF32FE889A2F40" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CAABC5F28CB8490B871DF9A128852D4C" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_8E463254A8D940EA9295F5C59CFE8AF5" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A06F0606723C4E29BC4BB2A1D77A3DFB" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_63BC30BF686E42E194137F3273D65CBD" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C0C5092D664F4768B9C8569AE714A55E" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_BC8E6A20B4074A769C839981CFE03A85" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D723E8C1EBED46BA8FE38326C25BF04F" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9F6BEF5AFE98418D9173A610523BD7F5" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_50597817BB3C4AF79F515907EDF0DD3F" + { + "SourcePath" = "8:..\\ZitiTunneler\\obj\\Release\\ZitiTunneler.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{FA4291EA-A97E-4854-959F-91EE7B330B37}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D6CD48F4EF21498B9EC75A7FDF5B4559" + { + "SourcePath" = "8:..\\ZitiUpdateService\\obj\\Release\\ZitiUpdateService.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C4D998AF993A4E24B116091330EFEBDA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{9AB81609-F5DD-40A6-87B5-F3279D48514D}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/ZitiTunnelerSetup/ziti-green.ico b/ZitiTunnelerSetup/ziti-green.ico new file mode 100644 index 00000000..1773e4e9 Binary files /dev/null and b/ZitiTunnelerSetup/ziti-green.ico differ diff --git a/ZitiTunnelerSetup/ziti-white.ico b/ZitiTunnelerSetup/ziti-white.ico new file mode 100644 index 00000000..84992d63 Binary files /dev/null and b/ZitiTunnelerSetup/ziti-white.ico differ diff --git a/ZitiUWPSolution.sln b/ZitiUWPSolution.sln index 7009b81a..138727bc 100644 --- a/ZitiUWPSolution.sln +++ b/ZitiUWPSolution.sln @@ -13,5 +13,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZitiTunneler", "ZitiTunnele EndProject Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "ZitiInstaller", "ZitiInstaller\ZitiInstaller.wapproj", "{520E523A-1E9B-4983-ABA9-0EB3B27B6420}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZitiUpdateService", "ZitiUpdateService\ZitiUpdateService.csproj", "{9AB81609-F5DD-40A6-87B5-F3279D48514D}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ZitiTunnelerSetup", "ZitiTunnelerSetup\ZitiTunnelerSetup.vdproj", "{6ABD9DF3-3298-4038-ABED-B16FFD5FF66D}" +EndProject Global EndGlobal diff --git a/ZitiUpdateService/App.config b/ZitiUpdateService/App.config new file mode 100644 index 00000000..193aecc6 --- /dev/null +++ b/ZitiUpdateService/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ZitiUpdateService/Program.cs b/ZitiUpdateService/Program.cs new file mode 100644 index 00000000..d9bdd216 --- /dev/null +++ b/ZitiUpdateService/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceProcess; +using System.Text; +using System.Threading.Tasks; + +namespace ZitiUpdateService { + static class Program { + /// + /// The main entry point for the application. + /// + static void Main() { + ServiceBase[] ServicesToRun; + ServicesToRun = new ServiceBase[] + { + new UpdateService() + }; + ServiceBase.Run(ServicesToRun); + } + } +} diff --git a/ZitiUpdateService/ProjectInstaller.Designer.cs b/ZitiUpdateService/ProjectInstaller.Designer.cs new file mode 100644 index 00000000..8e4eb85a --- /dev/null +++ b/ZitiUpdateService/ProjectInstaller.Designer.cs @@ -0,0 +1,56 @@ +namespace ZitiUpdateService { + partial class ProjectInstaller { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + this.ZitiUpdateProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller(); + this.ZitiUpdateServiceInstaller = new System.ServiceProcess.ServiceInstaller(); + // + // ZitiUpdateProcessInstaller + // + this.ZitiUpdateProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; + this.ZitiUpdateProcessInstaller.Password = null; + this.ZitiUpdateProcessInstaller.Username = null; + // + // ZitiUpdateServiceInstaller + // + this.ZitiUpdateServiceInstaller.Description = "Keep Ziti Service Software Up To Date"; + this.ZitiUpdateServiceInstaller.DisplayName = "Ziti Update Service"; + this.ZitiUpdateServiceInstaller.ServiceName = "ZitiUpdateService"; + this.ZitiUpdateServiceInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic; + this.ZitiUpdateServiceInstaller.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.ZitiUpdateServiceInstaller_AfterInstall); + // + // ProjectInstaller + // + this.Installers.AddRange(new System.Configuration.Install.Installer[] { + this.ZitiUpdateProcessInstaller, + this.ZitiUpdateServiceInstaller}); + + } + + #endregion + + private System.ServiceProcess.ServiceProcessInstaller ZitiUpdateProcessInstaller; + private System.ServiceProcess.ServiceInstaller ZitiUpdateServiceInstaller; + } +} \ No newline at end of file diff --git a/ZitiUpdateService/ProjectInstaller.cs b/ZitiUpdateService/ProjectInstaller.cs new file mode 100644 index 00000000..3720deaa --- /dev/null +++ b/ZitiUpdateService/ProjectInstaller.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration.Install; +using System.Linq; +using System.Threading.Tasks; + +namespace ZitiUpdateService { + [RunInstaller(true)] + public partial class ProjectInstaller : System.Configuration.Install.Installer { + public ProjectInstaller() { + InitializeComponent(); + } + + private void ZitiUpdateServiceInstaller_AfterInstall(object sender, InstallEventArgs e) { + + } + } +} diff --git a/ZitiUpdateService/ProjectInstaller.resx b/ZitiUpdateService/ProjectInstaller.resx new file mode 100644 index 00000000..c919b2a9 --- /dev/null +++ b/ZitiUpdateService/ProjectInstaller.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 56 + + + 201, 50 + + + False + + \ No newline at end of file diff --git a/ZitiUpdateService/Properties/AssemblyInfo.cs b/ZitiUpdateService/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..e3ab62af --- /dev/null +++ b/ZitiUpdateService/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +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("ZitiUpdateService")] +[assembly: AssemblyDescription("Ziti Monitor and Update Service")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("NetFoundry")] +[assembly: AssemblyProduct("ZitiUpdateService")] +[assembly: AssemblyCopyright("Copyright © NetFoundry 2020")] +[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("9ab81609-f5dd-40a6-87b5-f3279d48514d")] + +// 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")] diff --git a/ZitiUpdateService/Properties/app.manifest b/ZitiUpdateService/Properties/app.manifest new file mode 100644 index 00000000..3b5ed3da --- /dev/null +++ b/ZitiUpdateService/Properties/app.manifest @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ZitiUpdateService/UpdateService.Designer.cs b/ZitiUpdateService/UpdateService.Designer.cs new file mode 100644 index 00000000..ce06ec11 --- /dev/null +++ b/ZitiUpdateService/UpdateService.Designer.cs @@ -0,0 +1,32 @@ +namespace ZitiUpdateService { + partial class UpdateService { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + components = new System.ComponentModel.Container(); + this.ServiceName = "Ziti Update Service"; + } + + #endregion + } +} diff --git a/ZitiUpdateService/UpdateService.cs b/ZitiUpdateService/UpdateService.cs new file mode 100644 index 00000000..fa622d09 --- /dev/null +++ b/ZitiUpdateService/UpdateService.cs @@ -0,0 +1,225 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.ServiceProcess; +using System.Text; +using System.Threading; +using System.IO; +using System.IO.Compression; +using System.Net; +using System.Timers; +using System.Management.Automation; +using System.Xml; + +namespace ZitiUpdateService { + public partial class UpdateService : ServiceBase { + + private string _version = ""; + private bool _isNew = true; + private int _majorVersion = 1; + private string _versionUrl = "https://netfoundry.jfrog.io/netfoundry/ziti-maven-snapshot/ziti-tunnel-win/amd64/windows/ziti-tunnel-win/maven-metadata.xml"; + private string _serviceUrl = "https://netfoundry.jfrog.io/netfoundry/ziti-maven-snapshot/ziti-tunnel-win/amd64/windows/ziti-tunnel-win/${version}/ziti-tunnel-win-${version}.zip"; + private System.Timers.Timer _checkTimer = new System.Timers.Timer(); + private System.Timers.Timer _updateTimer = new System.Timers.Timer(); + private string _rootDirectory = ""; + private string _logDirectory = ""; + private bool _isJustStopped = true; + + ServiceController controller; + public UpdateService() { + InitializeComponent(); + } + + protected override void OnStart(string[] args) { + _rootDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "NetFoundry"); + if (!Directory.Exists(_rootDirectory)) Directory.CreateDirectory(_rootDirectory); + _logDirectory = Path.Combine(_rootDirectory, "Logs"); + if (!Directory.Exists(_logDirectory)) Directory.CreateDirectory(_logDirectory); + Log("Setup Watchers"); + SetupServiceWatcher(); + } + + protected override void OnStop() { + Log("Stopping update Service"); + } + + private void SetupServiceWatcher() { + controller = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "ziti"); + if (controller==null) { + Log("Get Installation"); + UpdateServiceFiles(); + } else { + Log("Check Version"); + _isNew = false; + if (File.Exists(Path.Combine(_rootDirectory, @"Service\Version.txt"))) { + _version = File.ReadAllText(Path.Combine(_rootDirectory, @"Service\Version.txt")); + Log("Version Found: " + _version); + if (controller.Status==ServiceControllerStatus.Stopped) { + StartZiti(); + } else { + SetupWatcher(); + } + } else { + UpdateServiceFiles(); + } + } + } + + private void SetupWatcher() { + Log("Ziti Update Setting Up Watchers"); +; _checkTimer = new System.Timers.Timer(); + _checkTimer.Elapsed += CheckService; + _checkTimer.Interval = 60000; + _checkTimer.Enabled = true; + _checkTimer.Start(); + _updateTimer = new System.Timers.Timer(); + _updateTimer.Elapsed += CheckUpdate; + _updateTimer.Interval = 600000; + _updateTimer.Enabled = true; + _updateTimer.Start(); + } + + private void CheckUpdate(object sender, ElapsedEventArgs e) { + var request = WebRequest.Create(_versionUrl) as HttpWebRequest; + var response = request.GetResponse(); + Stream receiveStream = response.GetResponseStream(); + StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); + var result = readStream.ReadToEnd(); + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(result); + XmlNode node = xmlDoc.SelectSingleNode("metadata/versioning/release"); + string version = node.InnerText; + Log("Version Checked: " + version+" on "+_version); + if (version != _version) { + StopZiti(); + UpdateServiceFiles(); + } + } + + private void CheckService(object sender, ElapsedEventArgs e) { + controller = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "ziti"); + if (controller.Status == ServiceControllerStatus.Stopped|| controller.Status == ServiceControllerStatus.StopPending) { + if (_isJustStopped) { + _isJustStopped = false; + Log("Ziti Service has been stopped, update Network"); + RunScript(); + } + } else { + if (controller.Status==ServiceControllerStatus.Running) { + _isJustStopped = true; + } + } + } + + private void UpdateServiceFiles() { + if (controller!=null) { + controller.Stop(); + } else { + GetFiles(); + } + } + + private void GetFiles() { + var request = WebRequest.Create(_versionUrl) as HttpWebRequest; + var response = request.GetResponse(); + Stream receiveStream = response.GetResponseStream(); + StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); + var result = readStream.ReadToEnd(); + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(result); + XmlNode node = xmlDoc.SelectSingleNode("metadata/versioning/release"); + string version = node.InnerText; + Log("Got Version: " + version); + + string remoteService = _serviceUrl.Replace("${version}", version); + + if (!Directory.Exists(Path.Combine(_rootDirectory, "Service"))) Directory.CreateDirectory(Path.Combine(_rootDirectory, "Service")); + string[] files = Directory.GetFiles(Path.Combine(_rootDirectory, "Service")); + foreach (string file in files) { + try { + Log("Delete: " + file); + File.Delete(file); + } catch (Exception e) { + EventLog.WriteEntry("Ziti", e.ToString(), EventLogEntryType.Error); + } + } + WebClient webClient = new WebClient(); + webClient.DownloadFile(remoteService, Path.Combine(_rootDirectory, "Service") + @"\windows-tunneler.zip"); + Log("Zip Downloaded"); + ZipFile.ExtractToDirectory(Path.Combine(_rootDirectory, "Service") + @"\windows-tunneler.zip", Path.Combine(_rootDirectory, "Service")); + + Log("Zip UnZipped"); + File.WriteAllText(Path.Combine(_rootDirectory, @"Service\Version.txt"), version); + _version = version; + + if (_isNew) { + Log("Installing Service " + _version); + ProcessStartInfo installService = new ProcessStartInfo(); + installService.CreateNoWindow = true; + installService.UseShellExecute = true; + installService.FileName = Path.Combine(_rootDirectory, "Service") + @"\ziti-tunnel.exe"; + installService.WindowStyle = ProcessWindowStyle.Hidden; + installService.Arguments = "install"; + Log("Install Using " + installService.FileName + " " + installService.Arguments); + try { + Process exeProcess = Process.Start(installService); + exeProcess.WaitForExit(); + StartZiti(); + Log("Installed " + installService.FileName + " " + installService.Arguments); + + } catch (Exception e) { + Log("Cannot Install Service - " + e.ToString()); + } + } else { + StartZiti(); + } + + } + + private void RunScript() { + string scriptText = "get-netipinterface|ForEach-Object { Set-DnsClientServerAddress-InterfaceIndex $_.ifIndex-ResetServerAddresses}"; + Log("Executing: " + scriptText); + using (PowerShell PowerShellInstance = PowerShell.Create()) { + PowerShellInstance.AddScript(scriptText); + IAsyncResult result = PowerShellInstance.BeginInvoke(); + while (result.IsCompleted == false) { + Thread.Sleep(1000); + } + } + } + + private void StartZiti() { + controller = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "ziti"); + if (controller.Status != ServiceControllerStatus.Running) { + try { + Log("Starting Service"); + controller.Start(); + controller.WaitForStatus(ServiceControllerStatus.Running); + SetupWatcher(); + } catch (Exception e) { + Log("Cannot Start Service - " + e.ToString()); + } + } + } + + private void StopZiti() { + controller = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == "ziti"); + if (controller.Status != ServiceControllerStatus.Stopped) { + try { + controller.Stop(); + controller.WaitForStatus(ServiceControllerStatus.Stopped); + } catch (Exception e) { + Log("Cannot Stop Service - " + e.ToString()); + } + } + } + + private void Log(string message) { + File.AppendAllText(Path.Combine(_logDirectory, @"Log.log"), DateTime.Now.ToString()+" "+message); + EventLog.WriteEntry("Ziti Update Service", message, EventLogEntryType.Information); + } + } +} diff --git a/ZitiUpdateService/ZitiUpdateService.csproj b/ZitiUpdateService/ZitiUpdateService.csproj new file mode 100644 index 00000000..2bc88441 --- /dev/null +++ b/ZitiUpdateService/ZitiUpdateService.csproj @@ -0,0 +1,137 @@ + + + + + Debug + AnyCPU + {9AB81609-F5DD-40A6-87B5-F3279D48514D} + WinExe + ZitiUpdateService + ZitiUpdateService + v4.8 + 512 + true + true + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 1 + 1.0.0.%2a + false + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x64 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + ziti-white.ico + + + 189AAD422A106DC81E8E79C7E0D2118CEB2E6321 + + + + + + + true + + + LocalIntranet + + + Properties\app.manifest + + + true + + + bin\Releases\ + + + + + + + + + + ..\packages\Microsoft.PowerShell.5.ReferenceAssemblies.1.1.0\lib\net4\System.Management.Automation.dll + + + + + + + + + + + + Component + + + ProjectInstaller.cs + + + Component + + + UpdateService.cs + + + + + + + + + + + + + ProjectInstaller.cs + + + + + + + + False + Microsoft .NET Framework 4.8 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + \ No newline at end of file diff --git a/ZitiUpdateService/packages.config b/ZitiUpdateService/packages.config new file mode 100644 index 00000000..d5a74547 --- /dev/null +++ b/ZitiUpdateService/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ZitiUpdateService/ziti-white.ico b/ZitiUpdateService/ziti-white.ico new file mode 100644 index 00000000..84992d63 Binary files /dev/null and b/ZitiUpdateService/ziti-white.ico differ