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