From 1b5e880d9cf62af81dcacfd465caaf29941987e5 Mon Sep 17 00:00:00 2001 From: Patrick Pissurno Date: Mon, 18 Feb 2019 00:00:00 -0300 Subject: [PATCH] Windows setup wizard created --- .gitignore | 4 +- daemon/Windows/Daemon.sln | 4 + daemon/Windows/Daemon/Daemon.csproj | 17 +- daemon/Windows/Daemon/Program.cs | 194 ++-- daemon/Windows/Daemon/ProjectInstaller.cs | 87 ++ daemon/Windows/Daemon/packages.config | 4 + daemon/Windows/Setup/LICENSE.rtf | Bin 0 -> 1360 bytes daemon/Windows/Setup/README.rtf | Bin 0 -> 1059 bytes daemon/Windows/Setup/Setup.vdproj | 1021 +++++++++++++++++++++ 9 files changed, 1241 insertions(+), 90 deletions(-) create mode 100644 daemon/Windows/Daemon/ProjectInstaller.cs create mode 100644 daemon/Windows/Daemon/packages.config create mode 100644 daemon/Windows/Setup/LICENSE.rtf create mode 100644 daemon/Windows/Setup/README.rtf create mode 100644 daemon/Windows/Setup/Setup.vdproj diff --git a/.gitignore b/.gitignore index 78330eb..0167558 100644 --- a/.gitignore +++ b/.gitignore @@ -30,10 +30,12 @@ *.exe *.out *.app +*.msi bin/ .DS_Store .pkg .vs -obj/ \ No newline at end of file +obj/ +packages \ No newline at end of file diff --git a/daemon/Windows/Daemon.sln b/daemon/Windows/Daemon.sln index 988a369..f0d3b6b 100644 --- a/daemon/Windows/Daemon.sln +++ b/daemon/Windows/Daemon.sln @@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28307.271 MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{2F03DC7D-CBB7-4979-A7F3-4C9581F2EE95}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Daemon", "Daemon\Daemon.csproj", "{4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA}" EndProject Global @@ -11,6 +13,8 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2F03DC7D-CBB7-4979-A7F3-4C9581F2EE95}.Debug|Any CPU.ActiveCfg = Debug + {2F03DC7D-CBB7-4979-A7F3-4C9581F2EE95}.Release|Any CPU.ActiveCfg = Release {4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA}.Debug|Any CPU.Build.0 = Debug|Any CPU {4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/daemon/Windows/Daemon/Daemon.csproj b/daemon/Windows/Daemon/Daemon.csproj index b7ee623..fcc5c8c 100644 --- a/daemon/Windows/Daemon/Daemon.csproj +++ b/daemon/Windows/Daemon/Daemon.csproj @@ -5,7 +5,7 @@ Debug AnyCPU {4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA} - Exe + WinExe Daemon Daemon v4.0 @@ -31,9 +31,18 @@ prompt 4 + + + + + ..\packages\TaskScheduler.2.8.7\lib\net40\Microsoft.Win32.TaskScheduler.dll + + + + @@ -43,7 +52,13 @@ + + Component + + + + \ No newline at end of file diff --git a/daemon/Windows/Daemon/Program.cs b/daemon/Windows/Daemon/Program.cs index bfd91e2..167a2f8 100644 --- a/daemon/Windows/Daemon/Program.cs +++ b/daemon/Windows/Daemon/Program.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; +using Microsoft.Win32.TaskScheduler; +using System; using System.IO.Ports; -using System.Linq; -using System.Text; using System.Threading; namespace Daemon @@ -56,119 +54,139 @@ static void Press(ScanCodeShort key, bool shift) Thread.Sleep(1); } + static void Exit(int status) + { + if(status != 0) + { + using (TaskService ts = new TaskService()) + { + var task = ts.FindTask(ProjectInstaller.TASK_NAME); + if (task != null) + task.Run(); + } + } + Environment.Exit(status); + } + static void Main(string[] args) { - const int bufferMax = 256; - byte[] buf = new byte[bufferMax]; + try + { + const int bufferMax = 256; + byte[] buf = new byte[bufferMax]; - Console.WriteLine("Daemon Started"); + Console.WriteLine("Daemon Started"); - //wait a bit of time for all components to initialize before trying to connect - Thread.Sleep(10000); + //wait a bit of time for all components to initialize before trying to connect + Thread.Sleep(10000); - Console.WriteLine("Locating the Receiver device"); + Console.WriteLine("Locating the Receiver device"); - string[] ports; - int portsLength; - SerialPort port = null; - do - { - Thread.Sleep(1000); - ports = SerialPort.GetPortNames(); - portsLength = ports.Length; + string[] ports; + int portsLength; + SerialPort port = null; + do + { + Thread.Sleep(1000); + ports = SerialPort.GetPortNames(); + portsLength = ports.Length; - foreach (var name in ports) { - try + foreach (var name in ports) { - port = new SerialPort(name, 9600); - port.ReadTimeout = 2100; - port.DtrEnable = true; - port.Open(); + try + { + port = new SerialPort(name, 9600); + port.ReadTimeout = 2100; + port.DtrEnable = true; + port.Open(); - if (port.ReadLine().Trim() == RECEIVER_HANDSHAKE_CODE.ToString()) - break; + if (port.ReadLine().Trim() == RECEIVER_HANDSHAKE_CODE.ToString()) + break; - throw new Exception(); - } - catch - { - portsLength -= 1; - if (port != null) + throw new Exception(); + } + catch { - if(port.IsOpen) - port.Close(); - port.Dispose(); + portsLength -= 1; + if (port != null) + { + if (port.IsOpen) + port.Close(); + port.Dispose(); + } + port = null; } - port = null; } } - } - while (portsLength < 1); + while (portsLength < 1); - if(port == null) - { - Console.WriteLine("Failed to find a Receiver device"); + if (port == null) + { + Console.WriteLine("Failed to find a Receiver device"); - Thread.Sleep(10); - Environment.Exit(1); - } + Thread.Sleep(10); + Exit(1); + } - Console.WriteLine("Connected to the Receiver device"); + Console.WriteLine("Connected to the Receiver device"); - port.ReadTimeout = 5000; + port.ReadTimeout = 5000; - int btn = 0; - while (true) - { - Thread.Sleep(500); - for (int i = 0; i < 5; i++) + int btn = 0; + while (true) { - btn = 0; - - try - { - btn = int.Parse(port.ReadLine().Trim()); - } - catch + Thread.Sleep(500); + for (int i = 0; i < 5; i++) { btn = 0; - } - if (btn == RECEIVER_HANDSHAKE_CODE) - continue; + try + { + btn = int.Parse(port.ReadLine().Trim()); + } + catch + { + btn = 0; + } - switch (btn) - { - case BUTTON_NEXT: - Press(ScanCodeShort.RIGHT, false); - break; - case BUTTON_PREV: - Press(ScanCodeShort.LEFT, false); - break; - case BUTTON_PAUSE: - Press(ScanCodeShort.SPACE, false); - break; - case BUTTON_NEXT_HOLD: - Press(ScanCodeShort.KEY_N, true); - break; - case BUTTON_PREV_HOLD: - Press(ScanCodeShort.KEY_P, true); - break; - } + if (btn == RECEIVER_HANDSHAKE_CODE) + continue; - Thread.Sleep(5); - } + switch (btn) + { + case BUTTON_NEXT: + Press(ScanCodeShort.RIGHT, false); + break; + case BUTTON_PREV: + Press(ScanCodeShort.LEFT, false); + break; + case BUTTON_PAUSE: + Press(ScanCodeShort.SPACE, false); + break; + case BUTTON_NEXT_HOLD: + Press(ScanCodeShort.KEY_N, true); + break; + case BUTTON_PREV_HOLD: + Press(ScanCodeShort.KEY_P, true); + break; + } - if (!port.IsOpen) - break; - } + Thread.Sleep(5); + } - port.Close(); - port.Dispose(); + if (!port.IsOpen) + break; + } - Console.WriteLine("Disconnected from the Receiver device"); + port.Close(); + port.Dispose(); - Environment.Exit(1); + Console.WriteLine("Disconnected from the Receiver device"); + } + finally + { + Exit(1); + } } } } diff --git a/daemon/Windows/Daemon/ProjectInstaller.cs b/daemon/Windows/Daemon/ProjectInstaller.cs new file mode 100644 index 0000000..b3e66c3 --- /dev/null +++ b/daemon/Windows/Daemon/ProjectInstaller.cs @@ -0,0 +1,87 @@ +using Microsoft.Win32.TaskScheduler; +using System; +using System.ComponentModel; +using System.Configuration.Install; +using System.IO; +using System.Management; +using System.Linq; + +namespace Daemon +{ + [RunInstaller(true)] + public class ProjectInstaller : Installer + { + internal static readonly string TASK_NAME = "SK6-Remote"; + + public ProjectInstaller() : base() + { + this.AfterInstall += ProjectInstaller_AfterInstall; + this.AfterUninstall += ProjectInstaller_AfterUninstall; + this.BeforeUninstall += ProjectInstaller_BeforeUninstall; + } + + private void ProjectInstaller_BeforeUninstall(object sender, InstallEventArgs e) + { + using (TaskService ts = new TaskService()) + { + var task = ts.FindTask(TASK_NAME); + if(task != null) + task.Stop(); + } + } + + private void ProjectInstaller_AfterUninstall(object sender, InstallEventArgs e) + { + using (TaskService ts = new TaskService()) + { + ts.RootFolder.DeleteTask(TASK_NAME, false); + } + } + + public void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e) + { + string path = this.Context.Parameters["targetdir"]; + + // Get the service on the local machine + using (TaskService ts = new TaskService()) + { + // Create a new task definition and assign properties + TaskDefinition td = ts.NewTask(); + td.RegistrationInfo.Description = "Makes your LG SK6 soundbar remote controller work with your computer"; + + ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem"); + ManagementObjectCollection collection = searcher.Get(); + string username = (string)collection.Cast().First()["UserName"]; + + td.Principal.UserId = username; + td.Principal.LogonType = TaskLogonType.InteractiveToken; + + // Create a trigger that will fire the task at this time every other day + td.Triggers.Add(new LogonTrigger()); + + // Create an action that will launch Notepad whenever the trigger fires + td.Actions.Add(new ExecAction(Path.Combine(path, "Daemon.exe"), null)); + + td.Settings.Compatibility = TaskCompatibility.V2; + td.Settings.UseUnifiedSchedulingEngine = true; + + td.Settings.AllowDemandStart = true; + td.Settings.DisallowStartIfOnBatteries = false; + td.Settings.Enabled = true; + td.Settings.RestartCount = 99999; + td.Settings.StopIfGoingOnBatteries = false; + td.Settings.RestartInterval = TimeSpan.FromMinutes(1); + td.Settings.Priority = System.Diagnostics.ProcessPriorityClass.BelowNormal; + td.Settings.RunOnlyIfIdle = false; + td.Settings.ExecutionTimeLimit = new TimeSpan(); + td.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting; + + // Register the task in the root folder + var task = ts.RootFolder.RegisterTaskDefinition(TASK_NAME, td, TaskCreation.CreateOrUpdate, username, null, TaskLogonType.InteractiveToken); + + //Start + task.Run(); + } + } + } +} diff --git a/daemon/Windows/Daemon/packages.config b/daemon/Windows/Daemon/packages.config new file mode 100644 index 0000000..d6e2062 --- /dev/null +++ b/daemon/Windows/Daemon/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/daemon/Windows/Setup/LICENSE.rtf b/daemon/Windows/Setup/LICENSE.rtf new file mode 100644 index 0000000000000000000000000000000000000000..bf4d42928293f62752042847fd6623db472c9cba GIT binary patch literal 1360 zcma)6-EW&Z6u-}v`ac}?X`4`Q!rh1N_C$%(SR;T8X;+CC115MQb}lxHs;d9{j-9ky zul6u0BH?h(@9UU6RHN8%UyFIrLRi~A;^?*NSRj1@o zbxqGlBkT-fKFE5MpB^92&mO8b)mA7ma;ryRvgt(|&R{;foL$a8%>Q}&Sbdk`@J*`r zZ8bG>I6tfQd~7Q-gdg7HbvF%m?nz7-Rs&btFoZQNA(4$xM!4?d%=uZY_xGdR_7+|> zuOXbx|Am~}Q8wQom&Qz^(!aL<%zN|eOG#Ni{_`=SUeXJSF_inm-GJ= zF8}Dvl`8^8wk&TWMt~NOv+Ra0$O0~+0`D&ZxTWPP+mwJEEK18e$d(YLckr2}ivY-% zoROk{i~(Ke2_;ygX`E~pG`)r^oJ%u&X(+xr2wG;~2v1Oy;M@|{gvBdFj;?4z%ew%U zv`ii558FApHViQ<^RrvXC`N%S&X%8ju^jfnpUUiKmJ-sGfO! zahBgPdc7)Pl_d*;#Vdl!qN{`)snArMM06d%B3eh+P91{`1vB4vQg^!|zJz=ce&Uj5 zsk0GhY02<5K$on19=)Xn2_Ry$aDgmYhVU*LRUxE{W_YQtF8CQ28mo#4=d)3M)ycFKm3JwXmOhxMoUx)(jSLYJ zgL|w!!jJ34j&_TG?NZswl-}yaZg(`<3gxX2ga``}P#3474v6mZQj|6$pYvgvjjL>2 zJUd$qt;eE9he0MEU};o?nlmWalue6^;&i?fYlBa%ae6MYD&S}$IvKQxmd_czSJ|dQ zl*1(PlnX0e%{koPoWl}VKA|XS#>jc!b~Jfumz?$O{NnrtgsK>Pl`X=?=K!~#2bAcu z)1?d$1~^cpUGUaofF~bXcrvLO8+vtf!Z0!or0~5l5xU^(AXkL&E1Q53q=WZCXXE_I zXo)E;g2uH`2+2c<(AiwqsKGe;PYn|9hz=DAWl~?(^G`>%2kHoZZ8U-em1FWNxNkA3 z2HuiARY7hVw0bL!MP;>dF>Sv*-hEu&UVpoRCZ#T3&1R)ZQ@fe*4|flro`1rw&w$k- z+O$1fBC=(K&UW;S7LfMuh9i=O{TVAOV>1k}pLh^#f9gAnG9oy#iArSZb)ou+^FS(qOoinEVkz-`;;A${#Bia92t*K Hx9!buVwZL? literal 0 HcmV?d00001 diff --git a/daemon/Windows/Setup/Setup.vdproj b/daemon/Windows/Setup/Setup.vdproj new file mode 100644 index 0000000..62f11a1 --- /dev/null +++ b/daemon/Windows/Setup/Setup.vdproj @@ -0,0 +1,1021 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:Setup" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_A6E4E2E389184B749B75D72F271C549F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BFBE67DE35714645875417096985626F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C37569BD1318760AC5EB2BF013757864" + "OwnerKey" = "8:_BFBE67DE35714645875417096985626F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E57EB71C59E5454DA34A84A8FC8B4CB9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_C37569BD1318760AC5EB2BF013757864" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_BFBE67DE35714645875417096985626F" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\Setup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:3" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:FALSE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\Setup.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" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_9396F54F1E1F4D0DB567E52CFCF6DDC5" + { + "Name" = "8:Primary output from Daemon (Active)" + "Condition" = "8:" + "Object" = "8:_BFBE67DE35714645875417096985626F" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_E50F1E8D_F903_4832_BCFC_0D4BFC6CAF8D" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:/targetdir=\"[TARGETDIR]\\\"" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_BAACFB8BDA3E434B80742229847B2C09" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.6.1" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A6E4E2E389184B749B75D72F271C549F" + { + "SourcePath" = "8:LICENSE.rtf" + "TargetName" = "8:LICENSE.rtf" + "Tag" = "8:" + "Folder" = "8:_CA8563ADE71E4542990252E0FB0B158D" + "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}:_C37569BD1318760AC5EB2BF013757864" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Win32.TaskScheduler, Version=2.8.7.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_C37569BD1318760AC5EB2BF013757864" + { + "Name" = "8:Microsoft.Win32.TaskScheduler.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Win32.TaskScheduler.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_CA8563ADE71E4542990252E0FB0B158D" + "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}:_E57EB71C59E5454DA34A84A8FC8B4CB9" + { + "SourcePath" = "8:README.rtf" + "TargetName" = "8:README.rtf" + "Tag" = "8:" + "Folder" = "8:_CA8563ADE71E4542990252E0FB0B158D" + "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:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_02916D5A66CE47679CE0255CB63512A5" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_0317DF38644B4DCF9D38D3CBC6BE1E3C" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_CA8563ADE71E4542990252E0FB0B158D" + { + "DefaultLocation" = "8:[ProgramFilesFolder][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:SK6 Remote" + "ProductCode" = "8:{1883CAE5-2EE8-43DA-8020-8648695F9054}" + "PackageCode" = "8:{55CED489-BE94-4510-B3BB-E67F9B51FD34}" + "UpgradeCode" = "8:{FBF6EBB8-041A-4ABB-8E81-4654B9D70436}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.0.1" + "Manufacturer" = "8:Patrick Pissurno" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:SK6 Remote Installer" + "Subject" = "8:" + "ARPCONTACT" = "8:Patrick Pissurno" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:SK6 Remote" + "ARPURLINFOABOUT" = "8:https://patrickpissurno.com.br" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_98C5C4BCADC949F19AD4DD38A63D0882" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F27920DA8035430B91526AFFDDE50932" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D1A3941623BC486C9335F041F937D2BA" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_6BDDBD21035649EF80F576860B20C382" + { + "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}:_04523B09F5ED48828E877E3E7DB9ED69" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2A7181BD48AD436B9BECE451A2363FAE" + { + "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}:_0D617E355F8A495EB1003D8DBFCDC9E2" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9B2F0463280B4308ABC5519376212BC1" + { + "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" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_64BA42292531408A97E20FD0739E4A31" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CF9E1A02DCC34E19A38D100E449D7E34" + { + "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}:_6EC931019D9743C18C1D342F25BB3FD8" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_163F670BB7534A39A8353CFCCA201C73" + { + "Sequence" = "3:400" + "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}:_2C4A96341CFE484D910DA95D2D79A1D6" + { + "Sequence" = "3:200" + "DisplayName" = "8:Read Me" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminReadmeDlg.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" + } + "ReadmeText" + { + "Name" = "8:ReadmeText" + "DisplayName" = "8:#1010" + "Description" = "8:#1110" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_E57EB71C59E5454DA34A84A8FC8B4CB9" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_35F28D96C6E244788AC93A196C24DC29" + { + "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:2" + "Value" = "8:Copyright (c) 2019 Patrick Pissurno" + "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}:_6BAD0D8CF0404639A2763BD9368B422A" + { + "Sequence" = "3:210" + "DisplayName" = "8:License Agreement" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminLicenseDlg.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" + } + "EulaText" + { + "Name" = "8:EulaText" + "DisplayName" = "8:#1008" + "Description" = "8:#1108" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_A6E4E2E389184B749B75D72F271C549F" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F4889CC0AABF4BE4AC297DAF3D0B6A07" + { + "Sequence" = "3:300" + "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" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_A61F4E3556134786BBFAB7B32EEC37D4" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BA1B21AC6FEB4A8A856C664F48DB58AC" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A9560BE857C44F1393303E3CD5CB7E0C" + { + "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:2" + "Value" = "8:Take a look at https://github.com/patrickpissurno/sk6-remote for detailed information on the next steps." + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E6D1D892ADB94278B3B62447268996B4" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_384FE7710C6144E0A1AD272943BC7F7B" + { + "Sequence" = "3:200" + "DisplayName" = "8:Read Me" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdReadmeDlg.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" + } + "ReadmeText" + { + "Name" = "8:ReadmeText" + "DisplayName" = "8:#1010" + "Description" = "8:#1110" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_E57EB71C59E5454DA34A84A8FC8B4CB9" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_565018A43864468B8E107787AF9EE73F" + { + "Sequence" = "3:210" + "DisplayName" = "8:License Agreement" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdLicenseDlg.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" + } + "EulaText" + { + "Name" = "8:EulaText" + "DisplayName" = "8:#1008" + "Description" = "8:#1108" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_A6E4E2E389184B749B75D72F271C549F" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_56EA0C18B3A5456E8D4799944E1DB807" + { + "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:2" + "Value" = "8:Copyright (c) 2019 Patrick Pissurno" + "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}:_D983D0B0270A486EA12B0168C3D0D1CE" + { + "Sequence" = "3:400" + "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" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E60FE3A24CE749EE98089308807E8EF6" + { + "Sequence" = "3:300" + "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:0" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_EEE60D111F5E48A0B06D037C4FF43A48" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BFBE67DE35714645875417096985626F" + { + "SourcePath" = "8:..\\Daemon\\obj\\Release\\Daemon.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_CA8563ADE71E4542990252E0FB0B158D" + "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:{4BDF0DD1-1BA1-46DD-B14A-79551CAB96DA}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +}