Initial commit

This commit is contained in:
Kim
2019-09-29 22:45:23 +10:00
commit f1f7664b91
82 changed files with 53821 additions and 0 deletions

2
remoteapp-tool/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
bin/
obj/

72
remoteapp-tool/App.config Normal file
View File

@@ -0,0 +1,72 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="RemoteApp_Tool.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<userSettings>
<RemoteApp_Tool.My.MySettings>
<setting name="MainWindowWidth" serializeAs="String">
<value>0</value>
</setting>
<setting name="MainWindowHeight" serializeAs="String">
<value>0</value>
</setting>
<setting name="SavedConnectionModeMSI" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedOpenWithNotepad" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedServerAddress" serializeAs="String">
<value />
</setting>
<setting name="SavedServerPort" serializeAs="String">
<value>3389</value>
</setting>
<setting name="SavedAltServerAddress" serializeAs="String">
<value />
</setting>
<setting name="SavedUseRDGateway" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedRDGatewayAddress" serializeAs="String">
<value />
</setting>
<setting name="SavedAttemptDirectRDGateway" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedMSIShortcutDesktop" serializeAs="String">
<value>True</value>
</setting>
<setting name="SavedMSIShortcutStart" serializeAs="String">
<value>True</value>
</setting>
<setting name="SavedMSIShortcutStartTopLevel" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedUseShortcutTag" serializeAs="String">
<value>True</value>
</setting>
<setting name="SavedShortcutTag" serializeAs="String">
<value>remote</value>
</setting>
<setting name="SavedClientConnectionOptions" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedCreateRAWebIcon" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedMSIPerUser" serializeAs="String">
<value>False</value>
</setting>
<setting name="SavedDisableFTA" serializeAs="String">
<value>False</value>
</setting>
</RemoteApp_Tool.My.MySettings>
</userSettings>
</configuration>

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,102 @@
Module HelpSystem
Public Sub SetupTips(TheForm As Windows.Forms.Form)
Dim toolTip1 As New ToolTip()
toolTip1.AutoPopDelay = 10000
toolTip1.InitialDelay = 500
toolTip1.ReshowDelay = 500
Dim HelpString As String = ""
For Each Control As Control In TheForm.Controls
For Each SubControl As Control In Control.Controls
For Each SubSubControl In SubControl.Controls
For Each SubSubSubControl In SubSubControl.Controls
HelpString = GetTipString(Control.Parent.Name, SubSubSubControl.Name)
If Not HelpString = "" Then toolTip1.SetToolTip(SubSubSubControl, HelpString)
Next
HelpString = GetTipString(Control.Parent.Name, SubSubControl.Name)
If Not HelpString = "" Then toolTip1.SetToolTip(SubSubControl, HelpString)
Next
HelpString = GetTipString(Control.Parent.Name, SubControl.Name)
If Not HelpString = "" Then toolTip1.SetToolTip(SubControl, HelpString)
Next
HelpString = GetTipString(Control.Parent.Name, Control.Name)
If Not HelpString = "" Then toolTip1.SetToolTip(Control, HelpString)
Next
End Sub
Private Function GetTipString(FormName As String, ControlName As String) As String
Dim TipString As String = ""
Dim TipText As String = GetTipFile()
Dim TipArray = TipText.Split(ControlChars.CrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
For Each TipLine As String In TipArray
Dim TipLineArray = TipLine.Split("|")
If TipLineArray(0) = FormName And TipLineArray(1) = ControlName Then TipString = TipLineArray(2)
Next
TipString = TipString.Replace("\r", vbCr)
TipString = TipString.Replace("\n", vbLf)
Return TipString
End Function
Private Function GetTipFile() As String
Dim TipFile As String = ""
If My.Computer.FileSystem.FileExists("tips.txt") Then
TipFile = My.Computer.FileSystem.ReadAllText("tips.txt")
Else
TipFile = GetBuiltInTips()
End If
Return TipFile
End Function
Private Function GetBuiltInTips() As String
Dim Tips As String = ""
Tips += "RemoteAppMainWindow|CreateButton|Add a new RemoteApp." & vbCrLf
Tips += "RemoteAppMainWindow|DeleteButton|Remove selected RemoteApp." & vbCrLf
Tips += "RemoteAppMainWindow|EditButton|Edit properties of selected RemoteApp." & vbCrLf
Tips += "RemoteAppMainWindow|CreateClientConnection|Creates a RDP file or MSI installer for the selected RemoteApp." & vbCrLf
Tips += "RemoteAppEditWindow|SaveButton|Save changes and close." & vbCrLf
Tips += "RemoteAppEditWindow|FTAButton|Set file type associations for this RemoteApp." & vbCrLf
Tips += "RemoteAppEditWindow|CancelEditButton|Discard changes and close." & vbCrLf
Tips += "RemoteAppEditWindow|BrowseIconPath|Select an icon for the RemoteApp." & vbCrLf
Tips += "RemoteAppEditWindow|VPathCopyButton|Copy the value from the ""Path"" field into the ""VPath"" field." & vbCrLf
Tips += "RemoteAppEditWindow|IconPathCopyButton|Copy the value from the ""Path"" field into the ""Icon path"" field. " & vbCrLf
Tips += "RemoteAppEditWindow|BrowsePath|Browse for application." & vbCrLf
Tips += "RemoteAppEditWindow|BrowseVPath|Browse for application." & vbCrLf
Tips += "RemoteAppCreateClientConnection|RDPRadioButton|Create an RDP file." & vbCrLf
Tips += "RemoteAppCreateClientConnection|MSIRadioButton|Create an MSI file." & vbCrLf
Tips += "RemoteAppCreateClientConnection|EditAfterSave|Edit the RDP connection file." & vbCrLf
Tips += "RemoteAppCreateClientConnection|CreateRAWebIcon|Generate an icon for the application and any file type associations.\r\nUse this with RAWeb." & vbCrLf
Tips += "RemoteAppCreateClientConnection|FTAButton|Set file type associations for this RemoteApp.\r\nChanges here will only affect this client connection. They will not be saved." & vbCrLf
Tips += "RemoteAppCreateClientConnection|DisabledFTACheckBox|Do not include file type associations in this client connection." & vbCrLf
Tips += "RemoteAppCreateClientConnection|SaveButton|Save window settings for next time." & vbCrLf
Tips += "RemoteAppCreateClientConnection|ResetButton|Reset window settings to defaults." & vbCrLf
Tips += "RemoteAppCreateClientConnection|CancelEditButton|Close and return to the main window." & vbCrLf
Tips += "RemoteAppCreateClientConnection|CreateButton|Create the client connection and choose where to save it." & vbCrLf
Tips += "RemoteAppFileTypeAssociation|CreateButton|Create a new File Type Association." & vbCrLf
Tips += "RemoteAppFileTypeAssociation|DeleteButton|Delete selected File Type Association." & vbCrLf
Tips += "RemoteAppFileTypeAssociation|EditButton|Change icon of selected File Type Association." & vbCrLf
Tips += "RemoteAppFileTypeAssociation|SetAssociationButton|Create or remove the selected File Type Association on the current system." & vbCrLf
Tips += "RemoteAppFileTypeAssociation|CloseButton|Save changes and close." & vbCrLf
Tips += "RemoteAppIconPicker|BrowseButton|Browse for a file that contains icons." & vbCrLf
Tips += "RemoteAppIconPicker|CancelEditButton|Discard changes and close." & vbCrLf
Tips += "RemoteAppIconPicker|OKButton|Choose the selected icon." & vbCrLf
Return Tips
End Function
End Module

View File

@@ -0,0 +1,155 @@
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Public Class IconExtractor
Private Declare Function ExtractIconEx _
Lib "shell32.dll" Alias "ExtractIconExA" _
(ByVal lpszFile As String, ByVal nIconIndex As Int32, _
ByRef phiconLarge As Int32, ByRef phiconSmall As Int32, _
ByVal nIcons As Int32) As Int32
Private Declare Function ExtractIcon _
Lib "shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As IntPtr, ByVal lpszExeFileName As String, _
ByVal nIconIndex As Int32) As Int32
Private Declare Function DrawIconEx _
Lib "user32" _
(ByVal hdc As Int32, ByVal xLeft As Int32, ByVal yTop As Int32, _
ByVal hIcon As IntPtr, ByVal cxWidth As Int32, ByVal cyWidth As Int32, _
ByVal istepIfAniCur As Int32, ByVal hbrFlickerFreeDraw As Int32, _
ByVal diFlags As Int32) As Int32
Private Declare Function DestroyIcon _
Lib "user32" _
(ByVal hIcon As Int32) As Int32
Private m_hIcons() As Int32
Protected Overrides Sub Finalize()
MyBase.Finalize()
Dim countIcons As Integer = m_hIcons.Length
If countIcons > 0 Then
For iconIndex As Integer = 0 To countIcons - 1
DestroyIcon(m_hIcons(iconIndex))
Next iconIndex
End If
End Sub
Public Function ExtractIcons(ByVal filePath As String, ByVal hInst As IntPtr) As List(Of Icon)
Dim listIcons As New List(Of Icon)
Try
Dim numIcons As Integer = ExtractIconEx(filePath, -1, 0&, 0&, 0&)
If numIcons = 0 Then
Throw New Exception("No icons found in " & filePath)
End If
numIcons -= 1
For currentIcon As Integer = 0 To numIcons
m_hIcons(currentIcon) = ExtractIcon(hInst, filePath, currentIcon)
Dim handleIcon As New IntPtr(m_hIcons(currentIcon))
If Not handleIcon.Equals(IntPtr.Zero) Then
listIcons.Add(Icon.FromHandle(handleIcon))
End If
Next currentIcon
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
Return listIcons
End Function
End Class
Module IconModule
Public Sub TestIconLib()
Dim testIcon As New IconLib.MultiIcon
End Sub
Public Function IconFromFilePath(filePath As String) As Icon
Dim result As Icon = Nothing
Try
result = Icon.ExtractAssociatedIcon(filePath)
Catch
End Try
Return result
End Function
Public Function ExtractToIco(IconSourcePath As String, IconSourceIndex As Integer, IcoDestPath As String) As Boolean
Dim success = False
Dim IconLoadError As Boolean = False
If My.Computer.FileSystem.FileExists(IconSourcePath) = True Then
Dim mIcon As New IconLib.MultiIcon
Try
mIcon.Load(IconSourcePath)
Catch Ex As Exception
IconLoadError = True
End Try
If Not IconLoadError Then
Dim sIcon As IconLib.SingleIcon
If IconSourceIndex = 0 Then
sIcon = mIcon.FirstOrDefault
Else
sIcon = mIcon.Item(IconSourceIndex)
End If
Try
sIcon.Save(IcoDestPath)
success = True
Catch Ex As Exception
End Try
End If
End If
Return success
End Function
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Integer, ByRef phiconLarge As Integer, ByRef phiconSmall As Integer, ByVal nIcons As Integer) As Integer
Public Function ReturnIcon(ByVal Path As String, ByVal Index As Integer, Optional ByVal small As Boolean = False) As Icon
Dim bigIcon As Integer
Dim smallIcon As Integer
ExtractIcon(Path, Index, bigIcon, smallIcon, 1)
If bigIcon = 0 Then
ExtractIcon(Path, 0, bigIcon, smallIcon, 1)
End If
If bigIcon <> 0 Then
If small = False Then
Return Icon.FromHandle(bigIcon)
Else
Return Icon.FromHandle(smallIcon)
End If
Else
Return ReturnIcon(GetSysDir() & "\mstsc.exe", 0)
End If
End Function
End Module

View File

@@ -0,0 +1,131 @@
Imports RemoteAppLib
Module LocalFtaModule
Public Sub RemoveUnusedFTAs()
Dim KeyNames = My.Computer.Registry.ClassesRoot().GetSubKeyNames
Dim RemoveCount As Integer = 0
For Each KeyName In KeyNames
Dim FTAkey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(KeyName)
Dim RAvalue As String = FTAkey.GetValue("RemoteApp", "")
If Not RAvalue = "" Then
For Each KeyName2 In KeyNames
Try
Dim FTkey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(KeyName2)
Dim FTvalue As String = FTkey.GetValue("", "")
If FTvalue = KeyName Then
Dim sra As New RemoteAppLib.SystemRemoteApps
Dim AppExists As Boolean = False
For Each app As RemoteAppLib.RemoteApp In sra.GetAll
If app.Name = GetAppForFTA(KeyName2) Then AppExists = True
Next
If Not AppExists Then
LocalFtaModule.DeleteFTA(KeyName2)
RemoveCount += 1
End If
End If
Catch ex As Exception
End Try
Next
End If
Next
MessageBox.Show("Unused file type associations removed: " & RemoveCount, "File Type Association", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Public Function CreateFTACollection(ftaCol As FileTypeAssociationCollection, exeFile As String, RemoteAppName As String, Optional overwrite As Boolean = False) As String
CreateFTACollection = ""
For Each fta As FileTypeAssociation In ftaCol
If DoesFTAExist(fta.Extension) And CreateFTA(fta, exeFile, RemoteAppName, overwrite) = False Then
CreateFTACollection += "|" & fta.Extension
End If
Next
CreateFTACollection = CreateFTACollection.Trim("|")
End Function
Public Function CreateFTA(fta As FileTypeAssociation, exeFile As String, RemoteAppName As String, Optional overwrite As Boolean = False) As Boolean
If DoesFTAExist(fta.Extension) = False Or overwrite = True Then
DeleteFTA(fta.Extension)
Dim FileTypeReg = My.Computer.Registry.ClassesRoot.CreateSubKey("." & fta.Extension)
FileTypeReg.SetValue("", fta.Extension & "_file")
Dim FileTypeKey = My.Computer.Registry.ClassesRoot.CreateSubKey(fta.Extension & "_file")
FileTypeKey.SetValue("RemoteApp", RemoteAppName)
Dim FileTypeKeyShell = FileTypeKey.CreateSubKey("shell")
Dim FileTypeKeyShellOpen = FileTypeKeyShell.CreateSubKey("open")
Dim FileTypeKeyShellOpenCommand = FileTypeKeyShellOpen.CreateSubKey("command")
FileTypeKeyShellOpenCommand.SetValue("", """" & exeFile & """ ""%1""")
Dim FileTypeKeyDefIcon = FileTypeKey.CreateSubKey("DefaultIcon")
FileTypeKeyDefIcon.SetValue("", """" & fta.IconPath & """," & fta.IconIndex)
CreateFTA = True
Else
CreateFTA = False
End If
End Function
Public Function GetAppForFTA(fileExtension As String) As String
fileExtension = fileExtension.TrimStart(".")
GetAppForFTA = ""
If DoesFTAExist(fileExtension) And IsFTAMine(fileExtension) Then
Try
Dim HKCRext As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot().OpenSubKey("." & fileExtension)
Dim HKCRfta = HKCRext.GetValue("", "")
If Not HKCRfta = "" Then
Dim HKCRftaKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot().OpenSubKey(HKCRfta)
GetAppForFTA = HKCRftaKey.GetValue("RemoteApp", "")
End If
Catch ex As Exception
End Try
End If
End Function
Public Sub DeleteFTA(fileExtension As String)
fileExtension = fileExtension.TrimStart(".")
If Not My.Computer.Registry.ClassesRoot.OpenSubKey("." & fileExtension) Is Nothing Then _
My.Computer.Registry.ClassesRoot.DeleteSubKeyTree("." & fileExtension)
If Not My.Computer.Registry.ClassesRoot.OpenSubKey(fileExtension & "_file") Is Nothing Then _
My.Computer.Registry.ClassesRoot.DeleteSubKeyTree(fileExtension & "_file")
End Sub
Public Function DoesFTAExist(fileExtension As String) As Boolean
fileExtension = fileExtension.TrimStart(".")
Dim FTAexists As Boolean = False
Dim HKCRext As String = ""
Try
HKCRext = My.Computer.Registry.ClassesRoot().OpenSubKey("." & fileExtension).ToString
FTAexists = True
Catch ex As Exception
End Try
Return FTAexists
End Function
Public Function IsFTAMine(fileExtension As String) As Boolean
fileExtension = fileExtension.TrimStart(".")
IsFTAMine = False
Try
Dim HKCRext As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot().OpenSubKey("." & fileExtension)
Dim HKCRfta = HKCRext.GetValue("", "")
If Not HKCRfta = "" Then
Dim HKCRftaKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot().OpenSubKey(HKCRfta)
If Not HKCRftaKey.GetValue("RemoteApp", "") = "" Then IsFTAMine = True
End If
Catch ex As Exception
End Try
End Function
End Module

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = true
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.RemoteApp_Tool.RemoteAppMainWindow
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>RemoteAppMainWindow</MainForm>
<SingleInstance>true</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports 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.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("RemoteApp Tool")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("Kim Knight")>
<Assembly: AssemblyProduct("RemoteApp Tool")>
<Assembly: AssemblyCopyright("Created by Kim Knight")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("fbd55db5-06ea-4e43-92a4-6e96893013cc")>
' 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("5.4.0.0")>
<Assembly: AssemblyFileVersion("5.4.0.0")>

View File

@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("RemoteApp_Tool.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

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

View File

@@ -0,0 +1,301 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("0")> _
Public Property MainWindowWidth() As Long
Get
Return CType(Me("MainWindowWidth"),Long)
End Get
Set
Me("MainWindowWidth") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("0")> _
Public Property MainWindowHeight() As Long
Get
Return CType(Me("MainWindowHeight"),Long)
End Get
Set
Me("MainWindowHeight") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedConnectionModeMSI() As Boolean
Get
Return CType(Me("SavedConnectionModeMSI"),Boolean)
End Get
Set
Me("SavedConnectionModeMSI") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedOpenWithNotepad() As Boolean
Get
Return CType(Me("SavedOpenWithNotepad"),Boolean)
End Get
Set
Me("SavedOpenWithNotepad") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property SavedServerAddress() As String
Get
Return CType(Me("SavedServerAddress"),String)
End Get
Set
Me("SavedServerAddress") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("3389")> _
Public Property SavedServerPort() As Integer
Get
Return CType(Me("SavedServerPort"),Integer)
End Get
Set
Me("SavedServerPort") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property SavedAltServerAddress() As String
Get
Return CType(Me("SavedAltServerAddress"),String)
End Get
Set
Me("SavedAltServerAddress") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedUseRDGateway() As Boolean
Get
Return CType(Me("SavedUseRDGateway"),Boolean)
End Get
Set
Me("SavedUseRDGateway") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property SavedRDGatewayAddress() As String
Get
Return CType(Me("SavedRDGatewayAddress"),String)
End Get
Set
Me("SavedRDGatewayAddress") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedAttemptDirectRDGateway() As Boolean
Get
Return CType(Me("SavedAttemptDirectRDGateway"),Boolean)
End Get
Set
Me("SavedAttemptDirectRDGateway") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
Public Property SavedMSIShortcutDesktop() As Boolean
Get
Return CType(Me("SavedMSIShortcutDesktop"),Boolean)
End Get
Set
Me("SavedMSIShortcutDesktop") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
Public Property SavedMSIShortcutStart() As Boolean
Get
Return CType(Me("SavedMSIShortcutStart"),Boolean)
End Get
Set
Me("SavedMSIShortcutStart") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedMSIShortcutStartTopLevel() As Boolean
Get
Return CType(Me("SavedMSIShortcutStartTopLevel"),Boolean)
End Get
Set
Me("SavedMSIShortcutStartTopLevel") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("True")> _
Public Property SavedUseShortcutTag() As Boolean
Get
Return CType(Me("SavedUseShortcutTag"),Boolean)
End Get
Set
Me("SavedUseShortcutTag") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("remote")> _
Public Property SavedShortcutTag() As String
Get
Return CType(Me("SavedShortcutTag"),String)
End Get
Set
Me("SavedShortcutTag") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedClientConnectionOptions() As Boolean
Get
Return CType(Me("SavedClientConnectionOptions"),Boolean)
End Get
Set
Me("SavedClientConnectionOptions") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedCreateRAWebIcon() As Boolean
Get
Return CType(Me("SavedCreateRAWebIcon"),Boolean)
End Get
Set
Me("SavedCreateRAWebIcon") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedMSIPerUser() As Boolean
Get
Return CType(Me("SavedMSIPerUser"),Boolean)
End Get
Set
Me("SavedMSIPerUser") = value
End Set
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property SavedDisableFTA() As Boolean
Get
Return CType(Me("SavedDisableFTA"),Boolean)
End Get
Set
Me("SavedDisableFTA") = value
End Set
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.RemoteApp_Tool.My.MySettings
Get
Return Global.RemoteApp_Tool.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,63 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="MainWindowWidth" Type="System.Int64" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="MainWindowHeight" Type="System.Int64" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="SavedConnectionModeMSI" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedOpenWithNotepad" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedServerAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SavedServerPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">3389</Value>
</Setting>
<Setting Name="SavedAltServerAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SavedUseRDGateway" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedRDGatewayAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="SavedAttemptDirectRDGateway" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedMSIShortcutDesktop" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SavedMSIShortcutStart" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SavedMSIShortcutStartTopLevel" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedUseShortcutTag" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="SavedShortcutTag" Type="System.String" Scope="User">
<Value Profile="(Default)">remote</Value>
</Setting>
<Setting Name="SavedClientConnectionOptions" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedCreateRAWebIcon" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedMSIPerUser" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SavedDisableFTA" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel node will disable file and registry virtualization.
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of all Windows versions that this application is designed to work with.
Windows will automatically select the most compatible environment.-->
<!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
<!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
<!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
</application>
</compatibility>
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!-- <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>-->
</asmv1:assembly>

View File

@@ -0,0 +1,398 @@
Module RDP2MSImodule
Public wxsPath
Public wixobjPath
Public wixpdbPath
Public rdpFilePathD
Public Sub Main()
Dim cmdRdpPath = ""
Dim cmdSwitches = "DS"
LogText("RDP2MSI" & vbCrLf)
If My.Application.CommandLineArgs.Count = 0 Then
ShowUsage()
End
ElseIf My.Application.CommandLineArgs.Count = 1 Then
cmdRdpPath = My.Application.CommandLineArgs(0)
ElseIf My.Application.CommandLineArgs.Count = 2 Then
If My.Application.CommandLineArgs(0).StartsWith("/") Then
cmdSwitches = My.Application.CommandLineArgs(0)
cmdRdpPath = My.Application.CommandLineArgs(1)
Else
cmdSwitches = My.Application.CommandLineArgs(1)
cmdRdpPath = My.Application.CommandLineArgs(0)
End If
ElseIf My.Application.CommandLineArgs.Count > 2 Then
LogText("Error: Too many parameters provided.", True)
End If
Dim relCmdRdpPath = System.IO.Directory.GetCurrentDirectory & "\" & cmdRdpPath
If Not cmdRdpPath.Contains(":") Then cmdRdpPath = relCmdRdpPath
If Not My.Computer.FileSystem.FileExists(cmdRdpPath) Then LogText("Error: Unable to find RDP file: " & cmdRdpPath, True)
If Not cmdSwitches.ToUpper.Contains("D") Then
If Not cmdSwitches.ToUpper.Contains("S") Then
cmdSwitches += "DS"
End If
End If
If cmdSwitches.ToUpper.Contains("~") Then LogText("Command line options: " & cmdSwitches.ToUpper)
RDP2MSI(cmdRdpPath, cmdSwitches.ToUpper)
'Console.Write("Press any key to continue...")
'Console.ReadKey()
End Sub
Private Sub LogText(TheText As String, Optional DoExit As Boolean = False)
Console.WriteLine(TheText)
If DoExit = True Then
CleanupTempFiles()
'End
End If
End Sub
Public Sub RDP2MSI(rdpFilePath As String, Optional CmdParameters As String = "", Optional ShortcutTag As String = "", Optional AppPublisher As String = "", Optional FlatFileTypes As String = "", Optional PerUser As Boolean = False)
If Not My.Computer.FileSystem.FileExists(rdpFilePath) Then LogText("Error: Unable to find RDP file: " & rdpFilePath, True)
If Not rdpFilePath.ToLower.EndsWith(".rdp") Then LogText("Error: Input file must be an RDP file.", True)
If ReadRDPProperty(rdpFilePath, "remoteapplicationname") = "" Then LogText("Error: RDP file does not contain valid data.", True)
Dim rdpParentFolder = My.Computer.FileSystem.GetParentPath(rdpFilePath)
LogText("Working folder: " & rdpParentFolder)
LogText("RDP file: " & rdpFilePath)
Dim RemoteAppFullName = ReadRDPProperty(rdpFilePath, "remoteapplicationname")
LogText("App full name: " & RemoteAppFullName)
Dim RemoteAppShortName = ReadRDPProperty(rdpFilePath, "remoteapplicationprogram")
LogText("App short name: " & RemoteAppShortName)
Dim UpgradeCode
If CmdParameters.ToUpper.Contains("A") Then
UpgradeCode = GenerateGUIDfromString(RemoteAppShortName)
Else
Dim Rnd = New Random()
UpgradeCode = GenerateGUIDfromString(Rnd.Next)
End If
LogText("Upgrade code: " & UpgradeCode)
Dim IconFilePath = Left(rdpFilePath, rdpFilePath.Length - 4) & ".ico"
Dim HasIcon = False
If My.Computer.FileSystem.FileExists(IconFilePath) Then
HasIcon = True
LogText("Icon found: " & IconFilePath)
Else
LogText("Icon not found.")
End If
'Dim shortcutTag = ReadIni(My.Application.Info.DirectoryPath & "\rdp2msi.ini", "Settings", "ShortcutTag", "remote")
If CmdParameters.ToUpper.Contains("T") Then ShortcutTag = ""
'Dim appPublisher = ReadIni(My.Application.Info.DirectoryPath & "\rdp2msi.ini", "Settings", "AppPublisher", "")
Dim rdpFileName = My.Computer.FileSystem.GetFileInfo(rdpFilePath).Name
Dim ProductFileName = Left(rdpFileName, rdpFileName.Length - 4)
Dim wxsString = GenerateWXSString(ProductFileName, RemoteAppFullName, AppPublisher, HasIcon, , UpgradeCode, ShortcutTag, CmdParameters, FlatFileTypes, PerUser)
wxsPath = rdpParentFolder & "\" & ProductFileName & ".wxs"
wixobjPath = rdpParentFolder & "\" & ProductFileName & ".wixobj"
wixpdbPath = rdpParentFolder & "\" & ProductFileName & ".wixpdb"
Dim msiPath = rdpParentFolder & "\" & ProductFileName & ".msi"
Dim FilesToDelete As New ArrayList
FilesToDelete.Add(rdpFilePath)
FilesToDelete.Add(wxsPath)
FilesToDelete.Add(wixobjPath)
FilesToDelete.Add(wixpdbPath)
My.Computer.FileSystem.WriteAllText(wxsPath, wxsString, False)
Dim wixPath = FindWixPath()
If wixPath = "" Then
LogText("Error: Unable to locate the WiX Toolset. Exiting.", True)
Else
LogText("Found WiX Toolset in: " & wixPath)
End If
Dim CandlePath = wixPath & "\candle.exe "
Dim LightPath = wixPath & "\light.exe "
LogText("Invoking candle.exe from WiX Toolset")
Dim CandleExitCode = RunWait(CandlePath, "-out """ & wixobjPath & """ """ & wxsPath & """")
If CandleExitCode = 0 Then
LogText("candle.exe executed successfully.")
Else
LogText("Error: candle.exe returned an error.", True)
End If
LogText("Invoking light.exe from WiX Toolset")
Dim LightExitCode = RunWait(LightPath, " -out """ & msiPath & """ """ & wixobjPath & """")
If LightExitCode = 0 Then
LogText("light.exe executed successfully.")
Else
LogText("Error: light.exe returned an error.", True)
End If
If Not CmdParameters.Contains("~") Then
DeleteFiles(FilesToDelete)
End If
If My.Computer.FileSystem.FileExists(msiPath) Then
LogText(My.Computer.FileSystem.GetFileInfo(msiPath).Name & " created successfully.")
Else
LogText("Error: MSI creation failed.", True)
MsgBox("MSI creation failed.", MsgBoxStyle.Critical, "Error")
End If
End Sub
Sub CleanupTempFiles()
If My.Computer.FileSystem.FileExists(rdpFilePathD) Then My.Computer.FileSystem.DeleteFile(rdpFilePathD)
If My.Computer.FileSystem.FileExists(wxsPath) Then My.Computer.FileSystem.DeleteFile(wxsPath)
If My.Computer.FileSystem.FileExists(wixobjPath) Then My.Computer.FileSystem.DeleteFile(wixobjPath)
If My.Computer.FileSystem.FileExists(wixpdbPath) Then My.Computer.FileSystem.DeleteFile(wixpdbPath)
End Sub
Function FindWixPath()
LogText("Locating WiX Toolset")
Dim searchExe = "\candle.exe"
Dim wixPath = ""
Dim wixIniPath = ReadIni(My.Application.Info.DirectoryPath & "\rdp2msi.ini", "WIX", "binpath", My.Application.Info.DirectoryPath & "\wix").TrimEnd(Chr(92))
If My.Computer.FileSystem.FileExists(wixIniPath & searchExe) Then
wixPath = wixIniPath
ElseIf Environment.GetEnvironmentVariable("WIX") <> "" Then
wixPath = Environment.GetEnvironmentVariable("WIX") & "bin"
ElseIf My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\wix\" & searchExe) Then
wixPath = My.Application.Info.DirectoryPath & "\wix"
ElseIf My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\bin\" & searchExe) Then
wixPath = My.Application.Info.DirectoryPath & "\bin"
End If
Return wixPath
End Function
Sub ShowUsage()
LogText("Usage: rdp2msi.exe [/DSNAT] rdpfile.rdp")
LogText("")
LogText("Switches:")
LogText("")
LogText(" /D MSI will deploy desktop shortcut")
LogText(" /S MSI will deploy shortcut in Start Menu > Programs > (AppName)")
LogText(" /N Requires /S. MSI will not create subfolder in Start Menu > Programs")
LogText(" /A Generate upgrade code based on app name, otherwise it is random")
LogText(" /T Do not include the (remote) tag on deployed shortcuts")
LogText("")
LogText("If no switches are specified, /DS is implied.")
LogText("")
End Sub
Function GenerateWXSString(ProductFileName As String, ProductName As String, Optional ProductPublisher As String = "", Optional HasIcon As Boolean = False, Optional ProductVersion As String = "1.0.0.0", Optional ProductUpgradeCode As String = "random", Optional ProductRemoteTag As String = "remote", Optional ShortcutLocations As String = "DS", Optional FlatFileTypes As String = "", Optional PerUser As Boolean = False)
Dim Rnd = New Random()
If ProductUpgradeCode = "random" Then ProductUpgradeCode = GenerateGUIDfromString(Rnd.Next)
If ProductPublisher = "" Then ProductPublisher = ProductName
Dim RegRoot = "HKLM"
If PerUser = True Then RegRoot = "HKCU"
Dim FileTypes As New ArrayList
If Not FlatFileTypes = "" Then FileTypes.AddRange(Split(FlatFileTypes, "|"))
Dim AppFilesGuid = GenerateGUIDfromString("AppFiles" & ProductUpgradeCode)
Dim AppStartShortcutsGuid = GenerateGUIDfromString("AppStartShortcuts" & ProductUpgradeCode)
Dim AppDeskShortcutsGuid = GenerateGUIDfromString("AppDeskShortcuts" & ProductUpgradeCode)
Dim wxsString = "<?xml version=""1.0""?>" & vbCrLf
wxsString += "<?define ProductVersion = """ & ProductVersion & """?>" & vbCrLf
wxsString += "<?define ProductUpgradeCode = """ & ProductUpgradeCode & """?>" & vbCrLf
wxsString += "<?define AppFilesGuid = """ & AppFilesGuid & """?>" & vbCrLf
wxsString += "<?define AppStartShortcutsGuid = """ & AppStartShortcutsGuid & """?>" & vbCrLf
wxsString += "<?define AppDeskShortcutsGuid = """ & AppDeskShortcutsGuid & """?>" & vbCrLf
wxsString += "<?define ProductName = """ & ProductName & """?>" & vbCrLf
wxsString += "<?define ProductPublisher = """ & ProductPublisher & """?>" & vbCrLf
wxsString += "<?define ProductFileName = """ & ProductFileName & """?>" & vbCrLf
wxsString += "<?define RegRoot = """ & RegRoot & """?>" & vbCrLf
If Not ProductRemoteTag = "" Then ProductRemoteTag = " (" & ProductRemoteTag & ")"
wxsString += "<?define ProductRemoteTag = """ & ProductRemoteTag & """?>" & vbCrLf
wxsString += "<Wix xmlns=""http://schemas.microsoft.com/wix/2006/wi"">" & vbCrLf
wxsString += " <Product Id=""*"" UpgradeCode=""$(var.ProductUpgradeCode)"" " & vbCrLf
wxsString += " Name=""$(var.ProductName)$(var.ProductRemoteTag)"" Version=""$(var.ProductVersion)"" Manufacturer=""$(var.ProductPublisher)"" Language=""1033"">" & vbCrLf
wxsString += " <Package InstallerVersion=""200"" Compressed=""yes"" Comments=""Windows Installer Package"""
If Not PerUser Then
wxsString += " InstallScope=""perMachine"""
Else
wxsString += " InstallPrivileges=""limited"""
End If
wxsString += "/>" & vbCrLf
wxsString += " <Media Id=""1"" Cabinet=""rdp2msi.cab"" EmbedCab=""yes""/>" & vbCrLf
If Not PerUser Then wxsString += " <Property Id=""AllUSERS"" Value=""1""/>" & vbCrLf
wxsString += " <Upgrade Id=""$(var.ProductUpgradeCode)"">" & vbCrLf
wxsString += " <UpgradeVersion Minimum=""$(var.ProductVersion)"" OnlyDetect=""yes"" Property=""NEWERVERSIONDETECTED""/>" & vbCrLf
wxsString += " <UpgradeVersion Minimum=""0.0.0"" Maximum=""$(var.ProductVersion)"" IncludeMinimum=""yes"" IncludeMaximum=""no"" " & vbCrLf
wxsString += " Property=""OLDERVERSIONBEINGUPGRADED""/> " & vbCrLf
wxsString += " </Upgrade>" & vbCrLf
wxsString += " <Condition Message=""A newer version of this software is already installed."">NOT NEWERVERSIONDETECTED</Condition>" & vbCrLf
wxsString += " <Property Id=""MstscProperty"" Value=""mstsc.exe""/>" & vbCrLf
wxsString += " <Directory Id=""TARGETDIR"" Name=""SourceDir"">" & vbCrLf
If Not PerUser Then
wxsString += " <Directory Id=""ProgramFilesFolder"">" & vbCrLf
Else
wxsString += " <Directory Id=""LocalAppDataFolder"">" & vbCrLf
End If
wxsString += " <Directory Id=""INSTALLDIR"" Name=""RemotePackages"">" & vbCrLf
wxsString += " <Component Id=""ApplicationFiles"" Guid=""$(var.AppFilesGuid)"">" & vbCrLf
wxsString += " <File Id=""rdpFile1"" Source=""$(var.ProductFileName).rdp""/>" & vbCrLf
If HasIcon Then wxsString += " <File Id=""rdpIcon1"" Source=""$(var.ProductFileName).ico""/>" & vbCrLf
If Not FlatFileTypes = "" Then
For Each FileType In FileTypes
wxsString += " <File Id=""$(var.ProductFileName)_" & FileType & ".ico"" Source=""$(var.ProductFileName)_" & FileType & ".ico"" />" & vbCrLf
wxsString += " <ProgId Id=""remote.$(var.ProductFileName)." & FileType & "file"" Description=""$(var.ProductName) " & FileType & " file"" Icon=""$(var.ProductFileName)_" & FileType & ".ico"">" & vbCrLf
wxsString += " <Extension Id=""" & FileType & """ ContentType=""application/" & FileType & """>" & vbCrLf
wxsString += " <Verb Id=""open"" Command=""Open"" TargetProperty='MstscProperty' Argument='/REMOTEFILE:""%1"" ""[INSTALLDIR]$(var.ProductFileName).rdp""' />" & vbCrLf
wxsString += " </Extension>" & vbCrLf
wxsString += " </ProgId>" & vbCrLf
Next
End If
wxsString += " </Component>" & vbCrLf
wxsString += " </Directory>" & vbCrLf
wxsString += " </Directory>" & vbCrLf
If ShortcutLocations.ToUpper.Contains("S") Then
wxsString += " <Directory Id=""ProgramMenuFolder"">" & vbCrLf
If Not ShortcutLocations.ToUpper.Contains("N") Then wxsString += " <Directory Id=""ProgramMenuSubfolder"" Name=""$(var.ProductName)$(var.ProductRemoteTag)"">" & vbCrLf
wxsString += " <Component Id=""ApplicationStartShortcuts"" Guid=""$(var.AppStartShortcutsGuid)"">" & vbCrLf
wxsString += " <Shortcut Id=""rdpStartShortcut1"" Name=""$(var.ProductName)$(var.ProductRemoteTag)"" Description=""$(var.ProductName)$(var.ProductRemoteTag)"" " & vbCrLf
wxsString += " Target=""[INSTALLDIR]$(var.ProductFileName).rdp"" WorkingDirectory=""INSTALLDIR"""
If HasIcon Then
wxsString += " Icon=""rdpStartIcon.rdp"" IconIndex=""0"">" & vbCrLf
wxsString += " <Icon Id=""rdpStartIcon.rdp"" SourceFile=""$(var.ProductFileName).ico"" />" & vbCrLf
wxsString += " </Shortcut>" & vbCrLf
Else
wxsString += "/>" & vbCrLf
End If
wxsString += " <RegistryValue Root=""$(var.RegRoot)"" Key=""Software\RDP2MSI\$(var.ProductName)"" " & vbCrLf
wxsString += " Name=""installed"" Type=""integer"" Value=""1"" KeyPath=""yes""/>" & vbCrLf
wxsString += " <RemoveFolder Id=""ProgramMenuSubfolder"" On=""uninstall""/>" & vbCrLf
wxsString += " </Component>" & vbCrLf
If Not ShortcutLocations.ToUpper.Contains("N") Then wxsString += " </Directory>" & vbCrLf
wxsString += " </Directory>" & vbCrLf
End If
If ShortcutLocations.ToUpper.Contains("D") Then
wxsString += " <Directory Id=""DesktopFolder"">" & vbCrLf
wxsString += " <Component Id=""ApplicationDesktopShortcuts"" Guid=""$(var.AppDeskShortcutsGuid)"">" & vbCrLf
wxsString += " <Shortcut Id=""rdpDesktopShortcut1"" Name=""$(var.ProductName)$(var.ProductRemoteTag)"" Description=""$(var.ProductName)$(var.ProductRemoteTag)"" " & vbCrLf
wxsString += " Target=""[INSTALLDIR]$(var.ProductFileName).rdp"" WorkingDirectory=""INSTALLDIR"""
If HasIcon Then
wxsString += " Icon=""rdpDeskIcon.rdp"" IconIndex=""0"">" & vbCrLf
wxsString += " <Icon Id=""rdpDeskIcon.rdp"" SourceFile=""$(var.ProductFileName).ico"" />" & vbCrLf
wxsString += " </Shortcut>" & vbCrLf
Else
wxsString += "/>" & vbCrLf
End If
wxsString += " <RegistryValue Root=""$(var.RegRoot)"" Key=""Software\RDP2MSI\$(var.ProductName)"" " & vbCrLf
wxsString += " Name=""installed"" Type=""integer"" Value=""1"" KeyPath=""yes""/>" & vbCrLf
wxsString += " </Component>" & vbCrLf
wxsString += " </Directory>" & vbCrLf
End If
wxsString += " </Directory>" & vbCrLf
wxsString += " <InstallExecuteSequence>" & vbCrLf
wxsString += " <RemoveExistingProducts After=""InstallValidate""/>" & vbCrLf
wxsString += " </InstallExecuteSequence>" & vbCrLf
wxsString += " "
wxsString += " <Feature Id=""DefaultFeature"" Level=""1"">" & vbCrLf
wxsString += " <ComponentRef Id=""ApplicationFiles""/>" & vbCrLf
If ShortcutLocations.ToUpper.Contains("S") Then wxsString += " <ComponentRef Id=""ApplicationStartShortcuts""/>" & vbCrLf
If ShortcutLocations.ToUpper.Contains("D") Then wxsString += " <ComponentRef Id=""ApplicationDesktopShortcuts""/>" & vbCrLf
wxsString += " </Feature>" & vbCrLf
If HasIcon Then
wxsString += "<Icon Id=""rdpARPIcon.rdp"" SourceFile=""$(var.ProductFileName).ico"" />" & vbCrLf
wxsString += "<Property Id=""ARPPRODUCTICON"" Value=""rdpARPIcon.rdp"" />" & vbCrLf
End If
wxsString += " </Product>" & vbCrLf
wxsString += "</Wix>" & vbCrLf
Return wxsString
End Function
Function ReadRDPProperty(rdpFile As String, rdpProperty As String) As String
Dim rdpFileContents = My.Computer.FileSystem.ReadAllText(rdpFile)
Dim rdpFileLines = Split(rdpFileContents, vbLf)
Dim rdpValue = ""
For Each rdpLine In rdpFileLines
rdpLine = Replace(rdpLine, vbCr, "")
rdpLine = Replace(rdpLine, "|", "")
Dim rdpLineSplit = Split(rdpLine, ":", 3)
If rdpLineSplit(0) = rdpProperty Then
rdpValue = rdpLineSplit(2)
End If
Next
Return rdpValue
End Function
Private Function GenerateGUIDfromString(TheString As String)
Dim TheHash = getMD5Hash(TheString)
Dim MyGuid As Guid = New Guid(TheHash)
Return MyGuid.ToString
End Function
Private Function getMD5Hash(ByVal strToHash As String) As String
Dim md5Obj As New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = md5Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
Dim b As Byte
For Each b In bytesToHash
strResult += b.ToString("x2")
Next
Return strResult
End Function
Private Declare Unicode Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringW" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpString As String, _
ByVal lpFileName As String) As Int32
Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Int32, _
ByVal lpFileName As String) As Int32
Public Sub writeIni(ByVal iniFileName As String, ByVal Section As String, ByVal ParamName As String, ByVal ParamVal As String)
Dim Result As Integer = WritePrivateProfileString(Section, ParamName, ParamVal, iniFileName)
End Sub
Public Function ReadIni(ByVal IniFileName As String, ByVal Section As String, ByVal ParamName As String, ByVal ParamDefault As String) As String
Dim ParamVal As String = Space$(1024)
Dim LenParamVal As Long = GetPrivateProfileString(Section, ParamName, ParamDefault, ParamVal, Len(ParamVal), IniFileName)
ReadIni = Left$(ParamVal, LenParamVal)
End Function
Public Function RunWait(App As String, Parameters As String) As Integer
Dim proc As New Process
proc.StartInfo.CreateNoWindow = True
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
proc.StartInfo.FileName = App
proc.StartInfo.Arguments = Parameters
proc.Start()
proc.WaitForExit()
Return proc.ExitCode
End Function
End Module

View File

@@ -0,0 +1,52 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Desktop
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RemoteApp Tool", "RemoteApp Tool.vbproj", "{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}"
ProjectSection(ProjectDependencies) = postProject
{785B6808-B2FE-4C18-9D63-6DAB46482374} = {785B6808-B2FE-4C18-9D63-6DAB46482374}
{E1CB5F9C-230F-4967-8F19-335F8E4A4906} = {E1CB5F9C-230F-4967-8F19-335F8E4A4906}
{258307D5-A407-4622-BF1A-BDCA8E3D2FAA} = {258307D5-A407-4622-BF1A-BDCA8E3D2FAA}
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RemoteAppLib", "..\RemoteAppLib\RemoteAppLib.vbproj", "{785B6808-B2FE-4C18-9D63-6DAB46482374}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDP2MSILib", "..\RDP2MSILib\RDP2MSILib.vbproj", "{E1CB5F9C-230F-4967-8F19-335F8E4A4906}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDP2MSI", "..\RDP2MSI\RDP2MSI.vbproj", "{1001A958-40DB-4444-9CD7-09D1188072D1}"
ProjectSection(ProjectDependencies) = postProject
{E1CB5F9C-230F-4967-8F19-335F8E4A4906} = {E1CB5F9C-230F-4967-8F19-335F8E4A4906}
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDPFileLib", "..\RDPFileLib\RDPFileLib.vbproj", "{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}.Release|Any CPU.Build.0 = Release|Any CPU
{785B6808-B2FE-4C18-9D63-6DAB46482374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{785B6808-B2FE-4C18-9D63-6DAB46482374}.Debug|Any CPU.Build.0 = Debug|Any CPU
{785B6808-B2FE-4C18-9D63-6DAB46482374}.Release|Any CPU.ActiveCfg = Release|Any CPU
{785B6808-B2FE-4C18-9D63-6DAB46482374}.Release|Any CPU.Build.0 = Release|Any CPU
{E1CB5F9C-230F-4967-8F19-335F8E4A4906}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E1CB5F9C-230F-4967-8F19-335F8E4A4906}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E1CB5F9C-230F-4967-8F19-335F8E4A4906}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E1CB5F9C-230F-4967-8F19-335F8E4A4906}.Release|Any CPU.Build.0 = Release|Any CPU
{1001A958-40DB-4444-9CD7-09D1188072D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1001A958-40DB-4444-9CD7-09D1188072D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1001A958-40DB-4444-9CD7-09D1188072D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1001A958-40DB-4444-9CD7-09D1188072D1}.Release|Any CPU.Build.0 = Release|Any CPU
{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>RemoteApp_Tool.My.MyApplication</StartupObject>
<RootNamespace>RemoteApp_Tool</RootNamespace>
<AssemblyName>RemoteApp Tool</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<SignAssembly>False</SignAssembly>
<DelaySign>False</DelaySign>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<WarningLevel>4</WarningLevel>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>RemoteApp Tool.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>RemoteApp Tool.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<Optimize>true</Optimize>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>add-window.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>BB4C8620F86E472788E1B361CE835B5A7E437B86</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>RemoteApp Tool_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<Optimize>true</Optimize>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<Optimize>False</Optimize>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<BaseAddress>4194304</BaseAddress>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
</PropertyGroup>
<ItemGroup>
<Reference Include="IconLib, Version=0.73.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\IconLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="ApplicationEvents.vb" />
<Compile Include="HelpSystem.vb" />
<Compile Include="IconModule.vb" />
<Compile Include="LocalFtaModule.vb" />
<Compile Include="RemoteAppCreateClientConnection.Designer.vb">
<DependentUpon>RemoteAppCreateClientConnection.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppCreateClientConnection.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppFileTypeAssociation.Designer.vb">
<DependentUpon>RemoteAppFileTypeAssociation.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppFileTypeAssociation.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppAboutWindow.Designer.vb">
<DependentUpon>RemoteAppAboutWindow.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppAboutWindow.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppFunctions.vb" />
<Compile Include="RemoteAppHostOptions.Designer.vb">
<DependentUpon>RemoteAppHostOptions.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppHostOptions.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppEditWindow.Designer.vb">
<DependentUpon>RemoteAppEditWindow.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppEditWindow.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppIconPicker.Designer.vb">
<DependentUpon>RemoteAppIconPicker.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppIconPicker.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="RemoteAppMainWindow.Designer.vb">
<DependentUpon>RemoteAppMainWindow.vb</DependentUpon>
</Compile>
<Compile Include="RemoteAppMainWindow.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="RemoteAppAboutWindow.resx">
<DependentUpon>RemoteAppAboutWindow.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppCreateClientConnection.resx">
<DependentUpon>RemoteAppCreateClientConnection.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppFileTypeAssociation.resx">
<DependentUpon>RemoteAppFileTypeAssociation.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppHostOptions.resx">
<DependentUpon>RemoteAppHostOptions.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppEditWindow.resx">
<DependentUpon>RemoteAppEditWindow.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppIconPicker.resx">
<DependentUpon>RemoteAppIconPicker.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RemoteAppMainWindow.resx">
<DependentUpon>RemoteAppMainWindow.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.manifest">
<SubType>Designer</SubType>
</None>
<None Include="My Project\app.manifest" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="RemoteApp Tool_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
<Visible>False</Visible>
<ProductName>Windows Installer 4.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="add-window.ico" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\RDP2MSILib\RDP2MSILib.vbproj">
<Project>{e1cb5f9c-230f-4967-8f19-335f8e4a4906}</Project>
<Name>RDP2MSILib</Name>
</ProjectReference>
<ProjectReference Include="..\RDPFileLib\RDPFileLib.vbproj">
<Project>{258307d5-a407-4622-bf1a-bdca8e3d2faa}</Project>
<Name>RDPFileLib</Name>
</ProjectReference>
<ProjectReference Include="..\RemoteAppLib\RemoteAppLib.vbproj">
<Project>{785b6808-b2fe-4c18-9d63-6dab46482374}</Project>
<Name>RemoteAppLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Binary file not shown.

View File

@@ -0,0 +1,152 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppAboutWindow
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppAboutWindow))
Me.TitleLabel = New System.Windows.Forms.Label()
Me.VersionLabel = New System.Windows.Forms.Label()
Me.CopyrightLabel = New System.Windows.Forms.Label()
Me.SiteLinkLabel = New System.Windows.Forms.LinkLabel()
Me.IconLibCreatedByLabel = New System.Windows.Forms.Label()
Me.IconLibLabel = New System.Windows.Forms.Label()
Me.IconLibLinkLabel = New System.Windows.Forms.LinkLabel()
Me.IconLibLicenceTextLabel = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'TitleLabel
'
Me.TitleLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.TitleLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.TitleLabel.Location = New System.Drawing.Point(17, 9)
Me.TitleLabel.Name = "TitleLabel"
Me.TitleLabel.Size = New System.Drawing.Size(263, 30)
Me.TitleLabel.TabIndex = 0
Me.TitleLabel.Text = "RemoteApp Tool"
Me.TitleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'VersionLabel
'
Me.VersionLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.VersionLabel.Location = New System.Drawing.Point(17, 39)
Me.VersionLabel.Name = "VersionLabel"
Me.VersionLabel.Size = New System.Drawing.Size(263, 30)
Me.VersionLabel.TabIndex = 0
Me.VersionLabel.Text = "Version 0.0.0.0"
Me.VersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'CopyrightLabel
'
Me.CopyrightLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.CopyrightLabel.Location = New System.Drawing.Point(17, 69)
Me.CopyrightLabel.Name = "CopyrightLabel"
Me.CopyrightLabel.Size = New System.Drawing.Size(263, 30)
Me.CopyrightLabel.TabIndex = 0
Me.CopyrightLabel.Text = "Created by Kim Knight"
Me.CopyrightLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'SiteLinkLabel
'
Me.SiteLinkLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.SiteLinkLabel.Location = New System.Drawing.Point(17, 99)
Me.SiteLinkLabel.Name = "SiteLinkLabel"
Me.SiteLinkLabel.Size = New System.Drawing.Size(263, 30)
Me.SiteLinkLabel.TabIndex = 1
Me.SiteLinkLabel.TabStop = True
Me.SiteLinkLabel.Text = "www.kimknight.net/remoteapptool"
Me.SiteLinkLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'IconLibCreatedByLabel
'
Me.IconLibCreatedByLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.IconLibCreatedByLabel.Location = New System.Drawing.Point(17, 159)
Me.IconLibCreatedByLabel.Name = "IconLibCreatedByLabel"
Me.IconLibCreatedByLabel.Size = New System.Drawing.Size(263, 30)
Me.IconLibCreatedByLabel.TabIndex = 4
Me.IconLibCreatedByLabel.Text = "Created by CastorTiu"
Me.IconLibCreatedByLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'IconLibLabel
'
Me.IconLibLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.IconLibLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.IconLibLabel.Location = New System.Drawing.Point(17, 129)
Me.IconLibLabel.Name = "IconLibLabel"
Me.IconLibLabel.Size = New System.Drawing.Size(263, 30)
Me.IconLibLabel.TabIndex = 5
Me.IconLibLabel.Text = "IconLib"
Me.IconLibLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'IconLibLinkLabel
'
Me.IconLibLinkLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.IconLibLinkLabel.Location = New System.Drawing.Point(17, 219)
Me.IconLibLinkLabel.Name = "IconLibLinkLabel"
Me.IconLibLinkLabel.Size = New System.Drawing.Size(263, 30)
Me.IconLibLinkLabel.TabIndex = 1
Me.IconLibLinkLabel.TabStop = True
Me.IconLibLinkLabel.Text = "http://creativecommons.org/licenses/by-sa/3.0/"
Me.IconLibLinkLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'IconLibLicenceTextLabel
'
Me.IconLibLicenceTextLabel.Anchor = System.Windows.Forms.AnchorStyles.Top
Me.IconLibLicenceTextLabel.Location = New System.Drawing.Point(17, 189)
Me.IconLibLicenceTextLabel.Name = "IconLibLicenceTextLabel"
Me.IconLibLicenceTextLabel.Size = New System.Drawing.Size(263, 30)
Me.IconLibLicenceTextLabel.TabIndex = 4
Me.IconLibLicenceTextLabel.Text = "Licensed under a Creative Commons" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Attribution-Share Alike 3.0 Unported License"
Me.IconLibLicenceTextLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'RemoteAppAboutWindow
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(298, 267)
Me.Controls.Add(Me.IconLibLicenceTextLabel)
Me.Controls.Add(Me.IconLibCreatedByLabel)
Me.Controls.Add(Me.IconLibLabel)
Me.Controls.Add(Me.IconLibLinkLabel)
Me.Controls.Add(Me.SiteLinkLabel)
Me.Controls.Add(Me.CopyrightLabel)
Me.Controls.Add(Me.VersionLabel)
Me.Controls.Add(Me.TitleLabel)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "RemoteAppAboutWindow"
Me.Text = "RemoteAppAboutWindow"
Me.ResumeLayout(False)
End Sub
Friend WithEvents TitleLabel As System.Windows.Forms.Label
Friend WithEvents VersionLabel As System.Windows.Forms.Label
Friend WithEvents CopyrightLabel As System.Windows.Forms.Label
Friend WithEvents SiteLinkLabel As System.Windows.Forms.LinkLabel
Friend WithEvents IconLibCreatedByLabel As System.Windows.Forms.Label
Friend WithEvents IconLibLabel As System.Windows.Forms.Label
Friend WithEvents IconLibLinkLabel As System.Windows.Forms.LinkLabel
Friend WithEvents IconLibLicenceTextLabel As System.Windows.Forms.Label
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,27 @@
Imports System
Imports System.Reflection
Public Class RemoteAppAboutWindow
Private Sub RemoteAppAboutWindow_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = "About " & My.Application.Info.Title
Me.TitleLabel.Text = My.Application.Info.Title
Me.VersionLabel.Text = "Version " & My.Application.Info.Version.ToString
End Sub
Private Sub SiteLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles SiteLinkLabel.LinkClicked
System.Diagnostics.Process.Start("http://www.kimknight.net/remoteapptool")
End Sub
Private Sub IconLibLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles IconLibLinkLabel.LinkClicked
System.Diagnostics.Process.Start("http://creativecommons.org/licenses/by-sa/3.0/")
End Sub
Private Sub ralibLinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs)
System.Diagnostics.Process.Start("http://www.kimknight.net/")
End Sub
Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs)
System.Diagnostics.Process.Start("http://www.kimknight.net/")
End Sub
End Class

View File

@@ -0,0 +1,628 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppCreateClientConnection
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppCreateClientConnection))
Me.EditAfterSave = New System.Windows.Forms.CheckBox()
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.CreateButton = New System.Windows.Forms.Button()
Me.FileSaveRDP = New System.Windows.Forms.SaveFileDialog()
Me.CancelEditButton = New System.Windows.Forms.Button()
Me.ServerGroupBox = New System.Windows.Forms.GroupBox()
Me.Label13 = New System.Windows.Forms.Label()
Me.Label14 = New System.Windows.Forms.Label()
Me.Label12 = New System.Windows.Forms.Label()
Me.ServerPort = New System.Windows.Forms.TextBox()
Me.AltServerAddress = New System.Windows.Forms.TextBox()
Me.ServerAddress = New System.Windows.Forms.TextBox()
Me.RDGWGroupBox = New System.Windows.Forms.GroupBox()
Me.AttemptDirectCheckBox = New System.Windows.Forms.CheckBox()
Me.UseRDGatewayCheckBox = New System.Windows.Forms.CheckBox()
Me.RDGWLabel = New System.Windows.Forms.Label()
Me.GatewayAddress = New System.Windows.Forms.TextBox()
Me.ClientConnectionGroupBox = New System.Windows.Forms.GroupBox()
Me.MSIRadioButton = New System.Windows.Forms.RadioButton()
Me.RDPRadioButton = New System.Windows.Forms.RadioButton()
Me.CreateRAWebIcon = New System.Windows.Forms.CheckBox()
Me.FTAButton = New System.Windows.Forms.Button()
Me.FileBrowserIcon = New System.Windows.Forms.OpenFileDialog()
Me.FileSaveMSI = New System.Windows.Forms.SaveFileDialog()
Me.ShortcutDesktopCheckBox = New System.Windows.Forms.CheckBox()
Me.MSIGroupBox = New System.Windows.Forms.GroupBox()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.PerMachineRadioButton = New System.Windows.Forms.RadioButton()
Me.PerUserRadioButton = New System.Windows.Forms.RadioButton()
Me.TopLevelRadioButton = New System.Windows.Forms.RadioButton()
Me.SubfolderRadioButton = New System.Windows.Forms.RadioButton()
Me.ShortcutStartCheckBox = New System.Windows.Forms.CheckBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.ShortcutTagCheckBox = New System.Windows.Forms.CheckBox()
Me.ShortcutTagTextBox = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.ResetButton = New System.Windows.Forms.Button()
Me.SaveButton = New System.Windows.Forms.Button()
Me.FileTypesGroupBox = New System.Windows.Forms.GroupBox()
Me.FTACountLabel = New System.Windows.Forms.Label()
Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox()
Me.ServerGroupBox.SuspendLayout()
Me.RDGWGroupBox.SuspendLayout()
Me.ClientConnectionGroupBox.SuspendLayout()
Me.MSIGroupBox.SuspendLayout()
Me.Panel1.SuspendLayout()
Me.FileTypesGroupBox.SuspendLayout()
Me.SuspendLayout()
'
'EditAfterSave
'
Me.EditAfterSave.ImageIndex = 2
Me.EditAfterSave.ImageList = Me.SmallerIcons
Me.EditAfterSave.Location = New System.Drawing.Point(313, 13)
Me.EditAfterSave.Name = "EditAfterSave"
Me.EditAfterSave.Size = New System.Drawing.Size(165, 30)
Me.EditAfterSave.TabIndex = 2
Me.EditAfterSave.Text = "Manually edit RDP file"
Me.EditAfterSave.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
Me.EditAfterSave.UseVisualStyleBackColor = True
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "save-as_16x16.png")
Me.SmallerIcons.Images.SetKeyName(1, "msi small.ico")
Me.SmallerIcons.Images.SetKeyName(2, "doc_file_document_manager_paper_phone.ico")
Me.SmallerIcons.Images.SetKeyName(3, "16.ico")
Me.SmallerIcons.Images.SetKeyName(4, "cross.ico")
Me.SmallerIcons.Images.SetKeyName(5, "pictures (1).ico")
Me.SmallerIcons.Images.SetKeyName(6, "Remote Desktop Connection.ico")
'
'CreateButton
'
Me.CreateButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.CreateButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CreateButton.DialogResult = System.Windows.Forms.DialogResult.OK
Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CreateButton.ImageIndex = 6
Me.CreateButton.ImageList = Me.SmallerIcons
Me.CreateButton.Location = New System.Drawing.Point(416, 482)
Me.CreateButton.Name = "CreateButton"
Me.CreateButton.Size = New System.Drawing.Size(80, 29)
Me.CreateButton.TabIndex = 8
Me.CreateButton.Text = "Create..."
Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateButton.UseVisualStyleBackColor = False
'
'FileSaveRDP
'
Me.FileSaveRDP.DefaultExt = "rdp"
Me.FileSaveRDP.Filter = "RDP files|*.rdp"
'
'CancelEditButton
'
Me.CancelEditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.CancelEditButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CancelEditButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CancelEditButton.ImageIndex = 4
Me.CancelEditButton.ImageList = Me.SmallerIcons
Me.CancelEditButton.Location = New System.Drawing.Point(343, 482)
Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(67, 29)
Me.CancelEditButton.TabIndex = 7
Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False
'
'ServerGroupBox
'
Me.ServerGroupBox.Controls.Add(Me.Label13)
Me.ServerGroupBox.Controls.Add(Me.Label14)
Me.ServerGroupBox.Controls.Add(Me.Label12)
Me.ServerGroupBox.Controls.Add(Me.ServerPort)
Me.ServerGroupBox.Controls.Add(Me.AltServerAddress)
Me.ServerGroupBox.Controls.Add(Me.ServerAddress)
Me.ServerGroupBox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.ServerGroupBox.Location = New System.Drawing.Point(12, 92)
Me.ServerGroupBox.Name = "ServerGroupBox"
Me.ServerGroupBox.Size = New System.Drawing.Size(484, 87)
Me.ServerGroupBox.TabIndex = 1
Me.ServerGroupBox.TabStop = False
Me.ServerGroupBox.Text = "Remote Server"
'
'Label13
'
Me.Label13.AutoSize = True
Me.Label13.Location = New System.Drawing.Point(7, 54)
Me.Label13.Name = "Label13"
Me.Label13.Size = New System.Drawing.Size(101, 15)
Me.Label13.TabIndex = 104
Me.Label13.Text = "Alternative server:"
'
'Label14
'
Me.Label14.AutoSize = True
Me.Label14.Location = New System.Drawing.Point(382, 25)
Me.Label14.Name = "Label14"
Me.Label14.Size = New System.Drawing.Size(32, 15)
Me.Label14.TabIndex = 105
Me.Label14.Text = "Port:"
'
'Label12
'
Me.Label12.AutoSize = True
Me.Label12.Location = New System.Drawing.Point(7, 25)
Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(85, 15)
Me.Label12.TabIndex = 106
Me.Label12.Text = "Server address:"
'
'ServerPort
'
Me.ServerPort.Location = New System.Drawing.Point(420, 22)
Me.ServerPort.Name = "ServerPort"
Me.ServerPort.Size = New System.Drawing.Size(53, 23)
Me.ServerPort.TabIndex = 1
Me.ServerPort.Text = "3389"
'
'AltServerAddress
'
Me.AltServerAddress.Location = New System.Drawing.Point(121, 51)
Me.AltServerAddress.Name = "AltServerAddress"
Me.AltServerAddress.Size = New System.Drawing.Size(352, 23)
Me.AltServerAddress.TabIndex = 2
'
'ServerAddress
'
Me.ServerAddress.Location = New System.Drawing.Point(121, 22)
Me.ServerAddress.Name = "ServerAddress"
Me.ServerAddress.Size = New System.Drawing.Size(255, 23)
Me.ServerAddress.TabIndex = 0
'
'RDGWGroupBox
'
Me.RDGWGroupBox.Controls.Add(Me.AttemptDirectCheckBox)
Me.RDGWGroupBox.Controls.Add(Me.UseRDGatewayCheckBox)
Me.RDGWGroupBox.Controls.Add(Me.RDGWLabel)
Me.RDGWGroupBox.Controls.Add(Me.GatewayAddress)
Me.RDGWGroupBox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.RDGWGroupBox.Location = New System.Drawing.Point(12, 185)
Me.RDGWGroupBox.Name = "RDGWGroupBox"
Me.RDGWGroupBox.Size = New System.Drawing.Size(484, 103)
Me.RDGWGroupBox.TabIndex = 2
Me.RDGWGroupBox.TabStop = False
Me.RDGWGroupBox.Text = "Remote Desktop Gateway"
'
'AttemptDirectCheckBox
'
Me.AttemptDirectCheckBox.AutoSize = True
Me.AttemptDirectCheckBox.Enabled = False
Me.AttemptDirectCheckBox.Location = New System.Drawing.Point(10, 76)
Me.AttemptDirectCheckBox.Name = "AttemptDirectCheckBox"
Me.AttemptDirectCheckBox.Size = New System.Drawing.Size(326, 19)
Me.AttemptDirectCheckBox.TabIndex = 2
Me.AttemptDirectCheckBox.Text = "Only use RD Gateway if direct connection is unsuccessful"
Me.AttemptDirectCheckBox.UseVisualStyleBackColor = True
'
'UseRDGatewayCheckBox
'
Me.UseRDGatewayCheckBox.AutoSize = True
Me.UseRDGatewayCheckBox.Location = New System.Drawing.Point(10, 22)
Me.UseRDGatewayCheckBox.Name = "UseRDGatewayCheckBox"
Me.UseRDGatewayCheckBox.Size = New System.Drawing.Size(111, 19)
Me.UseRDGatewayCheckBox.TabIndex = 0
Me.UseRDGatewayCheckBox.Text = "Use RD Gateway"
Me.UseRDGatewayCheckBox.UseVisualStyleBackColor = True
'
'RDGWLabel
'
Me.RDGWLabel.AutoSize = True
Me.RDGWLabel.Enabled = False
Me.RDGWLabel.Location = New System.Drawing.Point(7, 50)
Me.RDGWLabel.Name = "RDGWLabel"
Me.RDGWLabel.Size = New System.Drawing.Size(116, 15)
Me.RDGWLabel.TabIndex = 110
Me.RDGWLabel.Text = "RD Gateway address:"
'
'GatewayAddress
'
Me.GatewayAddress.Enabled = False
Me.GatewayAddress.Location = New System.Drawing.Point(145, 47)
Me.GatewayAddress.Name = "GatewayAddress"
Me.GatewayAddress.Size = New System.Drawing.Size(328, 23)
Me.GatewayAddress.TabIndex = 1
'
'ClientConnectionGroupBox
'
Me.ClientConnectionGroupBox.Controls.Add(Me.MSIRadioButton)
Me.ClientConnectionGroupBox.Controls.Add(Me.RDPRadioButton)
Me.ClientConnectionGroupBox.Controls.Add(Me.CreateRAWebIcon)
Me.ClientConnectionGroupBox.Controls.Add(Me.EditAfterSave)
Me.ClientConnectionGroupBox.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.ClientConnectionGroupBox.Location = New System.Drawing.Point(12, 12)
Me.ClientConnectionGroupBox.Name = "ClientConnectionGroupBox"
Me.ClientConnectionGroupBox.Size = New System.Drawing.Size(484, 74)
Me.ClientConnectionGroupBox.TabIndex = 0
Me.ClientConnectionGroupBox.TabStop = False
Me.ClientConnectionGroupBox.Text = "Client Connection"
'
'MSIRadioButton
'
Me.MSIRadioButton.AutoSize = True
Me.MSIRadioButton.Location = New System.Drawing.Point(10, 47)
Me.MSIRadioButton.Name = "MSIRadioButton"
Me.MSIRadioButton.Size = New System.Drawing.Size(89, 19)
Me.MSIRadioButton.TabIndex = 1
Me.MSIRadioButton.TabStop = True
Me.MSIRadioButton.Text = "MSI installer"
Me.MSIRadioButton.UseVisualStyleBackColor = True
'
'RDPRadioButton
'
Me.RDPRadioButton.AutoSize = True
Me.RDPRadioButton.Checked = True
Me.RDPRadioButton.Location = New System.Drawing.Point(10, 22)
Me.RDPRadioButton.Name = "RDPRadioButton"
Me.RDPRadioButton.Size = New System.Drawing.Size(66, 19)
Me.RDPRadioButton.TabIndex = 0
Me.RDPRadioButton.TabStop = True
Me.RDPRadioButton.Text = "RDP file"
Me.RDPRadioButton.UseVisualStyleBackColor = True
'
'CreateRAWebIcon
'
Me.CreateRAWebIcon.ImageIndex = 5
Me.CreateRAWebIcon.ImageList = Me.SmallerIcons
Me.CreateRAWebIcon.Location = New System.Drawing.Point(313, 36)
Me.CreateRAWebIcon.Name = "CreateRAWebIcon"
Me.CreateRAWebIcon.Size = New System.Drawing.Size(126, 30)
Me.CreateRAWebIcon.TabIndex = 3
Me.CreateRAWebIcon.Text = "Create icon files"
Me.CreateRAWebIcon.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
Me.CreateRAWebIcon.UseVisualStyleBackColor = True
'
'FTAButton
'
Me.FTAButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.FTAButton.ImageIndex = 2
Me.FTAButton.ImageList = Me.SmallerIcons
Me.FTAButton.Location = New System.Drawing.Point(301, 22)
Me.FTAButton.Name = "FTAButton"
Me.FTAButton.Size = New System.Drawing.Size(172, 29)
Me.FTAButton.TabIndex = 1
Me.FTAButton.Text = "File type associations..."
Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.FTAButton.UseVisualStyleBackColor = False
'
'FileBrowserIcon
'
Me.FileBrowserIcon.Filter = "Icons|*.exe;*.dll;*.ico|All files|*.*"
Me.FileBrowserIcon.Title = "Browse..."
'
'FileSaveMSI
'
Me.FileSaveMSI.DefaultExt = "msi"
Me.FileSaveMSI.Filter = "MSI files|*.msi"
'
'ShortcutDesktopCheckBox
'
Me.ShortcutDesktopCheckBox.AutoSize = True
Me.ShortcutDesktopCheckBox.Checked = True
Me.ShortcutDesktopCheckBox.CheckState = System.Windows.Forms.CheckState.Checked
Me.ShortcutDesktopCheckBox.Location = New System.Drawing.Point(116, 18)
Me.ShortcutDesktopCheckBox.Name = "ShortcutDesktopCheckBox"
Me.ShortcutDesktopCheckBox.Size = New System.Drawing.Size(69, 19)
Me.ShortcutDesktopCheckBox.TabIndex = 1
Me.ShortcutDesktopCheckBox.Text = "Desktop"
Me.ShortcutDesktopCheckBox.UseVisualStyleBackColor = True
'
'MSIGroupBox
'
Me.MSIGroupBox.Controls.Add(Me.Panel1)
Me.MSIGroupBox.Controls.Add(Me.TopLevelRadioButton)
Me.MSIGroupBox.Controls.Add(Me.SubfolderRadioButton)
Me.MSIGroupBox.Controls.Add(Me.ShortcutStartCheckBox)
Me.MSIGroupBox.Controls.Add(Me.Label3)
Me.MSIGroupBox.Controls.Add(Me.Label2)
Me.MSIGroupBox.Controls.Add(Me.ShortcutTagCheckBox)
Me.MSIGroupBox.Controls.Add(Me.ShortcutDesktopCheckBox)
Me.MSIGroupBox.Controls.Add(Me.ShortcutTagTextBox)
Me.MSIGroupBox.Controls.Add(Me.Label4)
Me.MSIGroupBox.Controls.Add(Me.Label1)
Me.MSIGroupBox.Enabled = False
Me.MSIGroupBox.Location = New System.Drawing.Point(10, 363)
Me.MSIGroupBox.Name = "MSIGroupBox"
Me.MSIGroupBox.Size = New System.Drawing.Size(484, 107)
Me.MSIGroupBox.TabIndex = 4
Me.MSIGroupBox.TabStop = False
Me.MSIGroupBox.Text = "MSI Options"
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.Transparent
Me.Panel1.Controls.Add(Me.PerMachineRadioButton)
Me.Panel1.Controls.Add(Me.PerUserRadioButton)
Me.Panel1.Location = New System.Drawing.Point(89, 76)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(200, 26)
Me.Panel1.TabIndex = 112
'
'PerMachineRadioButton
'
Me.PerMachineRadioButton.AutoSize = True
Me.PerMachineRadioButton.Checked = True
Me.PerMachineRadioButton.Location = New System.Drawing.Point(3, 3)
Me.PerMachineRadioButton.Name = "PerMachineRadioButton"
Me.PerMachineRadioButton.Size = New System.Drawing.Size(93, 19)
Me.PerMachineRadioButton.TabIndex = 0
Me.PerMachineRadioButton.TabStop = True
Me.PerMachineRadioButton.Text = "Per-machine"
Me.PerMachineRadioButton.UseVisualStyleBackColor = True
'
'PerUserRadioButton
'
Me.PerUserRadioButton.AutoSize = True
Me.PerUserRadioButton.Location = New System.Drawing.Point(100, 3)
Me.PerUserRadioButton.Name = "PerUserRadioButton"
Me.PerUserRadioButton.Size = New System.Drawing.Size(69, 19)
Me.PerUserRadioButton.TabIndex = 1
Me.PerUserRadioButton.TabStop = True
Me.PerUserRadioButton.Text = "Per-user"
Me.PerUserRadioButton.UseVisualStyleBackColor = True
'
'TopLevelRadioButton
'
Me.TopLevelRadioButton.AutoSize = True
Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17)
Me.TopLevelRadioButton.Name = "TopLevelRadioButton"
Me.TopLevelRadioButton.Size = New System.Drawing.Size(72, 19)
Me.TopLevelRadioButton.TabIndex = 4
Me.TopLevelRadioButton.Text = "Top level"
Me.TopLevelRadioButton.UseVisualStyleBackColor = True
'
'SubfolderRadioButton
'
Me.SubfolderRadioButton.AutoSize = True
Me.SubfolderRadioButton.Checked = True
Me.SubfolderRadioButton.Location = New System.Drawing.Point(284, 17)
Me.SubfolderRadioButton.Name = "SubfolderRadioButton"
Me.SubfolderRadioButton.Size = New System.Drawing.Size(76, 19)
Me.SubfolderRadioButton.TabIndex = 3
Me.SubfolderRadioButton.TabStop = True
Me.SubfolderRadioButton.Text = "Subfolder"
Me.SubfolderRadioButton.UseVisualStyleBackColor = True
'
'ShortcutStartCheckBox
'
Me.ShortcutStartCheckBox.AutoSize = True
Me.ShortcutStartCheckBox.Checked = True
Me.ShortcutStartCheckBox.CheckState = System.Windows.Forms.CheckState.Checked
Me.ShortcutStartCheckBox.Location = New System.Drawing.Point(191, 18)
Me.ShortcutStartCheckBox.Name = "ShortcutStartCheckBox"
Me.ShortcutStartCheckBox.Size = New System.Drawing.Size(87, 19)
Me.ShortcutStartCheckBox.TabIndex = 2
Me.ShortcutStartCheckBox.Text = "Start Menu:"
Me.ShortcutStartCheckBox.UseVisualStyleBackColor = True
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(289, 50)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(11, 15)
Me.Label3.TabIndex = 7
Me.Label3.Text = ")"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(110, 49)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(11, 15)
Me.Label2.TabIndex = 4
Me.Label2.Text = "("
'
'ShortcutTagCheckBox
'
Me.ShortcutTagCheckBox.AutoSize = True
Me.ShortcutTagCheckBox.Checked = True
Me.ShortcutTagCheckBox.CheckState = System.Windows.Forms.CheckState.Checked
Me.ShortcutTagCheckBox.Location = New System.Drawing.Point(10, 48)
Me.ShortcutTagCheckBox.Name = "ShortcutTagCheckBox"
Me.ShortcutTagCheckBox.Size = New System.Drawing.Size(94, 19)
Me.ShortcutTagCheckBox.TabIndex = 5
Me.ShortcutTagCheckBox.Text = "Shortcut tag:"
Me.ShortcutTagCheckBox.UseVisualStyleBackColor = True
'
'ShortcutTagTextBox
'
Me.ShortcutTagTextBox.Location = New System.Drawing.Point(127, 46)
Me.ShortcutTagTextBox.Name = "ShortcutTagTextBox"
Me.ShortcutTagTextBox.Size = New System.Drawing.Size(156, 23)
Me.ShortcutTagTextBox.TabIndex = 6
Me.ShortcutTagTextBox.Text = "remote"
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(8, 80)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(75, 15)
Me.Label4.TabIndex = 8
Me.Label4.Text = "Install scope:"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(7, 19)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(103, 15)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Place shortcuts in:"
'
'ResetButton
'
Me.ResetButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.ResetButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.ResetButton.ImageIndex = 3
Me.ResetButton.ImageList = Me.SmallerIcons
Me.ResetButton.Location = New System.Drawing.Point(126, 482)
Me.ResetButton.Name = "ResetButton"
Me.ResetButton.Size = New System.Drawing.Size(121, 29)
Me.ResetButton.TabIndex = 6
Me.ResetButton.Text = "Reset to default"
Me.ResetButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.ResetButton.UseVisualStyleBackColor = False
'
'SaveButton
'
Me.SaveButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.SaveButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.SaveButton.ImageIndex = 0
Me.SaveButton.ImageList = Me.SmallerIcons
Me.SaveButton.Location = New System.Drawing.Point(12, 482)
Me.SaveButton.Name = "SaveButton"
Me.SaveButton.Size = New System.Drawing.Size(108, 29)
Me.SaveButton.TabIndex = 5
Me.SaveButton.Text = "Save settings"
Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SaveButton.UseVisualStyleBackColor = False
'
'FileTypesGroupBox
'
Me.FileTypesGroupBox.Controls.Add(Me.FTACountLabel)
Me.FileTypesGroupBox.Controls.Add(Me.DisabledFTACheckBox)
Me.FileTypesGroupBox.Controls.Add(Me.FTAButton)
Me.FileTypesGroupBox.Location = New System.Drawing.Point(12, 294)
Me.FileTypesGroupBox.Name = "FileTypesGroupBox"
Me.FileTypesGroupBox.Size = New System.Drawing.Size(482, 63)
Me.FileTypesGroupBox.TabIndex = 3
Me.FileTypesGroupBox.TabStop = False
Me.FileTypesGroupBox.Text = "File Type Associations"
'
'FTACountLabel
'
Me.FTACountLabel.AutoSize = True
Me.FTACountLabel.Location = New System.Drawing.Point(154, 29)
Me.FTACountLabel.Name = "FTACountLabel"
Me.FTACountLabel.Size = New System.Drawing.Size(52, 15)
Me.FTACountLabel.TabIndex = 2
Me.FTACountLabel.Text = "Count: 0"
'
'DisabledFTACheckBox
'
Me.DisabledFTACheckBox.AutoSize = True
Me.DisabledFTACheckBox.Location = New System.Drawing.Point(10, 28)
Me.DisabledFTACheckBox.Name = "DisabledFTACheckBox"
Me.DisabledFTACheckBox.Size = New System.Drawing.Size(71, 19)
Me.DisabledFTACheckBox.TabIndex = 0
Me.DisabledFTACheckBox.Text = "Disabled"
Me.DisabledFTACheckBox.UseVisualStyleBackColor = True
'
'RemoteAppCreateClientConnection
'
Me.AcceptButton = Me.CreateButton
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton
Me.ClientSize = New System.Drawing.Size(507, 523)
Me.Controls.Add(Me.FileTypesGroupBox)
Me.Controls.Add(Me.MSIGroupBox)
Me.Controls.Add(Me.ClientConnectionGroupBox)
Me.Controls.Add(Me.RDGWGroupBox)
Me.Controls.Add(Me.ServerGroupBox)
Me.Controls.Add(Me.CreateButton)
Me.Controls.Add(Me.SaveButton)
Me.Controls.Add(Me.ResetButton)
Me.Controls.Add(Me.CancelEditButton)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "RemoteAppCreateClientConnection"
Me.Text = "RemoteAppCreateClientConnection"
Me.ServerGroupBox.ResumeLayout(False)
Me.ServerGroupBox.PerformLayout()
Me.RDGWGroupBox.ResumeLayout(False)
Me.RDGWGroupBox.PerformLayout()
Me.ClientConnectionGroupBox.ResumeLayout(False)
Me.ClientConnectionGroupBox.PerformLayout()
Me.MSIGroupBox.ResumeLayout(False)
Me.MSIGroupBox.PerformLayout()
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
Me.FileTypesGroupBox.ResumeLayout(False)
Me.FileTypesGroupBox.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents EditAfterSave As System.Windows.Forms.CheckBox
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents CreateButton As System.Windows.Forms.Button
Friend WithEvents FileSaveRDP As System.Windows.Forms.SaveFileDialog
Friend WithEvents CancelEditButton As System.Windows.Forms.Button
Friend WithEvents ServerGroupBox As System.Windows.Forms.GroupBox
Friend WithEvents Label13 As System.Windows.Forms.Label
Friend WithEvents Label14 As System.Windows.Forms.Label
Friend WithEvents Label12 As System.Windows.Forms.Label
Friend WithEvents ServerPort As System.Windows.Forms.TextBox
Friend WithEvents AltServerAddress As System.Windows.Forms.TextBox
Friend WithEvents ServerAddress As System.Windows.Forms.TextBox
Friend WithEvents RDGWGroupBox As System.Windows.Forms.GroupBox
Friend WithEvents UseRDGatewayCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents RDGWLabel As System.Windows.Forms.Label
Friend WithEvents GatewayAddress As System.Windows.Forms.TextBox
Friend WithEvents ClientConnectionGroupBox As System.Windows.Forms.GroupBox
Friend WithEvents MSIRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents RDPRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents FTAButton As System.Windows.Forms.Button
Friend WithEvents FileBrowserIcon As System.Windows.Forms.OpenFileDialog
Friend WithEvents FileSaveMSI As System.Windows.Forms.SaveFileDialog
Friend WithEvents AttemptDirectCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents ShortcutDesktopCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents MSIGroupBox As System.Windows.Forms.GroupBox
Friend WithEvents ShortcutStartCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents ShortcutTagCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents ShortcutTagTextBox As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents TopLevelRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents SubfolderRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents ResetButton As System.Windows.Forms.Button
Friend WithEvents SaveButton As System.Windows.Forms.Button
Friend WithEvents CreateRAWebIcon As System.Windows.Forms.CheckBox
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Friend WithEvents PerMachineRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents PerUserRadioButton As System.Windows.Forms.RadioButton
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents FileTypesGroupBox As System.Windows.Forms.GroupBox
Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox
Friend WithEvents FTACountLabel As System.Windows.Forms.Label
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,357 @@
Imports VB = Microsoft.VisualBasic
Public Class RemoteAppCreateClientConnection
Private RemoteApp As New RemoteAppLib.RemoteApp
Public Sub CreateClientConnection(SelectedRemoteApp As RemoteAppLib.RemoteApp)
RemoteApp = SelectedRemoteApp
Dim RemoteAppShortName = RemoteApp.Name
Me.Text = "Create Client Connection for " & RemoteAppShortName
SetCCWindowSettings()
If Me.ServerAddress.Text = "" Then Me.ServerAddress.Text = System.Net.Dns.GetHostName
If Me.AltServerAddress.Text = "" Then Me.AltServerAddress.Text = Me.ServerAddress.Text
If Me.ServerPort.Text = "0" Then Me.ServerPort.Text = "3389"
If Not My.Computer.FileSystem.FileExists(RemoteApp.IconPath) Then
CreateRAWebIcon.Checked = False
CreateRAWebIcon.Enabled = False
Else
CreateRAWebIcon.Enabled = RDPRadioButton.Checked
End If
Dim wx As New RDP2MSIlib.RDP
If Not wx.WixInstalled Then
RDPRadioButton.Checked = True
MSIRadioButton.Enabled = False
MSIRadioButton.Text = "MSI installer (requires WiX Toolset)"
End If
If Not RemoteApp.FileTypeAssociations Is Nothing Then _
FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count
Me.RDPRadioButton.Focus()
HelpSystem.SetupTips(Me)
Me.ShowDialog()
RemoteAppMainWindow.ReloadApps()
Me.Dispose()
End Sub
Sub ResetCCWindowSettings()
My.Settings.SavedConnectionModeMSI = False
My.Settings.SavedOpenWithNotepad = False
My.Settings.SavedServerAddress = System.Net.Dns.GetHostName
My.Settings.SavedServerPort = 3389
My.Settings.SavedAltServerAddress = My.Settings.SavedServerAddress
My.Settings.SavedUseRDGateway = False
My.Settings.SavedRDGatewayAddress = ""
My.Settings.SavedAttemptDirectRDGateway = False
My.Settings.SavedMSIShortcutDesktop = True
My.Settings.SavedMSIShortcutStart = True
My.Settings.SavedMSIShortcutStartTopLevel = False
My.Settings.SavedUseShortcutTag = True
My.Settings.SavedShortcutTag = "remote"
My.Settings.SavedClientConnectionOptions = False
My.Settings.SavedCreateRAWebIcon = False
My.Settings.SavedMSIPerUser = False
My.Settings.SavedDisableFTA = False
End Sub
Sub SaveCCWindowSettings()
My.Settings.SavedConnectionModeMSI = MSIRadioButton.Checked
My.Settings.SavedOpenWithNotepad = EditAfterSave.Checked
My.Settings.SavedServerAddress = ServerAddress.Text
My.Settings.SavedServerPort = Val(ServerPort.Text)
My.Settings.SavedAltServerAddress = AltServerAddress.Text
My.Settings.SavedUseRDGateway = UseRDGatewayCheckBox.Checked
My.Settings.SavedRDGatewayAddress = GatewayAddress.Text
My.Settings.SavedAttemptDirectRDGateway = AttemptDirectCheckBox.Checked
My.Settings.SavedMSIShortcutDesktop = ShortcutDesktopCheckBox.Checked
My.Settings.SavedMSIShortcutStart = ShortcutStartCheckBox.Checked
My.Settings.SavedMSIShortcutStartTopLevel = TopLevelRadioButton.Checked
My.Settings.SavedUseShortcutTag = ShortcutTagCheckBox.Checked
My.Settings.SavedShortcutTag = ShortcutTagTextBox.Text
My.Settings.SavedCreateRAWebIcon = CreateRAWebIcon.Checked
My.Settings.SavedMSIPerUser = PerUserRadioButton.Checked
My.Settings.SavedDisableFTA = DisabledFTACheckBox.Checked
End Sub
Sub SetCCWindowSettings()
If My.Settings.SavedConnectionModeMSI = True Then
RDPRadioButton.Checked = False
MSIRadioButton.Checked = True
Else
RDPRadioButton.Checked = True
MSIRadioButton.Checked = False
End If
EditAfterSave.Checked = My.Settings.SavedOpenWithNotepad
ServerAddress.Text = My.Settings.SavedServerAddress
ServerPort.Text = My.Settings.SavedServerPort
AltServerAddress.Text = My.Settings.SavedAltServerAddress
UseRDGatewayCheckBox.Checked = My.Settings.SavedUseRDGateway
GatewayAddress.Text = My.Settings.SavedRDGatewayAddress
AttemptDirectCheckBox.Checked = My.Settings.SavedAttemptDirectRDGateway
ShortcutDesktopCheckBox.Checked = My.Settings.SavedMSIShortcutDesktop
ShortcutStartCheckBox.Checked = My.Settings.SavedMSIShortcutStart
If My.Settings.SavedMSIShortcutStartTopLevel = True Then
SubfolderRadioButton.Checked = False
TopLevelRadioButton.Checked = True
Else
SubfolderRadioButton.Checked = True
TopLevelRadioButton.Checked = False
End If
ShortcutTagCheckBox.Checked = My.Settings.SavedUseShortcutTag
ShortcutTagTextBox.Text = My.Settings.SavedShortcutTag
MSIGroupBox.Enabled = MSIRadioButton.Checked
CreateRAWebIcon.Checked = My.Settings.SavedCreateRAWebIcon
DisabledFTACheckBox.Checked = My.Settings.SavedDisableFTA
If My.Settings.SavedMSIPerUser = False Then
PerMachineRadioButton.Checked = True
PerUserRadioButton.Checked = False
Else
PerMachineRadioButton.Checked = False
PerUserRadioButton.Checked = True
End If
End Sub
Private Sub UseRDGatewayCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles UseRDGatewayCheckBox.CheckedChanged
If UseRDGatewayCheckBox.Checked Then
Me.GatewayAddress.Enabled = True
Me.RDGWLabel.Enabled = True
Me.AttemptDirectCheckBox.Enabled = True
Else
Me.GatewayAddress.Enabled = False
Me.RDGWLabel.Enabled = False
Me.AttemptDirectCheckBox.Enabled = False
End If
End Sub
Private Sub RDPRadioButton_CheckedChanged(sender As Object, e As EventArgs) Handles RDPRadioButton.CheckedChanged
MSIGroupBox.Enabled = MSIRadioButton.Checked
EditAfterSave.Enabled = RDPRadioButton.Checked
CreateRAWebIcon.Enabled = RDPRadioButton.Checked
If RDPRadioButton.Checked Then
CreateButton.ImageIndex = 6
Else
CreateButton.ImageIndex = 1
End If
End Sub
Private Sub CreateButton_Click(sender As Object, e As EventArgs) Handles CreateButton.Click
Dim RDPPath = ""
Dim MSIPath = ""
Dim TempMSIPath = ""
If DisabledFTACheckBox.Checked And Not RemoteApp.FileTypeAssociations Is Nothing Then RemoteApp.FileTypeAssociations.Clear()
If RDPRadioButton.Checked Then
FileSaveRDP.FileName = RemoteApp.Name
If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub
RDPPath = FileSaveRDP.FileName
Else
FileSaveMSI.FileName = RemoteApp.Name
If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub
MSIPath = FileSaveMSI.FileName
RDPPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".rdp"
TempMSIPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".msi"
End If
Dim gwaddress As String = ""
Dim trydirect As Boolean = False
If UseRDGatewayCheckBox.Checked Then
gwaddress = GatewayAddress.Text
trydirect = AttemptDirectCheckBox.Checked
End If
If RDPRadioButton.Checked Then
CreateRDPFile(RDPPath, RemoteApp)
'!!!!!!! If it's an RDP file
If EditAfterSave.Checked Then
Dim CmdLine = GetSysDir() & "\notepad.exe"
System.Diagnostics.Process.Start(CmdLine, FileSaveRDP.FileName)
End If
If CreateRAWebIcon.Checked Then
Dim IconFilePath = Microsoft.VisualBasic.Left(RDPPath, RDPPath.Length - 4) & ".ico"
If ExtractToIco(RemoteApp.IconPath, RemoteApp.IconIndex, IconFilePath) = False Then
MessageBox.Show("Icon could not be created the RemoteApp. RDP file will still be created.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
For Each FTA As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
Dim ProductFileName = VB.Left(RDPPath, RDPPath.Length - 4)
ExtractFTIcon(ProductFileName, FTA)
Next
End If
Else
'!!!!!!! If it's an MSI
Dim RDP As New RDP2MSIlib.RDP
CreateRDPFile(RDPPath, RemoteApp)
RDP.rdpPath = RDPPath
RDP.ShortcutOnDesktop = ShortcutDesktopCheckBox.Checked
RDP.ShortcutInStart = ShortcutStartCheckBox.Checked
RDP.ShortcutSubfolderInStart = SubfolderRadioButton.Checked
RDP.ProductRemoteTag = ShortcutTagTextBox.Text
RDP.PerUser = PerUserRadioButton.Checked
Dim FilesToDelete As New ArrayList
Dim ProductFileName = VB.Left(RDPPath, RDPPath.Length - 4)
Dim IconFilePath = ProductFileName & ".ico"
FilesToDelete.Add(RDPPath)
If ExtractToIco(RemoteApp.IconPath, RemoteApp.IconIndex, IconFilePath) = False Then
MessageBox.Show("There was an error loading icon:" & vbCrLf & RemoteApp.IconPath & "," & RemoteApp.IconIndex & vbCrLf & "The MSI will still be created but the main icon will be missing.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
FilesToDelete.Add(IconFilePath)
End If
If Not RemoteApp.FileTypeAssociations Is Nothing Then
For Each FTA As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
ExtractFTIcon(ProductFileName, FTA)
FilesToDelete.Add(ProductFileName & "." & FTA.Extension & ".ico")
Next
RDP.FlatFileTypes = RemoteApp.FileTypeAssociations.GetFlatFileTypes
End If
RDP.CreateMSI(MSIPath)
DeleteFiles(FilesToDelete)
End If
Me.Close()
End Sub
Private Sub ExtractFTIcon(ProductFileName As String, FTA As RemoteAppLib.FileTypeAssociation)
'Extract icon for filetype
If ExtractToIco(FTA.IconPath, FTA.IconIndex, ProductFileName & "." & FTA.Extension & ".ico") = False Then
'If filetype icon fails to extract, then grab the default document icon from Shell32.dll
ExtractToIco(GetSysDir() & "\shell32.dll", 0, ProductFileName & "." & FTA.Extension & ".ico")
'Possibly show an error here??
End If
End Sub
Private Sub CreateRDPFile(RDPPath As String, RemoteApp As RemoteAppLib.RemoteApp)
Dim App As New RemoteAppLib.RemoteApp
App = RemoteApp
Dim FileTypeAssociations As RemoteAppLib.FileTypeAssociationCollection
FileTypeAssociations = App.FileTypeAssociations
Dim ServerAddress = Me.ServerAddress.Text
Dim AltServerAddress = Me.AltServerAddress.Text
Dim ServerPort = Me.ServerPort.Text
Dim FlatFileTypes = ""
If Not FileTypeAssociations Is Nothing Then FlatFileTypes = FileTypeAssociations.GetFlatFileTypes
Dim RDPfile As New RDPFileLib.RDPFile
RDPfile.full_address = ServerAddress
RDPfile.alternate_full_address = AltServerAddress
RDPfile.server_port = Val(ServerPort)
RDPfile.remoteapplicationname = App.FullName
RDPfile.remoteapplicationprogram = "||" & App.Name
RDPfile.remoteapplicationmode = 1
RDPfile.disableremoteappcapscheck = 1
RDPfile.alternate_shell = "rdpinit.exe"
If UseRDGatewayCheckBox.Checked Then
RDPfile.gatewayhostname = Me.GatewayAddress.Text
If Me.AttemptDirectCheckBox.CheckAlign Then RDPfile.gatewayusagemethod = 2 Else RDPfile.gatewayusagemethod = 1
RDPfile.gatewayprofileusagemethod = 1
End If
RDPfile.prompt_for_credentials_on_client = 1
RDPfile.promptcredentialonce = 0
RDPfile.devicestoredirect = "*"
RDPfile.drivestoredirect = "*"
RDPfile.redirectcomports = 1
RDPfile.redirectdrives = 1
RDPfile.allow_desktop_composition = 1
RDPfile.allow_font_smoothing = 1
RDPfile.span_monitors = 1
RDPfile.use_multimon = 1
RDPfile.remoteapplicationfileextensions = FlatFileTypes
RDPfile.SaveRDPfile(RDPPath)
End Sub
Private Function GetFlatFileTypesList(AppName As String, Optional Delim As String = ",") As String
Dim BaseKeyName As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications\" & AppName & "\Filetypes"
Dim FlatFTList = ""
Try
Dim BaseKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey(BaseKeyName)
For Each FT As String In BaseKey.GetSubKeyNames
FlatFTList &= "." & FT & Delim
Next
FlatFTList = FlatFTList.TrimEnd(Delim)
Catch Ex As Exception
End Try
Return FlatFTList
End Function
Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click
MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf & _
"To make permanent changes to the File Type Associations for this RemoteApp, edit the RemoteApp.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
RemoteApp = RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp)
If Not RemoteApp.FileTypeAssociations Is Nothing Then _
FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count
End Sub
Private Sub ShortcutStartCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles ShortcutStartCheckBox.CheckedChanged
SubfolderRadioButton.Enabled = ShortcutStartCheckBox.Checked
TopLevelRadioButton.Enabled = ShortcutStartCheckBox.Checked
End Sub
Private Sub ShortcutTagCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles ShortcutTagCheckBox.CheckedChanged
ShortcutTagTextBox.Enabled = ShortcutTagCheckBox.Checked
End Sub
Private Sub ServerAddress_TextChanged(sender As Object, e As EventArgs) Handles ServerAddress.TextChanged
ValidateDNSname(ServerAddress)
End Sub
Private Sub AltServerAddress_TextChanged(sender As Object, e As EventArgs) Handles AltServerAddress.TextChanged
ValidateDNSname(AltServerAddress)
End Sub
Private Sub ServerPort_TextChanged(sender As Object, e As EventArgs) Handles ServerPort.TextChanged
ValidatePort(ServerPort)
End Sub
Private Sub ResetButton_Click(sender As Object, e As EventArgs) Handles ResetButton.Click
ResetCCWindowSettings()
SetCCWindowSettings()
End Sub
Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
SaveCCWindowSettings()
End Sub
Private Sub DisabledFTACheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles DisabledFTACheckBox.CheckedChanged
If Me.DisabledFTACheckBox.Checked Then
Me.FTAButton.Enabled = False
Me.FTACountLabel.Enabled = False
Else
Me.FTAButton.Enabled = True
Me.FTACountLabel.Enabled = True
End If
End Sub
End Class

View File

@@ -0,0 +1,452 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppEditWindow
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppEditWindow))
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.IconPathCopyButton = New System.Windows.Forms.Button()
Me.VPathCopyButton = New System.Windows.Forms.Button()
Me.TSWAbox = New System.Windows.Forms.ComboBox()
Me.CommandLineOptionCombo = New System.Windows.Forms.ComboBox()
Me.IconPathText = New System.Windows.Forms.TextBox()
Me.CommandLineText = New System.Windows.Forms.TextBox()
Me.Label11 = New System.Windows.Forms.Label()
Me.Label10 = New System.Windows.Forms.Label()
Me.Label8 = New System.Windows.Forms.Label()
Me.VPathText = New System.Windows.Forms.TextBox()
Me.Label7 = New System.Windows.Forms.Label()
Me.PathText = New System.Windows.Forms.TextBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.FullNameText = New System.Windows.Forms.TextBox()
Me.Label5 = New System.Windows.Forms.Label()
Me.IconIndexText = New System.Windows.Forms.TextBox()
Me.ShortNameText = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label12 = New System.Windows.Forms.Label()
Me.CancelEditButton = New System.Windows.Forms.Button()
Me.FileBrowserPath = New System.Windows.Forms.OpenFileDialog()
Me.FileBrowserIcon = New System.Windows.Forms.OpenFileDialog()
Me.FileBrowserVPath = New System.Windows.Forms.OpenFileDialog()
Me.SaveButton = New System.Windows.Forms.Button()
Me.BrowseIconPath = New System.Windows.Forms.Button()
Me.BrowseVPath = New System.Windows.Forms.Button()
Me.BrowsePath = New System.Windows.Forms.Button()
Me.FTAButton = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "favorites_16x16.png")
Me.SmallerIcons.Images.SetKeyName(1, "folder_16x16.png")
Me.SmallerIcons.Images.SetKeyName(2, "dotdotdot.ico")
Me.SmallerIcons.Images.SetKeyName(3, "inside_icons_azure_marker_map_socialize_base.ico")
Me.SmallerIcons.Images.SetKeyName(4, "pictures (1).ico")
Me.SmallerIcons.Images.SetKeyName(5, "pictures.ico")
Me.SmallerIcons.Images.SetKeyName(6, "arrows_line_connector_with_draw.png")
Me.SmallerIcons.Images.SetKeyName(7, "doc_file_document_manager_paper_phone.ico")
Me.SmallerIcons.Images.SetKeyName(8, "cross.ico")
'
'IconPathCopyButton
'
Me.IconPathCopyButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconPathCopyButton.AutoSize = True
Me.IconPathCopyButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.IconPathCopyButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.IconPathCopyButton.ImageIndex = 6
Me.IconPathCopyButton.ImageList = Me.SmallerIcons
Me.IconPathCopyButton.Location = New System.Drawing.Point(382, 97)
Me.IconPathCopyButton.Name = "IconPathCopyButton"
Me.IconPathCopyButton.Size = New System.Drawing.Size(61, 27)
Me.IconPathCopyButton.TabIndex = 15
Me.IconPathCopyButton.Text = "Copy"
Me.IconPathCopyButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.IconPathCopyButton.UseVisualStyleBackColor = False
'
'VPathCopyButton
'
Me.VPathCopyButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.VPathCopyButton.AutoSize = True
Me.VPathCopyButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.VPathCopyButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.VPathCopyButton.ImageIndex = 6
Me.VPathCopyButton.ImageList = Me.SmallerIcons
Me.VPathCopyButton.Location = New System.Drawing.Point(382, 67)
Me.VPathCopyButton.Name = "VPathCopyButton"
Me.VPathCopyButton.Size = New System.Drawing.Size(61, 27)
Me.VPathCopyButton.TabIndex = 9
Me.VPathCopyButton.Text = "Copy"
Me.VPathCopyButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.VPathCopyButton.UseVisualStyleBackColor = False
'
'TSWAbox
'
Me.TSWAbox.BackColor = System.Drawing.Color.WhiteSmoke
Me.TSWAbox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.TSWAbox.FormattingEnabled = True
Me.TSWAbox.Items.AddRange(New Object() {"No", "Yes"})
Me.TSWAbox.Location = New System.Drawing.Point(321, 157)
Me.TSWAbox.Name = "TSWAbox"
Me.TSWAbox.Size = New System.Drawing.Size(81, 23)
Me.TSWAbox.TabIndex = 22
'
'CommandLineOptionCombo
'
Me.CommandLineOptionCombo.BackColor = System.Drawing.Color.WhiteSmoke
Me.CommandLineOptionCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.CommandLineOptionCombo.FormattingEnabled = True
Me.CommandLineOptionCombo.Items.AddRange(New Object() {"Disabled", "Optional", "Enforced"})
Me.CommandLineOptionCombo.Location = New System.Drawing.Point(145, 157)
Me.CommandLineOptionCombo.Name = "CommandLineOptionCombo"
Me.CommandLineOptionCombo.Size = New System.Drawing.Size(81, 23)
Me.CommandLineOptionCombo.TabIndex = 20
'
'IconPathText
'
Me.IconPathText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconPathText.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.IconPathText.Location = New System.Drawing.Point(78, 99)
Me.IconPathText.Name = "IconPathText"
Me.IconPathText.Size = New System.Drawing.Size(159, 23)
Me.IconPathText.TabIndex = 12
'
'CommandLineText
'
Me.CommandLineText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CommandLineText.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CommandLineText.Location = New System.Drawing.Point(112, 128)
Me.CommandLineText.Name = "CommandLineText"
Me.CommandLineText.Size = New System.Drawing.Size(364, 23)
Me.CommandLineText.TabIndex = 18
'
'Label11
'
Me.Label11.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Label11.AutoSize = True
Me.Label11.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Label11.Location = New System.Drawing.Point(243, 103)
Me.Label11.Name = "Label11"
Me.Label11.Size = New System.Drawing.Size(64, 15)
Me.Label11.TabIndex = 13
Me.Label11.Text = "Icon Index:"
'
'Label10
'
Me.Label10.AutoSize = True
Me.Label10.Location = New System.Drawing.Point(232, 160)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(83, 15)
Me.Label10.TabIndex = 21
Me.Label10.Text = "TSWebAccess:"
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(12, 160)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(127, 15)
Me.Label8.TabIndex = 19
Me.Label8.Text = "Command line option:"
'
'VPathText
'
Me.VPathText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.VPathText.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.VPathText.Location = New System.Drawing.Point(60, 70)
Me.VPathText.Name = "VPathText"
Me.VPathText.Size = New System.Drawing.Size(315, 23)
Me.VPathText.TabIndex = 8
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Label7.Location = New System.Drawing.Point(12, 102)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(60, 15)
Me.Label7.TabIndex = 11
Me.Label7.Text = "Icon path:"
'
'PathText
'
Me.PathText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.PathText.Location = New System.Drawing.Point(60, 41)
Me.PathText.Name = "PathText"
Me.PathText.Size = New System.Drawing.Size(383, 23)
Me.PathText.TabIndex = 5
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Label6.Location = New System.Drawing.Point(12, 131)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(89, 15)
Me.Label6.TabIndex = 17
Me.Label6.Text = "Command line:"
'
'FullNameText
'
Me.FullNameText.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.FullNameText.Location = New System.Drawing.Point(304, 12)
Me.FullNameText.Name = "FullNameText"
Me.FullNameText.Size = New System.Drawing.Size(172, 23)
Me.FullNameText.TabIndex = 3
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Label5.Location = New System.Drawing.Point(12, 73)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(41, 15)
Me.Label5.TabIndex = 7
Me.Label5.Text = "VPath:"
'
'IconIndexText
'
Me.IconIndexText.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconIndexText.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.IconIndexText.Location = New System.Drawing.Point(315, 99)
Me.IconIndexText.Name = "IconIndexText"
Me.IconIndexText.Size = New System.Drawing.Size(60, 23)
Me.IconIndexText.TabIndex = 14
Me.IconIndexText.Text = "0"
'
'ShortNameText
'
Me.ShortNameText.Location = New System.Drawing.Point(60, 12)
Me.ShortNameText.Name = "ShortNameText"
Me.ShortNameText.Size = New System.Drawing.Size(170, 23)
Me.ShortNameText.TabIndex = 1
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(12, 44)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(34, 15)
Me.Label4.TabIndex = 4
Me.Label4.Text = "Path:"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(236, 15)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(62, 15)
Me.Label3.TabIndex = 2
Me.Label3.Text = "Full name:"
'
'Label12
'
Me.Label12.AutoSize = True
Me.Label12.Location = New System.Drawing.Point(12, 15)
Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(42, 15)
Me.Label12.TabIndex = 0
Me.Label12.Text = "Name:"
'
'CancelEditButton
'
Me.CancelEditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CancelEditButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CancelEditButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CancelEditButton.ImageIndex = 8
Me.CancelEditButton.ImageList = Me.SmallerIcons
Me.CancelEditButton.Location = New System.Drawing.Point(327, 189)
Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(75, 29)
Me.CancelEditButton.TabIndex = 24
Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False
'
'FileBrowserPath
'
Me.FileBrowserPath.Filter = "Programs|*.exe;*.com;*.cmd;*.bat|All files|*.*"
Me.FileBrowserPath.Title = "Browse..."
'
'FileBrowserIcon
'
Me.FileBrowserIcon.Filter = "Icons|*.exe;*.dll;*.ico|All files|*.*"
Me.FileBrowserIcon.Title = "Browse..."
'
'FileBrowserVPath
'
Me.FileBrowserVPath.Filter = "Programs|*.exe;*.com;*.cmd;*.bat|All files|*.*"
Me.FileBrowserVPath.Title = "Browse..."
'
'SaveButton
'
Me.SaveButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.SaveButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.SaveButton.ImageIndex = 0
Me.SaveButton.ImageList = Me.SmallerIcons
Me.SaveButton.Location = New System.Drawing.Point(407, 189)
Me.SaveButton.Name = "SaveButton"
Me.SaveButton.Size = New System.Drawing.Size(67, 29)
Me.SaveButton.TabIndex = 25
Me.SaveButton.Text = "Save"
Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SaveButton.UseVisualStyleBackColor = False
'
'BrowseIconPath
'
Me.BrowseIconPath.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.BrowseIconPath.BackColor = System.Drawing.Color.WhiteSmoke
Me.BrowseIconPath.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.BrowseIconPath.ImageIndex = 4
Me.BrowseIconPath.ImageList = Me.SmallerIcons
Me.BrowseIconPath.Location = New System.Drawing.Point(449, 97)
Me.BrowseIconPath.Name = "BrowseIconPath"
Me.BrowseIconPath.Size = New System.Drawing.Size(27, 27)
Me.BrowseIconPath.TabIndex = 16
Me.BrowseIconPath.UseVisualStyleBackColor = False
'
'BrowseVPath
'
Me.BrowseVPath.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.BrowseVPath.BackColor = System.Drawing.Color.WhiteSmoke
Me.BrowseVPath.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.BrowseVPath.ImageIndex = 1
Me.BrowseVPath.ImageList = Me.SmallerIcons
Me.BrowseVPath.Location = New System.Drawing.Point(449, 67)
Me.BrowseVPath.Name = "BrowseVPath"
Me.BrowseVPath.Size = New System.Drawing.Size(27, 27)
Me.BrowseVPath.TabIndex = 10
Me.BrowseVPath.UseVisualStyleBackColor = False
'
'BrowsePath
'
Me.BrowsePath.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.BrowsePath.BackColor = System.Drawing.Color.WhiteSmoke
Me.BrowsePath.ImageIndex = 1
Me.BrowsePath.ImageList = Me.SmallerIcons
Me.BrowsePath.Location = New System.Drawing.Point(449, 38)
Me.BrowsePath.Name = "BrowsePath"
Me.BrowsePath.Size = New System.Drawing.Size(27, 27)
Me.BrowsePath.TabIndex = 6
Me.BrowsePath.UseVisualStyleBackColor = False
'
'FTAButton
'
Me.FTAButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.FTAButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.FTAButton.ImageIndex = 7
Me.FTAButton.ImageList = Me.SmallerIcons
Me.FTAButton.Location = New System.Drawing.Point(12, 189)
Me.FTAButton.Name = "FTAButton"
Me.FTAButton.Size = New System.Drawing.Size(172, 29)
Me.FTAButton.TabIndex = 23
Me.FTAButton.Text = "File type associations..."
Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.FTAButton.UseVisualStyleBackColor = False
'
'RemoteAppEditWindow
'
Me.AcceptButton = Me.SaveButton
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton
Me.ClientSize = New System.Drawing.Size(488, 230)
Me.Controls.Add(Me.FTAButton)
Me.Controls.Add(Me.CancelEditButton)
Me.Controls.Add(Me.SaveButton)
Me.Controls.Add(Me.BrowseIconPath)
Me.Controls.Add(Me.IconPathCopyButton)
Me.Controls.Add(Me.VPathCopyButton)
Me.Controls.Add(Me.TSWAbox)
Me.Controls.Add(Me.CommandLineOptionCombo)
Me.Controls.Add(Me.IconPathText)
Me.Controls.Add(Me.CommandLineText)
Me.Controls.Add(Me.Label11)
Me.Controls.Add(Me.Label10)
Me.Controls.Add(Me.Label8)
Me.Controls.Add(Me.VPathText)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.PathText)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.FullNameText)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.IconIndexText)
Me.Controls.Add(Me.ShortNameText)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label12)
Me.Controls.Add(Me.BrowseVPath)
Me.Controls.Add(Me.BrowsePath)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MaximumSize = New System.Drawing.Size(9000, 269)
Me.MinimizeBox = False
Me.MinimumSize = New System.Drawing.Size(504, 269)
Me.Name = "RemoteAppEditWindow"
Me.Text = "RemoteAppEditWindow"
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
Friend WithEvents BrowseIconPath As System.Windows.Forms.Button
Friend WithEvents IconPathCopyButton As System.Windows.Forms.Button
Friend WithEvents VPathCopyButton As System.Windows.Forms.Button
Friend WithEvents TSWAbox As System.Windows.Forms.ComboBox
Friend WithEvents CommandLineOptionCombo As System.Windows.Forms.ComboBox
Friend WithEvents IconPathText As System.Windows.Forms.TextBox
Friend WithEvents CommandLineText As System.Windows.Forms.TextBox
Friend WithEvents Label11 As System.Windows.Forms.Label
Friend WithEvents Label10 As System.Windows.Forms.Label
Friend WithEvents Label8 As System.Windows.Forms.Label
Friend WithEvents VPathText As System.Windows.Forms.TextBox
Friend WithEvents Label7 As System.Windows.Forms.Label
Friend WithEvents PathText As System.Windows.Forms.TextBox
Friend WithEvents Label6 As System.Windows.Forms.Label
Friend WithEvents FullNameText As System.Windows.Forms.TextBox
Friend WithEvents Label5 As System.Windows.Forms.Label
Friend WithEvents IconIndexText As System.Windows.Forms.TextBox
Friend WithEvents ShortNameText As System.Windows.Forms.TextBox
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label12 As System.Windows.Forms.Label
Friend WithEvents BrowseVPath As System.Windows.Forms.Button
Friend WithEvents BrowsePath As System.Windows.Forms.Button
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents SaveButton As System.Windows.Forms.Button
Friend WithEvents CancelEditButton As System.Windows.Forms.Button
Friend WithEvents FileBrowserPath As System.Windows.Forms.OpenFileDialog
Friend WithEvents FileBrowserIcon As System.Windows.Forms.OpenFileDialog
Friend WithEvents FileBrowserVPath As System.Windows.Forms.OpenFileDialog
Friend WithEvents FTAButton As System.Windows.Forms.Button
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,231 @@
Imports RemoteAppLib
Public Class RemoteAppEditWindow
Private RemoteApp As New RemoteApp
Public Function EditRemoteApp(SelectedRemoteApp As RemoteApp) As RemoteApp
HelpSystem.SetupTips(Me)
RemoteApp = SelectedRemoteApp
Me.Text = "Properties of " & RemoteApp.Name
Me.Size = Me.MinimumSize
HelpSystem.SetupTips(Me)
Me.LoadValues()
Dim dlgResult = Me.ShowDialog()
RemoteAppMainWindow.ReloadApps()
Me.Dispose()
Return RemoteApp
End Function
Public Function CreateRemoteApp(Optional Advanced As Boolean = False) As RemoteApp
Me.Text = "New RemoteApp"
Me.Size = Me.MinimumSize
HelpSystem.SetupTips(Me)
Me.CommandLineOptionCombo.SelectedIndex = 1
Me.TSWAbox.SelectedIndex = 0
Me.FTAButton.Enabled = False
If Advanced Then
Me.ShowDialog()
Else
If DoBrowsePath() = True Then
SaveAndCloseOrWindow()
End If
End If
Me.Dispose()
Return RemoteApp
End Function
Private Sub SetToolTips()
Dim toolTip1 As New ToolTip()
' Set up the delays for the ToolTip.
toolTip1.AutoPopDelay = 5000
toolTip1.InitialDelay = 1000
toolTip1.ReshowDelay = 500
toolTip1.SetToolTip(Me.BrowseIconPath, "Select an icon")
toolTip1.SetToolTip(Me.BrowsePath, "Browse for application")
toolTip1.SetToolTip(Me.BrowseVPath, "Browse for application")
toolTip1.SetToolTip(Me.VPathCopyButton, "Copy Path into VPath")
toolTip1.SetToolTip(Me.IconPathCopyButton, "Copy Path into Icon path")
End Sub
Sub LoadValues()
Me.ShortNameText.Text = RemoteApp.Name
Me.CommandLineOptionCombo.SelectedIndex = RemoteApp.CommandLineOption
Me.FullNameText.Text = RemoteApp.FullName
Me.PathText.Text = RemoteApp.Path
Me.VPathText.Text = RemoteApp.VPath
Me.CommandLineText.Text = RemoteApp.CommandLine
Me.CommandLineOptionCombo.SelectedIndex = RemoteApp.CommandLineOption
Me.IconPathText.Text = RemoteApp.IconPath
Me.IconIndexText.Text = RemoteApp.IconIndex
Dim TSWA As Integer = 0
If RemoteApp.TSWA = True Then TSWA = 1
Me.TSWAbox.SelectedIndex = TSWA
Dim TheIcon = ReturnIcon(Me.IconPathText.Text, Val(Me.IconIndexText.Text), True)
If Not TheIcon Is Nothing Then
Me.Icon = TheIcon
Else
Me.Icon = RemoteAppMainWindow.Icon
End If
End Sub
Private Sub CancelEditButton_Click(sender As Object, e As EventArgs) Handles CancelEditButton.Click
Me.Close()
End Sub
Private Sub VPathCopyButton_Click(sender As Object, e As EventArgs) Handles VPathCopyButton.Click
Me.VPathText.Text = Me.PathText.Text
End Sub
Private Sub IconPathCopyButton_Click(sender As Object, e As EventArgs) Handles IconPathCopyButton.Click
Me.IconPathText.Text = Me.PathText.Text
End Sub
Private Sub BrowseVPath_Click(sender As Object, e As EventArgs) Handles BrowseVPath.Click
If My.Computer.FileSystem.FileExists(VPathText.Text) Then FileBrowserVPath.InitialDirectory = My.Computer.FileSystem.GetParentPath(VPathText.Text)
If FileBrowserVPath.ShowDialog() = Windows.Forms.DialogResult.OK Then Me.VPathText.Text = FileBrowserVPath.FileName
End Sub
Private Sub BrowseIconPath_Click(sender As Object, e As EventArgs) Handles BrowseIconPath.Click
IconPick()
End Sub
Private Sub IconPick()
Dim StartPath As String = GetSysDir() & "\shell32.dll"
Dim StartIndex As Integer = Val(Me.IconIndexText.Text)
If My.Computer.FileSystem.FileExists(IconPathText.Text) Then StartPath = IconPathText.Text
Dim PickedIcon = RemoteAppIconPicker.PickIcon(StartPath, StartIndex)
If Not PickedIcon.IconPath Is Nothing Then
Me.IconPathText.Text = PickedIcon.IconPath
Me.IconIndexText.Text = PickedIcon.IconIndex
End If
End Sub
Private Sub BrowsePath_Click(sender As Object, e As EventArgs) Handles BrowsePath.Click
DoBrowsePath()
End Sub
Private Function DoBrowsePath() As Boolean
DoBrowsePath = False
If My.Computer.FileSystem.FileExists(PathText.Text) Then FileBrowserPath.InitialDirectory = My.Computer.FileSystem.GetParentPath(PathText.Text)
If FileBrowserPath.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim FilePath = FileBrowserPath.FileName
Me.PathText.Text = FilePath
RemoteApp.Path = FilePath
If Me.VPathText.Text = "" Then RemoteApp.VPath = FilePath
If Me.IconPathText.Text = "" Then RemoteApp.IconPath = FilePath
If FilePath.ToLower.EndsWith(".exe") Then
Dim title = GetEXETitle(FilePath)
If Me.ShortNameText.Text = "" Then RemoteApp.Name = FixShortAppName(title)
If Me.FullNameText.Text = "" Then RemoteApp.FullName = title
End If
LoadValues()
DoBrowsePath = True
End If
End Function
Private Sub SaveRemoteApp(ShortName As String, FullName As String, Path As String, VPath As String, CommandLine As String, CommandLineSetting As Integer, IconPath As String, IconIndex As Integer, ShowInTSWA As Integer)
Dim SysApps As New SystemRemoteApps
If Not RemoteApp.Name Is Nothing Then If Not RemoteApp.Name = ShortName Then SysApps.RenameApp(RemoteApp.Name, ShortName)
RemoteApp.Name = ShortName
RemoteApp.FullName = FullName
RemoteApp.Path = Path
RemoteApp.VPath = VPath
RemoteApp.IconPath = IconPath
RemoteApp.IconIndex = IconIndex
RemoteApp.CommandLine = CommandLine
RemoteApp.CommandLineOption = CommandLineSetting
RemoteApp.TSWA = ShowInTSWA
SysApps.SaveApp(RemoteApp)
End Sub
Private Function DoesAppExist(AppName As String) As Boolean
Dim AppExists = False
Dim sra As New SystemRemoteApps
Dim AppCol As New RemoteAppCollection
AppCol = sra.GetAll
For Each App As RemoteApp In AppCol
If App.Name = AppName Then AppExists = True
Next
Return AppExists
End Function
Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
SaveAndClose()
End Sub
Private Sub SaveAndCloseOrWindow()
If Me.ShortNameText.Text = "" Then
MessageBox.Show("Name must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.ShowDialog()
ElseIf Me.FullNameText.Text = "" Then
MessageBox.Show("Full name must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.ShowDialog()
ElseIf Me.PathText.Text = "" Then
MessageBox.Show("Path must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.ShowDialog()
ElseIf Not Me.ShortNameText.Text = RemoteApp.Name And DoesAppExist(Me.ShortNameText.Text) Then
MessageBox.Show("A RemoteApp with the same name already exists.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.ShowDialog()
ElseIf Me.Text = "New RemoteApp" And DoesAppExist(Me.ShortNameText.Text) Then
MessageBox.Show("A RemoteApp with the same name already exists.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.ShowDialog()
Else
SaveRemoteApp(Me.ShortNameText.Text.Trim, Me.FullNameText.Text, Me.PathText.Text, Me.VPathText.Text, Me.CommandLineText.Text, Me.CommandLineOptionCombo.SelectedIndex, Me.IconPathText.Text, Val(IconIndexText.Text), Me.TSWAbox.SelectedIndex)
Me.Close()
End If
End Sub
Private Sub SaveAndClose()
If Me.ShortNameText.Text = "" Then
MessageBox.Show("Name must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
ElseIf Me.FullNameText.Text = "" Then
MessageBox.Show("Full name must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
ElseIf Me.PathText.Text = "" Then
MessageBox.Show("Path must not be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
ElseIf Not Me.ShortNameText.Text = RemoteApp.Name And DoesAppExist(Me.ShortNameText.Text) Then
MessageBox.Show("A RemoteApp with the same name already exists.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
ElseIf Me.Text = "New RemoteApp" And DoesAppExist(Me.ShortNameText.Text) Then
MessageBox.Show("A RemoteApp with the same name already exists.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Else
SaveRemoteApp(Me.ShortNameText.Text.Trim, Me.FullNameText.Text, Me.PathText.Text, Me.VPathText.Text, Me.CommandLineText.Text, Me.CommandLineOptionCombo.SelectedIndex, Me.IconPathText.Text, Val(IconIndexText.Text), Me.TSWAbox.SelectedIndex)
Me.Close()
End If
End Sub
Private Sub IconIndexText_TextChanged(sender As Object, e As EventArgs) Handles IconIndexText.TextChanged
ValidateInteger(IconIndexText)
End Sub
Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click
RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp)
End Sub
Private Sub ShortNameText_TextChanged(sender As Object, e As EventArgs) Handles ShortNameText.TextChanged
ValidateAppName(Me.ShortNameText)
End Sub
End Class

View File

@@ -0,0 +1,231 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppFileTypeAssociation
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppFileTypeAssociation))
Me.FTAListView = New System.Windows.Forms.ListView()
Me.FileExtension = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.IconPath = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.IconIndex = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.Associated = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.CreateButton = New System.Windows.Forms.Button()
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.DeleteButton = New System.Windows.Forms.Button()
Me.EditButton = New System.Windows.Forms.Button()
Me.CloseButton = New System.Windows.Forms.Button()
Me.SetAssociationButton = New System.Windows.Forms.Button()
Me.SmallerIcons2 = New System.Windows.Forms.ImageList(Me.components)
Me.SuspendLayout()
'
'FTAListView
'
Me.FTAListView.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.FTAListView.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.FTAListView.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.FileExtension, Me.IconPath, Me.IconIndex, Me.Associated})
Me.FTAListView.FullRowSelect = True
Me.FTAListView.GridLines = True
Me.FTAListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable
Me.FTAListView.HideSelection = False
Me.FTAListView.Location = New System.Drawing.Point(-1, -1)
Me.FTAListView.MultiSelect = False
Me.FTAListView.Name = "FTAListView"
Me.FTAListView.Size = New System.Drawing.Size(496, 164)
Me.FTAListView.Sorting = System.Windows.Forms.SortOrder.Ascending
Me.FTAListView.TabIndex = 0
Me.FTAListView.UseCompatibleStateImageBehavior = False
Me.FTAListView.View = System.Windows.Forms.View.Details
'
'FileExtension
'
Me.FileExtension.Text = "Extension"
Me.FileExtension.Width = 64
'
'IconPath
'
Me.IconPath.Text = "Icon Path"
Me.IconPath.Width = 305
'
'IconIndex
'
Me.IconIndex.Text = "Index"
Me.IconIndex.Width = 51
'
'Associated
'
Me.Associated.Text = "Association"
Me.Associated.Width = 76
'
'CreateButton
'
Me.CreateButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.CreateButton.AutoSize = True
Me.CreateButton.BackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatAppearance.BorderSize = 0
Me.CreateButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.CreateButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CreateButton.ImageIndex = 1
Me.CreateButton.ImageList = Me.SmallerIcons
Me.CreateButton.Location = New System.Drawing.Point(12, 169)
Me.CreateButton.Name = "CreateButton"
Me.CreateButton.Size = New System.Drawing.Size(29, 29)
Me.CreateButton.TabIndex = 1
Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateButton.UseVisualStyleBackColor = False
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "properties.ico")
Me.SmallerIcons.Images.SetKeyName(1, "plus.ico")
Me.SmallerIcons.Images.SetKeyName(2, "minus.ico")
Me.SmallerIcons.Images.SetKeyName(3, "tick.ico")
Me.SmallerIcons.Images.SetKeyName(4, "flag2-add.ico")
Me.SmallerIcons.Images.SetKeyName(5, "settings-16.ico")
'
'DeleteButton
'
Me.DeleteButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.DeleteButton.AutoSize = True
Me.DeleteButton.BackColor = System.Drawing.Color.Transparent
Me.DeleteButton.Enabled = False
Me.DeleteButton.FlatAppearance.BorderSize = 0
Me.DeleteButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.DeleteButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.DeleteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.DeleteButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.DeleteButton.ImageIndex = 2
Me.DeleteButton.ImageList = Me.SmallerIcons
Me.DeleteButton.Location = New System.Drawing.Point(48, 169)
Me.DeleteButton.Name = "DeleteButton"
Me.DeleteButton.Size = New System.Drawing.Size(29, 29)
Me.DeleteButton.TabIndex = 2
Me.DeleteButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.DeleteButton.UseVisualStyleBackColor = False
'
'EditButton
'
Me.EditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.EditButton.AutoSize = True
Me.EditButton.BackColor = System.Drawing.Color.Transparent
Me.EditButton.Enabled = False
Me.EditButton.FlatAppearance.BorderSize = 0
Me.EditButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.EditButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.EditButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.EditButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.EditButton.ForeColor = System.Drawing.SystemColors.ControlText
Me.EditButton.ImageIndex = 0
Me.EditButton.ImageList = Me.SmallerIcons
Me.EditButton.Location = New System.Drawing.Point(84, 169)
Me.EditButton.Name = "EditButton"
Me.EditButton.Size = New System.Drawing.Size(29, 29)
Me.EditButton.TabIndex = 3
Me.EditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.EditButton.UseVisualStyleBackColor = False
'
'CloseButton
'
Me.CloseButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CloseButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CloseButton.DialogResult = System.Windows.Forms.DialogResult.OK
Me.CloseButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CloseButton.ImageIndex = 3
Me.CloseButton.ImageList = Me.SmallerIcons
Me.CloseButton.Location = New System.Drawing.Point(415, 169)
Me.CloseButton.Name = "CloseButton"
Me.CloseButton.Size = New System.Drawing.Size(67, 29)
Me.CloseButton.TabIndex = 6
Me.CloseButton.Text = "OK"
Me.CloseButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CloseButton.UseVisualStyleBackColor = False
'
'SetAssociationButton
'
Me.SetAssociationButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.SetAssociationButton.AutoSize = True
Me.SetAssociationButton.BackColor = System.Drawing.Color.Transparent
Me.SetAssociationButton.Enabled = False
Me.SetAssociationButton.FlatAppearance.BorderSize = 0
Me.SetAssociationButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.SetAssociationButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.SetAssociationButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.SetAssociationButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.SetAssociationButton.ForeColor = System.Drawing.SystemColors.ControlText
Me.SetAssociationButton.ImageIndex = 4
Me.SetAssociationButton.ImageList = Me.SmallerIcons
Me.SetAssociationButton.Location = New System.Drawing.Point(119, 169)
Me.SetAssociationButton.Name = "SetAssociationButton"
Me.SetAssociationButton.Size = New System.Drawing.Size(29, 29)
Me.SetAssociationButton.TabIndex = 4
Me.SetAssociationButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SetAssociationButton.UseVisualStyleBackColor = False
'
'SmallerIcons2
'
Me.SmallerIcons2.ImageStream = CType(resources.GetObject("SmallerIcons2.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons2.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons2.Images.SetKeyName(0, "cross.ico")
'
'RemoteAppFileTypeAssociation
'
Me.AcceptButton = Me.CloseButton
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(494, 208)
Me.Controls.Add(Me.SetAssociationButton)
Me.Controls.Add(Me.CloseButton)
Me.Controls.Add(Me.CreateButton)
Me.Controls.Add(Me.DeleteButton)
Me.Controls.Add(Me.EditButton)
Me.Controls.Add(Me.FTAListView)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.MinimumSize = New System.Drawing.Size(510, 247)
Me.Name = "RemoteAppFileTypeAssociation"
Me.Text = "File Type Associations"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents FTAListView As System.Windows.Forms.ListView
Friend WithEvents FileExtension As System.Windows.Forms.ColumnHeader
Friend WithEvents IconPath As System.Windows.Forms.ColumnHeader
Friend WithEvents IconIndex As System.Windows.Forms.ColumnHeader
Friend WithEvents CreateButton As System.Windows.Forms.Button
Friend WithEvents DeleteButton As System.Windows.Forms.Button
Friend WithEvents EditButton As System.Windows.Forms.Button
Friend WithEvents CloseButton As System.Windows.Forms.Button
Friend WithEvents Associated As System.Windows.Forms.ColumnHeader
Friend WithEvents SetAssociationButton As System.Windows.Forms.Button
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents SmallerIcons2 As System.Windows.Forms.ImageList
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,196 @@
Public Class RemoteAppFileTypeAssociation
Private RemoteApp As New RemoteAppLib.RemoteApp
Public Function EditFileTypes(SelectedRemoteApp As RemoteAppLib.RemoteApp) As RemoteAppLib.RemoteApp
RemoteApp = SelectedRemoteApp
Me.Text = "File type associations for " & RemoteApp.Name
HelpSystem.SetupTips(Me)
LoadFTAs()
Me.ShowDialog()
Me.Dispose()
Return RemoteApp
End Function
'Private Sub SetToolTips()
' Dim toolTip1 As New ToolTip()
' ' Set up the delays for the ToolTip.
' toolTip1.AutoPopDelay = 5000
' toolTip1.InitialDelay = 1000
' toolTip1.ReshowDelay = 500
' ' Force the ToolTip text to be displayed whether or not the form is active:
' ' toolTip1.ShowAlways = True
' toolTip1.SetToolTip(Me.CreateButton, "Create a new File Type Association")
' toolTip1.SetToolTip(Me.DeleteButton, "Delete selected File Type Association")
' toolTip1.SetToolTip(Me.EditButton, "Change icon of selected File Type Association")
'End Sub
Private Sub LoadFTAs()
FTAListView.Items.Clear()
If Not RemoteApp.FileTypeAssociations Is Nothing Then
For Each fta As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
Dim FTitem As New ListViewItem(fta.Extension)
Dim ftaStatus As String
If LocalFtaModule.DoesFTAExist(fta.Extension) Then
'FTA exists - created by another app
ftaStatus = "Existing"
If LocalFtaModule.IsFTAMine(fta.Extension) Then
'FTA exists - created by RemoteApp Tool
ftaStatus = "Yes"
End If
Else
'FTA does not exist
ftaStatus = "No"
End If
FTitem.SubItems.Add(fta.IconPath)
FTitem.SubItems.Add(fta.IconIndex)
FTitem.SubItems.Add(ftaStatus)
FTAListView.Items.Add(FTitem)
Next
End If
CheckSelection()
End Sub
Private Sub CreateButton_Click(sender As Object, e As EventArgs) Handles CreateButton.Click
If RemoteApp.FileTypeAssociations Is Nothing Then
Dim FTACol As New RemoteAppLib.FileTypeAssociationCollection
RemoteApp.FileTypeAssociations = FTACol
End If
Dim FTA As New RemoteAppLib.FileTypeAssociation
FTA = RemoteAppIconPicker.ManageFTA(RemoteApp.IconPath, 0)
Dim SameFTA As Boolean = False
If Not FTA.Extension Is Nothing Then
For Each RAFTA As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
If RAFTA.Extension = FTA.Extension Then SameFTA = True
Next
If Not SameFTA Then
RemoteApp.FileTypeAssociations.Add(FTA)
Else
MessageBox.Show("There is already an association for filetype: " & FTA.Extension, "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
End If
End If
LoadFTAs()
End Sub
Private Sub FTAListView_DoubleClick(sender As Object, e As EventArgs) Handles FTAListView.DoubleClick
EditFTA()
End Sub
Private Sub FTAListView_SelectedIndexChanged(sender As Object, e As EventArgs) Handles FTAListView.SelectedIndexChanged
CheckSelection()
End Sub
Private Sub CheckSelection()
If FTAListView.SelectedItems.Count > 0 Then
Me.EditButton.Enabled = True
Me.DeleteButton.Enabled = True
Me.SetAssociationButton.Enabled = True
Else
Me.EditButton.Enabled = False
Me.DeleteButton.Enabled = False
Me.SetAssociationButton.Enabled = False
End If
End Sub
Private Sub CloseButton_Click(sender As Object, e As EventArgs) Handles CloseButton.Click
Me.Close()
End Sub
Private Sub DeleteButton_Click(sender As Object, e As EventArgs) Handles DeleteButton.Click
Dim FileType = FTAListView.SelectedItems(0).Text
If MessageBox.Show("Are you sure you want to remove filetype:" & vbCrLf & "." & FileType & " ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
Dim IconPath = FTAListView.SelectedItems(0).SubItems(0).Text
Dim IconIndex = FTAListView.SelectedItems(0).SubItems(1).Text
Dim FTAtoRemove As New RemoteAppLib.FileTypeAssociation
For Each FTA As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
If FTA.Extension = FileType Then FTAtoRemove = FTA
Next
RemoteApp.FileTypeAssociations.Remove(FTAtoRemove)
End If
LoadFTAs()
End Sub
Private Sub EditButton_Click(sender As Object, e As EventArgs) Handles EditButton.Click
EditFTA()
End Sub
Private Sub EditFTA()
Dim FTA As New RemoteAppLib.FileTypeAssociation
FTA = RemoteAppIconPicker.ManageFTA(Me.FTAListView.SelectedItems(0).SubItems(1).Text, Val(Me.FTAListView.SelectedItems(0).SubItems(2).Text), Me.FTAListView.SelectedItems(0).Text, True)
If Not FTA.Extension Is Nothing Then
Dim IconPath = FTAListView.SelectedItems(0).SubItems(0).Text
Dim IconIndex = FTAListView.SelectedItems(0).SubItems(1).Text
Dim FileType = FTAListView.SelectedItems(0).Text
Dim FTAtoRemove As New RemoteAppLib.FileTypeAssociation
For Each FTA2 As RemoteAppLib.FileTypeAssociation In RemoteApp.FileTypeAssociations
If FTA2.Extension = FileType Then FTAtoRemove = FTA2
Next
RemoteApp.FileTypeAssociations.Remove(FTAtoRemove)
RemoteApp.FileTypeAssociations.Add(FTA)
LoadFTAs()
End If
End Sub
Private Sub SetAssociationButton_Click(sender As Object, e As EventArgs) Handles SetAssociationButton.Click ' NEED TO SORT OUT EVERYTHING IN THIS SUB!!!
Dim fta As New RemoteAppLib.FileTypeAssociation
fta.Extension = FTAListView.SelectedItems(0).SubItems(0).Text
fta.IconPath = FTAListView.SelectedItems(0).SubItems(1).Text
fta.IconIndex = FTAListView.SelectedItems(0).SubItems(2).Text
Dim MsgBoxResult As Windows.Forms.DialogResult = Windows.Forms.DialogResult.Cancel
If LocalFtaModule.DoesFTAExist(fta.Extension) Then
'An existing association was found
If Not IsFTAMine(fta.Extension) Then
'FTA found and belongs to another application (replace?)
MsgBoxResult = MessageBox.Show("An association already exists on the local computer for filetype. " & _
"Would you like to replace it?" & vbCrLf & vbCrLf & _
"Warning: This association was created by another application. " & _
"Replacing it can cause problems. " & _
"If the existing association is working, there is no need to replace it.", _
"File Type Association", _
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If MsgBoxResult = Windows.Forms.DialogResult.Yes Then _
LocalFtaModule.CreateFTA(fta, RemoteApp.Path, RemoteApp.Name, True)
Else
'FTA found and belongs to RemoteApp Tool (remove)
MsgBoxResult = MessageBox.Show("Are you sure you want to remove this file type association on the local computer?", _
"File Type Association", _
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If MsgBoxResult = Windows.Forms.DialogResult.Yes Then _
LocalFtaModule.DeleteFTA(fta.Extension)
End If
Else
'FTA not found (create)
If LocalFtaModule.CreateFTA(fta, RemoteApp.Path, RemoteApp.Name) = True Then
MessageBox.Show("File type association created for " & fta.Extension & ".", "File Type Association", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("File type association not created. There was an error.", "File Type Association", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
Me.LoadFTAs()
End Sub
Private Sub CancelButton_Click(sender As Object, e As EventArgs)
Me.Close()
End Sub
End Class

View File

@@ -0,0 +1,113 @@
Imports System.Text.RegularExpressions
Imports RemoteAppLib
Module RemoteAppFunction
Public Sub ValidateInteger(TheTextBox As TextBox)
Dim cloc = TheTextBox.SelectionStart
TheTextBox.Text = Val(TheTextBox.Text)
TheTextBox.Select(TheTextBox.Text.Length, 0)
TheTextBox.Select(cloc, 0)
End Sub
Public Sub ValidatePort(TheTextBox As TextBox)
Dim cloc = TheTextBox.SelectionStart
If Val(TheTextBox.Text) > 65535 Then
TheTextBox.Text = "65535"
cloc = TheTextBox.Text.Length
End If
TheTextBox.Text = Val(TheTextBox.Text)
TheTextBox.Select(TheTextBox.Text.Length, 0)
TheTextBox.Select(cloc, 0)
End Sub
Public Sub ValidateSeconds(TheTextBox As TextBox)
Dim cloc = TheTextBox.SelectionStart
If Val(TheTextBox.Text) > 2147483 Then
TheTextBox.Text = 2147483
cloc = TheTextBox.Text.Length
End If
TheTextBox.Text = Val(TheTextBox.Text)
TheTextBox.Select(TheTextBox.Text.Length, 0)
TheTextBox.Select(cloc, 0)
End Sub
Public Sub ValidateAppName(TheTextBox As TextBox)
ValidateTextBoxR(TheTextBox, "[^\p{L}0-9\-_"" ""]")
End Sub
Private Sub ValidateTextBoxR(TheTextBox As TextBox, regex As String)
Dim cloc = TheTextBox.SelectionStart
Dim rx As New Regex(regex)
If (rx.IsMatch(TheTextBox.Text)) Then
TheTextBox.Text = rx.Replace(TheTextBox.Text, "")
TheTextBox.Select(cloc - 1, 0)
Else
TheTextBox.Select(cloc, 0)
End If
End Sub
Public Function FixShortAppName(TheText As String)
If TheText <> "" Then
Dim rx As New Regex("[^\p{L}0-9\-_"" ""]")
If (rx.IsMatch(TheText)) Then
TheText = rx.Replace(TheText, "")
End If
End If
TheText = TheText.Trim
Return TheText
End Function
Public Sub ValidateDNSname(ByVal TheTextBox As TextBox)
' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
Dim rx As New Regex("[^\p{L}0-9\-\.]")
If (rx.IsMatch(TheTextBox.Text)) Then
TheTextBox.Text = rx.Replace(TheTextBox.Text, "")
TheTextBox.Select(TheTextBox.Text.Length, 0)
End If
End Sub
Public Sub ValidateFileType(ByVal TheTextBox As TextBox)
' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
Dim rx As New Regex("[^\p{L}0-9\-_\!\@\#\$\%\^\&\(\)\{\}\[\]\+\=\;\,\']")
If (rx.IsMatch(TheTextBox.Text)) Then
TheTextBox.Text = rx.Replace(TheTextBox.Text, "")
TheTextBox.Select(TheTextBox.Text.Length, 0)
End If
End Sub
Public Function GetAppBitmap(RemoteAppShortName As String)
On Error Resume Next
Dim AppKey As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications" & "\" & RemoteAppShortName
Dim TheRegKey = My.Computer.Registry.LocalMachine.OpenSubKey(AppKey)
Dim TheIcon = ReturnIcon("", 0).ToBitmap
If Not TheRegKey Is Nothing Then
Dim IconPath = TheRegKey.GetValue("IconPath", "")
Dim IconIndex = TheRegKey.GetValue("IconIndex", "")
TheIcon = ReturnIcon(IconPath, IconIndex).ToBitmap
End If
Return TheIcon
End Function
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function GetSysDir() As String
Return Environment.SystemDirectory.ToString
End Function
Public Sub DeleteFiles(FilesArray As ArrayList)
For Each dFile In FilesArray
If My.Computer.FileSystem.FileExists(dFile) Then My.Computer.FileSystem.DeleteFile(dFile)
Next
End Sub
Public Function GetEXETitle(exePath As String)
Dim pname = System.Diagnostics.FileVersionInfo.GetVersionInfo(exePath).FileDescription
If pname = "" Then pname = Left(My.Computer.FileSystem.GetFileInfo(exePath).Name, My.Computer.FileSystem.GetFileInfo(exePath).Name.Length - 4)
Return pname
End Function
End Module

View File

@@ -0,0 +1,220 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppHostOptions
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppHostOptions))
Me.TimeoutDisconnectedCheckBox = New System.Windows.Forms.CheckBox()
Me.DisableAllowListCheckBox = New System.Windows.Forms.CheckBox()
Me.DisconnectTimeTextBox = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.TimeoutIdleCheckBox = New System.Windows.Forms.CheckBox()
Me.IdleTimeTextBox = New System.Windows.Forms.TextBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.LogoffWhenTimoutCheckBox = New System.Windows.Forms.CheckBox()
Me.SaveButton = New System.Windows.Forms.Button()
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.Label3 = New System.Windows.Forms.Label()
Me.CancelEditButton = New System.Windows.Forms.Button()
Me.AllowUnlistedRemoteProgramsCheckBox = New System.Windows.Forms.CheckBox()
Me.SuspendLayout()
'
'TimeoutDisconnectedCheckBox
'
Me.TimeoutDisconnectedCheckBox.AutoSize = True
Me.TimeoutDisconnectedCheckBox.Location = New System.Drawing.Point(14, 64)
Me.TimeoutDisconnectedCheckBox.Name = "TimeoutDisconnectedCheckBox"
Me.TimeoutDisconnectedCheckBox.Size = New System.Drawing.Size(212, 19)
Me.TimeoutDisconnectedCheckBox.TabIndex = 2
Me.TimeoutDisconnectedCheckBox.Text = "Timeout for disconnected sessions:"
Me.TimeoutDisconnectedCheckBox.UseVisualStyleBackColor = True
'
'DisableAllowListCheckBox
'
Me.DisableAllowListCheckBox.AutoSize = True
Me.DisableAllowListCheckBox.Location = New System.Drawing.Point(14, 14)
Me.DisableAllowListCheckBox.Name = "DisableAllowListCheckBox"
Me.DisableAllowListCheckBox.Size = New System.Drawing.Size(137, 19)
Me.DisableAllowListCheckBox.TabIndex = 0
Me.DisableAllowListCheckBox.Text = "Disable AppAllowList"
Me.DisableAllowListCheckBox.UseVisualStyleBackColor = True
'
'DisconnectTimeTextBox
'
Me.DisconnectTimeTextBox.Location = New System.Drawing.Point(245, 62)
Me.DisconnectTimeTextBox.MaxLength = 8
Me.DisconnectTimeTextBox.Name = "DisconnectTimeTextBox"
Me.DisconnectTimeTextBox.Size = New System.Drawing.Size(83, 23)
Me.DisconnectTimeTextBox.TabIndex = 3
Me.DisconnectTimeTextBox.Text = "0"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(336, 66)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(50, 15)
Me.Label1.TabIndex = 4
Me.Label1.Text = "seconds"
'
'TimeoutIdleCheckBox
'
Me.TimeoutIdleCheckBox.AutoSize = True
Me.TimeoutIdleCheckBox.Location = New System.Drawing.Point(14, 91)
Me.TimeoutIdleCheckBox.Name = "TimeoutIdleCheckBox"
Me.TimeoutIdleCheckBox.Size = New System.Drawing.Size(160, 19)
Me.TimeoutIdleCheckBox.TabIndex = 5
Me.TimeoutIdleCheckBox.Text = "Timeout for idle sessions:"
Me.TimeoutIdleCheckBox.UseVisualStyleBackColor = True
'
'IdleTimeTextBox
'
Me.IdleTimeTextBox.Location = New System.Drawing.Point(189, 89)
Me.IdleTimeTextBox.MaxLength = 8
Me.IdleTimeTextBox.Name = "IdleTimeTextBox"
Me.IdleTimeTextBox.Size = New System.Drawing.Size(83, 23)
Me.IdleTimeTextBox.TabIndex = 6
Me.IdleTimeTextBox.Text = "0"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(280, 91)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(50, 15)
Me.Label2.TabIndex = 7
Me.Label2.Text = "seconds"
'
'LogoffWhenTimoutCheckBox
'
Me.LogoffWhenTimoutCheckBox.AutoSize = True
Me.LogoffWhenTimoutCheckBox.Location = New System.Drawing.Point(14, 117)
Me.LogoffWhenTimoutCheckBox.Name = "LogoffWhenTimoutCheckBox"
Me.LogoffWhenTimoutCheckBox.Size = New System.Drawing.Size(262, 19)
Me.LogoffWhenTimoutCheckBox.TabIndex = 8
Me.LogoffWhenTimoutCheckBox.Text = "Logoff sessions when time limits are reached"
Me.LogoffWhenTimoutCheckBox.UseVisualStyleBackColor = True
'
'SaveButton
'
Me.SaveButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.SaveButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.SaveButton.FlatAppearance.BorderSize = 0
Me.SaveButton.ImageIndex = 0
Me.SaveButton.ImageList = Me.SmallerIcons
Me.SaveButton.Location = New System.Drawing.Point(334, 190)
Me.SaveButton.Name = "SaveButton"
Me.SaveButton.Size = New System.Drawing.Size(67, 29)
Me.SaveButton.TabIndex = 11
Me.SaveButton.Text = "Save"
Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SaveButton.UseVisualStyleBackColor = False
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "favorites_16x16.png")
Me.SmallerIcons.Images.SetKeyName(1, "cross.ico")
'
'Label3
'
Me.Label3.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Label3.ForeColor = System.Drawing.Color.Maroon
Me.Label3.Location = New System.Drawing.Point(11, 145)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(385, 33)
Me.Label3.TabIndex = 9
Me.Label3.Text = "Note: Settings here will be overridden by local policy and group policy. Some set" & _
"tings require a reboot."
'
'CancelEditButton
'
Me.CancelEditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CancelEditButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CancelEditButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.CancelEditButton.ImageIndex = 1
Me.CancelEditButton.ImageList = Me.SmallerIcons
Me.CancelEditButton.Location = New System.Drawing.Point(253, 190)
Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(75, 29)
Me.CancelEditButton.TabIndex = 10
Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False
'
'AllowUnlistedRemoteProgramsCheckBox
'
Me.AllowUnlistedRemoteProgramsCheckBox.AutoSize = True
Me.AllowUnlistedRemoteProgramsCheckBox.Location = New System.Drawing.Point(14, 39)
Me.AllowUnlistedRemoteProgramsCheckBox.Name = "AllowUnlistedRemoteProgramsCheckBox"
Me.AllowUnlistedRemoteProgramsCheckBox.Size = New System.Drawing.Size(200, 19)
Me.AllowUnlistedRemoteProgramsCheckBox.TabIndex = 1
Me.AllowUnlistedRemoteProgramsCheckBox.Text = "Allow Unlisted Remote Programs"
Me.AllowUnlistedRemoteProgramsCheckBox.UseVisualStyleBackColor = True
'
'RemoteAppHostOptions
'
Me.AcceptButton = Me.SaveButton
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton
Me.ClientSize = New System.Drawing.Size(413, 231)
Me.Controls.Add(Me.SaveButton)
Me.Controls.Add(Me.CancelEditButton)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.IdleTimeTextBox)
Me.Controls.Add(Me.DisconnectTimeTextBox)
Me.Controls.Add(Me.AllowUnlistedRemoteProgramsCheckBox)
Me.Controls.Add(Me.DisableAllowListCheckBox)
Me.Controls.Add(Me.LogoffWhenTimoutCheckBox)
Me.Controls.Add(Me.TimeoutIdleCheckBox)
Me.Controls.Add(Me.TimeoutDisconnectedCheckBox)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "RemoteAppHostOptions"
Me.Text = "Host Options"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents TimeoutDisconnectedCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents DisableAllowListCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents DisconnectTimeTextBox As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents TimeoutIdleCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents IdleTimeTextBox As System.Windows.Forms.TextBox
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents LogoffWhenTimoutCheckBox As System.Windows.Forms.CheckBox
Friend WithEvents SaveButton As System.Windows.Forms.Button
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents CancelEditButton As System.Windows.Forms.Button
Friend WithEvents AllowUnlistedRemoteProgramsCheckBox As System.Windows.Forms.CheckBox
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
Public Class RemoteAppHostOptions
Private Sub DisconnectTimeTextBox_TextChanged(sender As Object, e As EventArgs) Handles DisconnectTimeTextBox.TextChanged
ValidateSeconds(Me.DisconnectTimeTextBox)
End Sub
Private Sub IdleTimeTextBox_TextChanged(sender As Object, e As EventArgs) Handles IdleTimeTextBox.TextChanged
ValidateSeconds(Me.IdleTimeTextBox)
End Sub
Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
Dim PolicyKeyStringMS = "SOFTWARE\Policies\Microsoft"
Dim PolicyKeyString = "SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"
Dim PolicyKey As Microsoft.Win32.RegistryKey
'Create policy reg keys
Dim PolicyKeyMS = My.Computer.Registry.LocalMachine.OpenSubKey(PolicyKeyStringMS, True)
Dim PolicyKeyWNT = PolicyKeyMS.CreateSubKey("Windows NT")
Dim PolicyKeyTS = PolicyKeyWNT.CreateSubKey("Terminal Services")
PolicyKey = My.Computer.Registry.LocalMachine.OpenSubKey(PolicyKeyString, True)
If Me.DisableAllowListCheckBox.Checked Then
My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList", "fDisabledAllowList", "1", Microsoft.Win32.RegistryValueKind.DWord)
Else
My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList", "fDisabledAllowList", "0", Microsoft.Win32.RegistryValueKind.DWord)
End If
If Me.AllowUnlistedRemoteProgramsCheckBox.Checked Then
PolicyKey.SetValue("fAllowUnlistedRemotePrograms", 1, Microsoft.Win32.RegistryValueKind.DWord)
Else
PolicyKey.DeleteValue("fAllowUnlistedRemotePrograms", False)
End If
If Me.TimeoutDisconnectedCheckBox.Checked Then
PolicyKey.SetValue("MaxDisconnectionTime", Val(DisconnectTimeTextBox.Text) * 1000, Microsoft.Win32.RegistryValueKind.DWord)
Else
PolicyKey.DeleteValue("MaxDisconnectionTime", False)
End If
If Me.TimeoutIdleCheckBox.Checked Then
PolicyKey.SetValue("MaxIdleTime", Val(IdleTimeTextBox.Text) * 1000, Microsoft.Win32.RegistryValueKind.DWord)
Else
PolicyKey.DeleteValue("MaxIdleTime", False)
End If
If Me.LogoffWhenTimoutCheckBox.Checked Then
PolicyKey.SetValue("fResetBroken", "1", Microsoft.Win32.RegistryValueKind.DWord)
Else
PolicyKey.DeleteValue("fResetBroken", False)
End If
Me.Close()
End Sub
Public Sub SetValues()
On Error Resume Next
Dim PolicyKeyString = "SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"
Dim PolicyKey = My.Computer.Registry.LocalMachine.OpenSubKey(PolicyKeyString, False)
Me.DisconnectTimeTextBox.Text = "0"
Me.IdleTimeTextBox.Text = "0"
If Val(My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList", "fDisabledAllowList", "")) = 1 Then
Me.DisableAllowListCheckBox.Checked = True
Else
Me.DisableAllowListCheckBox.Checked = False
End If
Dim MaxDisconnectionTime = -1
MaxDisconnectionTime = PolicyKey.GetValue("MaxDisconnectionTime", -1)
If Not MaxDisconnectionTime = -1 Then
Me.TimeoutDisconnectedCheckBox.Checked = True
Me.DisconnectTimeTextBox.Text = MaxDisconnectionTime / 1000
Else
Me.TimeoutDisconnectedCheckBox.Checked = False
End If
Dim MaxIdleTime = -1
MaxIdleTime = PolicyKey.GetValue("MaxIdleTime", -1)
If Not MaxIdleTime = -1 Then
Me.TimeoutIdleCheckBox.Checked = True
Me.IdleTimeTextBox.Text = MaxIdleTime / 1000
Else
Me.TimeoutIdleCheckBox.Checked = False
End If
Dim fResetBroken = PolicyKey.GetValue("fResetBroken")
If Not fResetBroken = Nothing Then
Me.LogoffWhenTimoutCheckBox.Checked = True
Else
Me.LogoffWhenTimoutCheckBox.Checked = False
End If
Dim fAllowUnlistedRemotePrograms = PolicyKey.GetValue("fAllowUnlistedRemotePrograms")
If Not fAllowUnlistedRemotePrograms = Nothing Then
Me.AllowUnlistedRemoteProgramsCheckBox.Checked = True
Else
Me.AllowUnlistedRemoteProgramsCheckBox.Checked = False
End If
If Me.TimeoutDisconnectedCheckBox.Checked = True Then
Me.DisconnectTimeTextBox.Enabled = True
Else
Me.DisconnectTimeTextBox.Enabled = False
End If
If Me.TimeoutIdleCheckBox.Checked = True Then
Me.IdleTimeTextBox.Enabled = True
Else
Me.IdleTimeTextBox.Enabled = False
End If
End Sub
Private Sub TimeoutDisconnectedCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles TimeoutDisconnectedCheckBox.CheckedChanged
If Me.TimeoutDisconnectedCheckBox.Checked = True Then
Me.DisconnectTimeTextBox.Enabled = True
Else
Me.DisconnectTimeTextBox.Enabled = False
End If
End Sub
Private Sub TimeoutIdleCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles TimeoutIdleCheckBox.CheckedChanged
If Me.TimeoutIdleCheckBox.Checked = True Then
Me.IdleTimeTextBox.Enabled = True
Else
Me.IdleTimeTextBox.Enabled = False
End If
End Sub
Private Sub CancelEditButton_Click(sender As Object, e As EventArgs) Handles CancelEditButton.Click
Me.Close()
End Sub
End Class

View File

@@ -0,0 +1,278 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppIconPicker
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppIconPicker))
Me.IconList = New System.Windows.Forms.ListView()
Me.ShortName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.Title = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.Path = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.VPath = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.RequiredCommandLine = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.CommandLineSetting = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.IconPath = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.IconIndex = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.SecurityDescriptor = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ShowInTSWA = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.BrowseButton = New System.Windows.Forms.Button()
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.IconPathTextBox = New System.Windows.Forms.TextBox()
Me.IconIndexTextBox = New System.Windows.Forms.TextBox()
Me.FileBrowserIcon = New System.Windows.Forms.OpenFileDialog()
Me.CancelEditButton = New System.Windows.Forms.Button()
Me.OKButton = New System.Windows.Forms.Button()
Me.FileTypeLabel = New System.Windows.Forms.Label()
Me.FileTypeTextBox = New System.Windows.Forms.TextBox()
Me.IconIndexLabel = New System.Windows.Forms.Label()
Me.SmallIcons = New System.Windows.Forms.ImageList(Me.components)
Me.SuspendLayout()
'
'IconList
'
Me.IconList.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ShortName, Me.Title, Me.Path, Me.VPath, Me.RequiredCommandLine, Me.CommandLineSetting, Me.IconPath, Me.IconIndex, Me.SecurityDescriptor, Me.ShowInTSWA})
Me.IconList.GridLines = True
Me.IconList.HideSelection = False
Me.IconList.LargeImageList = Me.SmallIcons
Me.IconList.Location = New System.Drawing.Point(16, 41)
Me.IconList.MultiSelect = False
Me.IconList.Name = "IconList"
Me.IconList.Size = New System.Drawing.Size(471, 143)
Me.IconList.SmallImageList = Me.SmallIcons
Me.IconList.TabIndex = 4
Me.IconList.UseCompatibleStateImageBehavior = False
'
'ShortName
'
Me.ShortName.Text = "ShortName"
Me.ShortName.Width = 200
'
'Title
'
Me.Title.Text = "Name"
'
'Path
'
Me.Path.Text = "Path"
'
'VPath
'
Me.VPath.Text = "VPath"
'
'RequiredCommandLine
'
Me.RequiredCommandLine.Text = "RequiredCommandLine"
'
'CommandLineSetting
'
Me.CommandLineSetting.Text = "CommandLineSetting"
'
'IconPath
'
Me.IconPath.Text = "IconPath"
'
'IconIndex
'
Me.IconIndex.Text = "IconIndex"
'
'SecurityDescriptor
'
Me.SecurityDescriptor.Text = "SecurityDescriptor"
'
'ShowInTSWA
'
Me.ShowInTSWA.Text = "ShowInTSWA"
'
'BrowseButton
'
Me.BrowseButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.BrowseButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.BrowseButton.ImageIndex = 0
Me.BrowseButton.ImageList = Me.SmallerIcons
Me.BrowseButton.Location = New System.Drawing.Point(14, 8)
Me.BrowseButton.Name = "BrowseButton"
Me.BrowseButton.Size = New System.Drawing.Size(82, 29)
Me.BrowseButton.TabIndex = 0
Me.BrowseButton.Text = "Browse..."
Me.BrowseButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.BrowseButton.UseVisualStyleBackColor = False
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "folder_16x16.png")
Me.SmallerIcons.Images.SetKeyName(1, "tick.ico")
Me.SmallerIcons.Images.SetKeyName(2, "cross.ico")
Me.SmallerIcons.Images.SetKeyName(3, "settings-16.ico")
'
'IconPathTextBox
'
Me.IconPathTextBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconPathTextBox.Location = New System.Drawing.Point(103, 12)
Me.IconPathTextBox.Name = "IconPathTextBox"
Me.IconPathTextBox.ReadOnly = True
Me.IconPathTextBox.Size = New System.Drawing.Size(267, 23)
Me.IconPathTextBox.TabIndex = 1
'
'IconIndexTextBox
'
Me.IconIndexTextBox.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconIndexTextBox.Location = New System.Drawing.Point(420, 12)
Me.IconIndexTextBox.Name = "IconIndexTextBox"
Me.IconIndexTextBox.ReadOnly = True
Me.IconIndexTextBox.Size = New System.Drawing.Size(67, 23)
Me.IconIndexTextBox.TabIndex = 3
Me.IconIndexTextBox.Visible = False
'
'FileBrowserIcon
'
Me.FileBrowserIcon.Filter = "Icons|*.exe;*.dll;*.ico|All files|*.*"
Me.FileBrowserIcon.Title = "Browse..."
'
'CancelEditButton
'
Me.CancelEditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CancelEditButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.CancelEditButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CancelEditButton.ImageIndex = 2
Me.CancelEditButton.ImageList = Me.SmallerIcons
Me.CancelEditButton.Location = New System.Drawing.Point(339, 190)
Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(75, 29)
Me.CancelEditButton.TabIndex = 7
Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False
'
'OKButton
'
Me.OKButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.OKButton.BackColor = System.Drawing.Color.WhiteSmoke
Me.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK
Me.OKButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.OKButton.ImageIndex = 1
Me.OKButton.ImageList = Me.SmallerIcons
Me.OKButton.Location = New System.Drawing.Point(420, 190)
Me.OKButton.Name = "OKButton"
Me.OKButton.Size = New System.Drawing.Size(67, 29)
Me.OKButton.TabIndex = 8
Me.OKButton.Text = "OK"
Me.OKButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.OKButton.UseVisualStyleBackColor = False
'
'FileTypeLabel
'
Me.FileTypeLabel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.FileTypeLabel.AutoSize = True
Me.FileTypeLabel.Location = New System.Drawing.Point(12, 197)
Me.FileTypeLabel.Name = "FileTypeLabel"
Me.FileTypeLabel.Size = New System.Drawing.Size(66, 15)
Me.FileTypeLabel.TabIndex = 5
Me.FileTypeLabel.Text = "File type: ."
Me.FileTypeLabel.Visible = False
'
'FileTypeTextBox
'
Me.FileTypeTextBox.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.FileTypeTextBox.Location = New System.Drawing.Point(76, 194)
Me.FileTypeTextBox.Name = "FileTypeTextBox"
Me.FileTypeTextBox.Size = New System.Drawing.Size(80, 23)
Me.FileTypeTextBox.TabIndex = 6
Me.FileTypeTextBox.Text = "xyz"
Me.FileTypeTextBox.Visible = False
'
'IconIndexLabel
'
Me.IconIndexLabel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.IconIndexLabel.AutoSize = True
Me.IconIndexLabel.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.IconIndexLabel.Location = New System.Drawing.Point(376, 15)
Me.IconIndexLabel.Name = "IconIndexLabel"
Me.IconIndexLabel.Size = New System.Drawing.Size(38, 15)
Me.IconIndexLabel.TabIndex = 2
Me.IconIndexLabel.Text = "Index:"
Me.IconIndexLabel.Visible = False
'
'SmallIcons
'
Me.SmallIcons.ImageStream = CType(resources.GetObject("SmallIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallIcons.Images.SetKeyName(0, "smallicons.ico")
'
'RemoteAppIconPicker
'
Me.AcceptButton = Me.OKButton
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton
Me.ClientSize = New System.Drawing.Size(499, 231)
Me.Controls.Add(Me.IconIndexLabel)
Me.Controls.Add(Me.CancelEditButton)
Me.Controls.Add(Me.OKButton)
Me.Controls.Add(Me.IconIndexTextBox)
Me.Controls.Add(Me.IconPathTextBox)
Me.Controls.Add(Me.BrowseButton)
Me.Controls.Add(Me.IconList)
Me.Controls.Add(Me.FileTypeTextBox)
Me.Controls.Add(Me.FileTypeLabel)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.MinimumSize = New System.Drawing.Size(515, 270)
Me.Name = "RemoteAppIconPicker"
Me.Text = "RemoteAppIconPicker"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents IconList As System.Windows.Forms.ListView
Friend WithEvents ShortName As System.Windows.Forms.ColumnHeader
Friend WithEvents Title As System.Windows.Forms.ColumnHeader
Friend WithEvents Path As System.Windows.Forms.ColumnHeader
Friend WithEvents VPath As System.Windows.Forms.ColumnHeader
Friend WithEvents RequiredCommandLine As System.Windows.Forms.ColumnHeader
Friend WithEvents CommandLineSetting As System.Windows.Forms.ColumnHeader
Friend WithEvents IconPath As System.Windows.Forms.ColumnHeader
Friend WithEvents IconIndex As System.Windows.Forms.ColumnHeader
Friend WithEvents SecurityDescriptor As System.Windows.Forms.ColumnHeader
Friend WithEvents ShowInTSWA As System.Windows.Forms.ColumnHeader
Friend WithEvents BrowseButton As System.Windows.Forms.Button
Friend WithEvents IconPathTextBox As System.Windows.Forms.TextBox
Friend WithEvents IconIndexTextBox As System.Windows.Forms.TextBox
Friend WithEvents FileBrowserIcon As System.Windows.Forms.OpenFileDialog
Friend WithEvents CancelEditButton As System.Windows.Forms.Button
Friend WithEvents OKButton As System.Windows.Forms.Button
Friend WithEvents FileTypeLabel As System.Windows.Forms.Label
Friend WithEvents FileTypeTextBox As System.Windows.Forms.TextBox
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents IconIndexLabel As System.Windows.Forms.Label
Friend WithEvents SmallIcons As System.Windows.Forms.ImageList
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,158 @@
Public Class RemoteAppIconPicker
Dim NoValidate As Boolean = False
Public Function PickIcon(DefaultPath As String, Optional DefaultIndex As Integer = 0) As RemoteAppLib.IconSelection
Me.FileTypeLabel.Visible = False
Me.FileTypeTextBox.Visible = False
Me.IconIndexLabel.Visible = False
Me.IconIndexTextBox.Visible = False
Me.Text = "Select Icon"
Me.IconPathTextBox.Text = DefaultPath
Me.IconIndexTextBox.Text = DefaultIndex.ToString
LoadIcons()
Dim IconPick As New RemoteAppLib.IconSelection
If Me.ShowDialog() = Windows.Forms.DialogResult.OK Then
IconPick.IconPath = Me.IconPathTextBox.Text
IconPick.IconIndex = Me.IconIndexTextBox.Text
End If
Return IconPick
Me.Dispose()
End Function
Public Function ManageFTA(DefaultPath As String, Optional DefaultIndex As Integer = 0, Optional FileType As String = ".xyz", Optional IsEdit As Boolean = False) As RemoteAppLib.FileTypeAssociation
Dim FTA As New RemoteAppLib.FileTypeAssociation
Me.FileTypeLabel.Visible = True
Me.FileTypeTextBox.Visible = True
Me.IconIndexLabel.Visible = True
Me.IconIndexTextBox.Visible = True
Me.IconIndexTextBox.ReadOnly = True
If IsEdit = True Then
FileTypeTextBox.ReadOnly = True
Else
FileTypeTextBox.ReadOnly = False
End If
Me.Text = "File Type"
Me.FileTypeTextBox.Text = FileType
Me.IconPathTextBox.Text = DefaultPath
Me.IconIndexTextBox.Text = DefaultIndex
LoadIcons()
If Me.ShowDialog = Windows.Forms.DialogResult.OK Then
FTA.Extension = Me.FileTypeTextBox.Text
FTA.IconPath = Me.IconPathTextBox.Text
FTA.IconIndex = Me.IconIndexTextBox.Text
End If
Me.Dispose()
Return FTA
End Function
Private Function LoadIcons() As Boolean
Me.IconList.Clear()
Me.SmallIcons.Images.Clear()
Dim IconError As Boolean = False
Me.IconIndexLabel.Visible = True
Me.IconIndexTextBox.Visible = True
If My.Computer.FileSystem.FileExists(Me.IconPathTextBox.Text) Then
Dim mIcon As New IconLib.MultiIcon
Dim IconIndex As Integer = 0
Try
mIcon.Load(Me.IconPathTextBox.Text)
Me.IconIndexTextBox.ReadOnly = True
Catch Ex As Exception
IconError = True
NoValidate = True
Me.OKButton.Enabled = True
MessageBox.Show("There was an error loading icons from:" & vbCrLf & Me.IconPathTextBox.Text & vbCrLf & "Icons may still be usable, but you can not select one using the icon picker.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Me.IconIndexTextBox.Text = "0"
Me.IconIndexTextBox.ReadOnly = False
End Try
If Not IconError Then
NoValidate = False
For Each sIcon In mIcon
Dim IconKey = IconIndex
Dim IconItem As New ListViewItem(IconKey)
Dim fiImage As IconLib.IconImage = sIcon.Item(0)
For Each iImage In sIcon
If iImage.Icon.Width = 32 Then
Select Case iImage.ColorsInPalette
Case 0
fiImage = iImage
Case Else
If iImage.ColorsInPalette > fiImage.ColorsInPalette Then fiImage = iImage
End Select
If iImage.ColorsInPalette = 0 Then fiImage = iImage
End If
Next
Dim TheBitmap = fiImage.Icon.ToBitmap
Me.SmallIcons.Images.Add(IconKey, TheBitmap)
IconItem.ImageKey = IconKey
IconList.Items.Add(IconItem)
IconIndex += 1
Next
If Not NoValidate Then Me.OKButton.Enabled = False
End If
End If
Return IconError
End Function
Private Sub IconList_SelectedIndexChanged(sender As Object, e As EventArgs) Handles IconList.SelectedIndexChanged
CheckSelection()
End Sub
Private Sub CheckSelection()
If Me.IconList.SelectedItems.Count > 0 Then
'something is selected
If Not FileTypeTextBox.Text = "" Then Me.OKButton.Enabled = True
Me.IconIndexTextBox.Text = Me.IconList.SelectedItems(0).Text
Else
'nothing is selected
If Not NoValidate Then Me.OKButton.Enabled = False
Me.IconIndexTextBox.Text = "0"
End If
End Sub
Private Sub BrowseButton_Click(sender As Object, e As EventArgs) Handles BrowseButton.Click
If My.Computer.FileSystem.FileExists(Me.IconPathTextBox.Text) Then _
Me.FileBrowserIcon.InitialDirectory = My.Computer.FileSystem.GetParentPath(Me.IconPathTextBox.Text)
If FileBrowserIcon.ShowDialog() = Windows.Forms.DialogResult.OK Then
Me.IconPathTextBox.Text = FileBrowserIcon.FileName
LoadIcons()
End If
End Sub
Private Sub FileTypeTextBox_TextChanged(sender As Object, e As EventArgs) Handles FileTypeTextBox.TextChanged
ValidateFileType(FileTypeTextBox)
If Me.FileTypeTextBox.Text = "" Then Me.OKButton.Enabled = False Else If Me.IconList.SelectedItems.Count = 1 Then Me.OKButton.Enabled = True
End Sub
Private Sub IconIndexTextBox_TextChanged(sender As Object, e As EventArgs) Handles IconIndexTextBox.TextChanged
ValidateInteger(IconIndexTextBox)
End Sub
End Class

View File

@@ -0,0 +1,391 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class RemoteAppMainWindow
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RemoteAppMainWindow))
Me.AppList = New System.Windows.Forms.ListView()
Me.ShortName = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.Title = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.Path = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.VPath = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.RequiredCommandLine = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.CommandLineSetting = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.IconPath = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.IconIndex = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.SecurityDescriptor = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.ShowInTSWA = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader)
Me.SmallIcons = New System.Windows.Forms.ImageList(Me.components)
Me.SmallerIcons = New System.Windows.Forms.ImageList(Me.components)
Me.NoAppsLabel = New System.Windows.Forms.Label()
Me.CreateButton = New System.Windows.Forms.Button()
Me.DeleteButton = New System.Windows.Forms.Button()
Me.EditButton = New System.Windows.Forms.Button()
Me.CreateClientConnection = New System.Windows.Forms.Button()
Me.ToolsMenuStrip = New System.Windows.Forms.MenuStrip()
Me.FileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ExitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.HostOptionsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.HelpToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.WebsiteToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.AboutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.RemoveUnusedFileTypeAssociationsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.NewRemoteAppadvancedToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolsMenuStrip.SuspendLayout()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'AppList
'
Me.AppList.Alignment = System.Windows.Forms.ListViewAlignment.[Default]
Me.AppList.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.AppList.BackColor = System.Drawing.Color.White
Me.AppList.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.AppList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ShortName, Me.Title, Me.Path, Me.VPath, Me.RequiredCommandLine, Me.CommandLineSetting, Me.IconPath, Me.IconIndex, Me.SecurityDescriptor, Me.ShowInTSWA})
Me.AppList.GridLines = True
Me.AppList.HideSelection = False
Me.AppList.LargeImageList = Me.SmallIcons
Me.AppList.Location = New System.Drawing.Point(12, 28)
Me.AppList.MultiSelect = False
Me.AppList.Name = "AppList"
Me.AppList.Size = New System.Drawing.Size(423, 189)
Me.AppList.SmallImageList = Me.SmallIcons
Me.AppList.TabIndex = 1
Me.AppList.TileSize = New System.Drawing.Size(200, 36)
Me.AppList.UseCompatibleStateImageBehavior = False
Me.AppList.View = System.Windows.Forms.View.Tile
'
'ShortName
'
Me.ShortName.Text = "ShortName"
Me.ShortName.Width = 200
'
'Title
'
Me.Title.Text = "Name"
'
'Path
'
Me.Path.Text = "Path"
'
'VPath
'
Me.VPath.Text = "VPath"
'
'RequiredCommandLine
'
Me.RequiredCommandLine.Text = "RequiredCommandLine"
'
'CommandLineSetting
'
Me.CommandLineSetting.Text = "CommandLineSetting"
'
'IconPath
'
Me.IconPath.Text = "IconPath"
'
'IconIndex
'
Me.IconIndex.Text = "IconIndex"
'
'SecurityDescriptor
'
Me.SecurityDescriptor.Text = "SecurityDescriptor"
'
'ShowInTSWA
'
Me.ShowInTSWA.Text = "ShowInTSWA"
'
'SmallIcons
'
Me.SmallIcons.ImageStream = CType(resources.GetObject("SmallIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallIcons.Images.SetKeyName(0, "smallicons.ico")
'
'SmallerIcons
'
Me.SmallerIcons.ImageStream = CType(resources.GetObject("SmallerIcons.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.SmallerIcons.TransparentColor = System.Drawing.Color.Transparent
Me.SmallerIcons.Images.SetKeyName(0, "tools_16x16.png")
Me.SmallerIcons.Images.SetKeyName(1, "help_16x16.png")
Me.SmallerIcons.Images.SetKeyName(2, "folder_16x16.png")
Me.SmallerIcons.Images.SetKeyName(3, "msi small.ico")
Me.SmallerIcons.Images.SetKeyName(4, "properties.ico")
Me.SmallerIcons.Images.SetKeyName(5, "plus.ico")
Me.SmallerIcons.Images.SetKeyName(6, "minus.ico")
'
'NoAppsLabel
'
Me.NoAppsLabel.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.NoAppsLabel.ForeColor = System.Drawing.Color.DarkGray
Me.NoAppsLabel.Location = New System.Drawing.Point(12, 91)
Me.NoAppsLabel.Name = "NoAppsLabel"
Me.NoAppsLabel.Size = New System.Drawing.Size(410, 58)
Me.NoAppsLabel.TabIndex = 0
Me.NoAppsLabel.Text = "There are no RemoteApps hosted on this computer." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Click + to add one."
Me.NoAppsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
Me.NoAppsLabel.Visible = False
'
'CreateButton
'
Me.CreateButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.CreateButton.AutoSize = True
Me.CreateButton.BackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatAppearance.BorderSize = 0
Me.CreateButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.CreateButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.CreateButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CreateButton.ImageIndex = 5
Me.CreateButton.ImageList = Me.SmallerIcons
Me.CreateButton.Location = New System.Drawing.Point(12, 227)
Me.CreateButton.Name = "CreateButton"
Me.CreateButton.Size = New System.Drawing.Size(22, 22)
Me.CreateButton.TabIndex = 2
Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateButton.UseVisualStyleBackColor = False
'
'DeleteButton
'
Me.DeleteButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.DeleteButton.AutoSize = True
Me.DeleteButton.BackColor = System.Drawing.Color.Transparent
Me.DeleteButton.Enabled = False
Me.DeleteButton.FlatAppearance.BorderSize = 0
Me.DeleteButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.DeleteButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.DeleteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.DeleteButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.DeleteButton.ImageIndex = 6
Me.DeleteButton.ImageList = Me.SmallerIcons
Me.DeleteButton.Location = New System.Drawing.Point(40, 227)
Me.DeleteButton.Name = "DeleteButton"
Me.DeleteButton.Size = New System.Drawing.Size(22, 22)
Me.DeleteButton.TabIndex = 3
Me.DeleteButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.DeleteButton.UseVisualStyleBackColor = False
'
'EditButton
'
Me.EditButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.EditButton.AutoSize = True
Me.EditButton.BackColor = System.Drawing.Color.Transparent
Me.EditButton.Enabled = False
Me.EditButton.FlatAppearance.BorderSize = 0
Me.EditButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent
Me.EditButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent
Me.EditButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.EditButton.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.EditButton.ForeColor = System.Drawing.SystemColors.ControlText
Me.EditButton.ImageIndex = 4
Me.EditButton.ImageList = Me.SmallerIcons
Me.EditButton.Location = New System.Drawing.Point(68, 227)
Me.EditButton.Name = "EditButton"
Me.EditButton.Size = New System.Drawing.Size(22, 22)
Me.EditButton.TabIndex = 4
Me.EditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.EditButton.UseVisualStyleBackColor = False
'
'CreateClientConnection
'
Me.CreateClientConnection.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.CreateClientConnection.AutoSize = True
Me.CreateClientConnection.BackColor = System.Drawing.Color.WhiteSmoke
Me.CreateClientConnection.Enabled = False
Me.CreateClientConnection.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CreateClientConnection.ImageIndex = 3
Me.CreateClientConnection.ImageList = Me.SmallerIcons
Me.CreateClientConnection.Location = New System.Drawing.Point(239, 224)
Me.CreateClientConnection.Name = "CreateClientConnection"
Me.CreateClientConnection.Size = New System.Drawing.Size(183, 29)
Me.CreateClientConnection.TabIndex = 6
Me.CreateClientConnection.Text = "Create Client Connection..."
Me.CreateClientConnection.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateClientConnection.UseVisualStyleBackColor = False
'
'ToolsMenuStrip
'
Me.ToolsMenuStrip.AllowMerge = False
Me.ToolsMenuStrip.AutoSize = False
Me.ToolsMenuStrip.BackColor = System.Drawing.Color.Transparent
Me.ToolsMenuStrip.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileToolStripMenuItem, Me.ToolsToolStripMenuItem, Me.HelpToolStripMenuItem})
Me.ToolsMenuStrip.Location = New System.Drawing.Point(0, 0)
Me.ToolsMenuStrip.Name = "ToolsMenuStrip"
Me.ToolsMenuStrip.ShowItemToolTips = True
Me.ToolsMenuStrip.Size = New System.Drawing.Size(434, 24)
Me.ToolsMenuStrip.TabIndex = 5
'
'FileToolStripMenuItem
'
Me.FileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewRemoteAppadvancedToolStripMenuItem, Me.ToolStripSeparator2, Me.ExitToolStripMenuItem})
Me.FileToolStripMenuItem.Name = "FileToolStripMenuItem"
Me.FileToolStripMenuItem.Size = New System.Drawing.Size(37, 20)
Me.FileToolStripMenuItem.Text = "File"
'
'ExitToolStripMenuItem
'
Me.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem"
Me.ExitToolStripMenuItem.Size = New System.Drawing.Size(92, 22)
Me.ExitToolStripMenuItem.Text = "Exit"
'
'ToolsToolStripMenuItem
'
Me.ToolsToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.HostOptionsToolStripMenuItem, Me.ToolStripSeparator3, Me.RemoveUnusedFileTypeAssociationsToolStripMenuItem})
Me.ToolsToolStripMenuItem.Name = "ToolsToolStripMenuItem"
Me.ToolsToolStripMenuItem.Size = New System.Drawing.Size(94, 20)
Me.ToolsToolStripMenuItem.Text = "&Tools"
'
'HostOptionsToolStripMenuItem
'
Me.HostOptionsToolStripMenuItem.Name = "HostOptionsToolStripMenuItem"
Me.HostOptionsToolStripMenuItem.Size = New System.Drawing.Size(280, 22)
Me.HostOptionsToolStripMenuItem.Text = "Host Options..."
'
'HelpToolStripMenuItem
'
Me.HelpToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.WebsiteToolStripMenuItem, Me.ToolStripSeparator1, Me.AboutToolStripMenuItem})
Me.HelpToolStripMenuItem.Name = "HelpToolStripMenuItem"
Me.HelpToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
Me.HelpToolStripMenuItem.Text = "Help"
'
'WebsiteToolStripMenuItem
'
Me.WebsiteToolStripMenuItem.Name = "WebsiteToolStripMenuItem"
Me.WebsiteToolStripMenuItem.Size = New System.Drawing.Size(116, 22)
Me.WebsiteToolStripMenuItem.Text = "Website"
'
'ToolStripSeparator1
'
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
Me.ToolStripSeparator1.Size = New System.Drawing.Size(113, 6)
'
'AboutToolStripMenuItem
'
Me.AboutToolStripMenuItem.Name = "AboutToolStripMenuItem"
Me.AboutToolStripMenuItem.Size = New System.Drawing.Size(116, 22)
Me.AboutToolStripMenuItem.Text = "About..."
'
'PictureBox1
'
Me.PictureBox1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.PictureBox1.Location = New System.Drawing.Point(-1, 27)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(435, 191)
Me.PictureBox1.TabIndex = 7
Me.PictureBox1.TabStop = False
'
'RemoveUnusedFileTypeAssociationsToolStripMenuItem
'
Me.RemoveUnusedFileTypeAssociationsToolStripMenuItem.Name = "RemoveUnusedFileTypeAssociationsToolStripMenuItem"
Me.RemoveUnusedFileTypeAssociationsToolStripMenuItem.Size = New System.Drawing.Size(280, 22)
Me.RemoveUnusedFileTypeAssociationsToolStripMenuItem.Text = "Remove unused file type associations..."
'
'NewRemoteAppadvancedToolStripMenuItem
'
Me.NewRemoteAppadvancedToolStripMenuItem.Name = "NewRemoteAppadvancedToolStripMenuItem"
Me.NewRemoteAppadvancedToolStripMenuItem.Size = New System.Drawing.Size(235, 22)
Me.NewRemoteAppadvancedToolStripMenuItem.Text = "New RemoteApp (advanced)..."
'
'ToolStripSeparator2
'
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
Me.ToolStripSeparator2.Size = New System.Drawing.Size(232, 6)
'
'ToolStripSeparator3
'
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
Me.ToolStripSeparator3.Size = New System.Drawing.Size(277, 6)
'
'RemoteAppMainWindow
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(434, 261)
Me.Controls.Add(Me.NoAppsLabel)
Me.Controls.Add(Me.CreateClientConnection)
Me.Controls.Add(Me.CreateButton)
Me.Controls.Add(Me.DeleteButton)
Me.Controls.Add(Me.EditButton)
Me.Controls.Add(Me.ToolsMenuStrip)
Me.Controls.Add(Me.AppList)
Me.Controls.Add(Me.PictureBox1)
Me.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MainMenuStrip = Me.ToolsMenuStrip
Me.MinimumSize = New System.Drawing.Size(450, 300)
Me.Name = "RemoteAppMainWindow"
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show
Me.Text = "RemoteApp Tool"
Me.ToolsMenuStrip.ResumeLayout(False)
Me.ToolsMenuStrip.PerformLayout()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents AppList As System.Windows.Forms.ListView
Friend WithEvents ShortName As System.Windows.Forms.ColumnHeader
Friend WithEvents Title As System.Windows.Forms.ColumnHeader
Friend WithEvents Path As System.Windows.Forms.ColumnHeader
Friend WithEvents VPath As System.Windows.Forms.ColumnHeader
Friend WithEvents RequiredCommandLine As System.Windows.Forms.ColumnHeader
Friend WithEvents CommandLineSetting As System.Windows.Forms.ColumnHeader
Friend WithEvents IconPath As System.Windows.Forms.ColumnHeader
Friend WithEvents IconIndex As System.Windows.Forms.ColumnHeader
Friend WithEvents SecurityDescriptor As System.Windows.Forms.ColumnHeader
Friend WithEvents ShowInTSWA As System.Windows.Forms.ColumnHeader
Friend WithEvents SmallIcons As System.Windows.Forms.ImageList
Friend WithEvents CreateButton As System.Windows.Forms.Button
Friend WithEvents SmallerIcons As System.Windows.Forms.ImageList
Friend WithEvents DeleteButton As System.Windows.Forms.Button
Friend WithEvents EditButton As System.Windows.Forms.Button
Friend WithEvents NoAppsLabel As System.Windows.Forms.Label
Friend WithEvents CreateClientConnection As System.Windows.Forms.Button
Friend WithEvents ToolsMenuStrip As System.Windows.Forms.MenuStrip
Friend WithEvents ToolsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents HostOptionsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents FileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ExitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents HelpToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents AboutToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents WebsiteToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents RemoveUnusedFileTypeAssociationsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents NewRemoteAppadvancedToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator
Friend WithEvents ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,167 @@
Imports System.Runtime.InteropServices
Imports System.ComponentModel
Imports RemoteAppLib
Public Class RemoteAppMainWindow
Private Sub RemoteAppMainWindow_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
If Not Me.WindowState = FormWindowState.Maximized Then
My.Settings.MainWindowWidth = Me.Width
My.Settings.MainWindowHeight = Me.Height
End If
End Sub
Private Sub RemoteAppMainWindow_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sra As New SystemRemoteApps
sra.Init()
Try
TestIconLib()
Catch ex As System.IO.FileNotFoundException
MessageBox.Show("IconLib.dll is unavailable. Please add it to the RemoteApp Tool folder.")
End
End Try
Me.Text = My.Application.Info.Title & " " & My.Application.Info.Version.ToString & " (" & System.Net.Dns.GetHostName & ")"
If Not My.Computer.Keyboard.ShiftKeyDown Then
If Not My.Settings.MainWindowWidth < Me.MinimumSize.Width Then Me.Width = My.Settings.MainWindowWidth
If Not My.Settings.MainWindowHeight < Me.MinimumSize.Height Then Me.Height = My.Settings.MainWindowHeight
End If
HelpSystem.SetupTips(Me)
AddSysMenuItems()
ReloadApps()
End Sub
Public Sub ReloadApps()
Me.AppList.Clear()
Dim SystemApps As New SystemRemoteApps
Dim Apps As New RemoteAppCollection
Apps = SystemApps.GetAll
For Each App As RemoteApp In Apps
SmallIcons.Images.RemoveByKey(App.Name)
Dim TheBitmap = GetAppBitmap(App.Name)
Dim AppItem As New ListViewItem(App.Name)
AppItem.ToolTipText = App.FullName
AppItem.ImageIndex = 0
Me.SmallIcons.Images.Add(App.Name, TheBitmap)
AppItem.ImageKey = App.Name
AppList.Items.Add(AppItem)
Next
If Apps.Count = 0 Then
NoAppsLabel.Visible = True
Else
NoAppsLabel.Visible = False
End If
EditButton.Enabled = False
DeleteButton.Enabled = False
CreateClientConnection.Enabled = False
End Sub
Private Sub AppList_DoubleClick(sender As Object, e As EventArgs) Handles AppList.DoubleClick
If Me.AppList.SelectedItems.Count = 1 Then
EditRemoteApp(Me.AppList.SelectedItems(0).Text)
End If
End Sub
Private Sub AppList_SelectedIndexChanged(sender As Object, e As EventArgs) Handles AppList.SelectedIndexChanged
If AppList.SelectedItems.Count = 1 Then
Me.EditButton.Enabled = True
Me.DeleteButton.Enabled = True
CreateClientConnection.Enabled = True
Else
Me.EditButton.Enabled = False
Me.DeleteButton.Enabled = False
Me.CreateClientConnection.Enabled = False
End If
End Sub
Private Sub EditButton_Click(sender As Object, e As EventArgs) Handles EditButton.Click
If Me.AppList.SelectedItems.Count = 1 Then
EditRemoteApp(Me.AppList.SelectedItems(0).Text)
End If
End Sub
Private Sub EditRemoteApp(AppName As String)
Dim sra As New SystemRemoteApps
RemoteAppEditWindow.EditRemoteApp(sra.GetApp(AppName))
End Sub
Private Sub DeleteButton_Click(sender As Object, e As EventArgs) Handles DeleteButton.Click
DeleteRemoteApp(AppList.SelectedItems(0).Text)
ReloadApps()
End Sub
Private Sub DeleteRemoteApp(ByVal AppName As String)
If MessageBox.Show("Are you sure you want to remove " & AppName & "?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sra As New SystemRemoteApps
sra.DeleteApp(AppName)
End If
End Sub
Private Sub CreateButton_Click(sender As Object, e As EventArgs) Handles CreateButton.Click
RemoteAppEditWindow.CreateRemoteApp()
ReloadApps()
End Sub
'System Menu Code (for about box)
Private Declare Function AppendMenu Lib "user32.dll" Alias "AppendMenuA" (ByVal hMenu As IntPtr, ByVal uFlags As Int32, ByVal uIDNewItem As IntPtr, ByVal lpNewItem As String) As Boolean
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Private Const MF_STRING As Integer = &H0
Private Const MF_SEPARATOR As Integer = &H800
Private Const WM_SYSCOMMAND = &H112
Private Sub AddSysMenuItems()
'Get the System Menus Handle.
Dim hSysMenu As IntPtr = GetSystemMenu(Me.Handle, False)
'Add a standard Separator Item.
AppendMenu(hSysMenu, MF_SEPARATOR, 1000, Nothing)
'Add an About Menu Item.
AppendMenu(hSysMenu, MF_STRING, 1001, "About...")
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If (m.Msg = WM_SYSCOMMAND) Then
Select Case m.WParam.ToInt32
Case 1001
RemoteAppAboutWindow.ShowDialog()
End Select
End If
End Sub
Private Sub CreateClientConnection_Click(sender As Object, e As EventArgs) Handles CreateClientConnection.Click
Dim sra As New SystemRemoteApps
RemoteAppCreateClientConnection.CreateClientConnection(sra.GetApp(Me.AppList.SelectedItems(0).Text))
End Sub
Private Sub HostOptionsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HostOptionsToolStripMenuItem.Click
RemoteAppHostOptions.SetValues()
RemoteAppHostOptions.ShowDialog()
End Sub
Private Sub AboutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AboutToolStripMenuItem.Click
RemoteAppAboutWindow.ShowDialog()
End Sub
Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
End
End Sub
Private Sub WebsiteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles WebsiteToolStripMenuItem.Click
System.Diagnostics.Process.Start("http://www.kimknight.net/remoteapptool")
End Sub
Private Sub RemoveUnusedFileTypeAssociationsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RemoveUnusedFileTypeAssociationsToolStripMenuItem.Click
LocalFtaModule.RemoveUnusedFTAs()
End Sub
Private Sub NewRemoteAppadvancedToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NewRemoteAppadvancedToolStripMenuItem.Click
RemoteAppEditWindow.CreateRemoteApp(True)
ReloadApps()
End Sub
End Class

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel node will disable file and registry virtualization.
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of all Windows versions that this application is designed to work with.
Windows will automatically select the most compatible environment.-->
<!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
<!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
<!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
</application>
</compatibility>
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!-- <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>-->
</asmv1:assembly>