diff --git a/ProxySU/MainWindow.xaml b/ProxySU/MainWindow.xaml
index cd5bdeac..c5a02987 100644
--- a/ProxySU/MainWindow.xaml
+++ b/ProxySU/MainWindow.xaml
@@ -149,6 +149,7 @@
                                    
                       
                                 </Grid.RowDefinitions>
+                                <Button x:Name="ButtonUpdateTrojan" Content="检测/升级Trojan版本" Grid.Column="0" Grid.Row="0" Margin="5" Click="ButtonUpdateTrojan_Click"></Button>
                                 <Button x:Name="ButtonTrojanTemplate" Content="Trojan设置" Grid.Column="1" Grid.Row="0" Margin="5" Click="ButtonTrojanTemplate_Click"/>
                                 <TextBlock Text="Trojan参数设置" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Center"></TextBlock>
                                
@@ -221,13 +222,13 @@
                                 <Grid Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="4" Grid.RowSpan="2">
                                     <Grid>
                                         <Grid.ColumnDefinitions>
-                                            <ColumnDefinition Width="0.5*"></ColumnDefinition>
+                                            <ColumnDefinition Width="0.55*"></ColumnDefinition>
                                             <ColumnDefinition></ColumnDefinition>
                                             <ColumnDefinition Width="0.5*"></ColumnDefinition>
-                                            <ColumnDefinition Width="0.5*"></ColumnDefinition>
+                                            <ColumnDefinition Width="0.55*"></ColumnDefinition>
                                             <ColumnDefinition ></ColumnDefinition>
                                             <ColumnDefinition Width="0.5*"></ColumnDefinition>
-                                            <ColumnDefinition Width="0.5*"></ColumnDefinition>
+                                            <ColumnDefinition Width="0.55*"></ColumnDefinition>
                                             <ColumnDefinition></ColumnDefinition>
                                             <ColumnDefinition Width="0.5*"></ColumnDefinition>
                                         </Grid.ColumnDefinitions>
@@ -384,7 +385,7 @@
                             <RowDefinition></RowDefinition>
                             <RowDefinition></RowDefinition>
                         </Grid.RowDefinitions>
-                        <TextBlock Text="程序版本:1.6.1" Grid.Column="0" Grid.Row="0"></TextBlock>
+                        <TextBlock Text="程序版本:1.6.2" Grid.Column="0" Grid.Row="0"></TextBlock>
                         
                     </Grid>
                    
diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs
index bb5d3eea..797e20cb 100644
--- a/ProxySU/MainWindow.xaml.cs
+++ b/ProxySU/MainWindow.xaml.cs
@@ -2609,7 +2609,7 @@ private void ButtonUpdateV2ray_Click(object sender, RoutedEventArgs e)
             thread.SetApartmentState(ApartmentState.STA);
             thread.Start();
         }
-        //升级主程序
+        //升级V2ray主程序
         private void UpdateV2ray(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar)
         {
             string currentStatus = "正在登录远程主机......";
@@ -2770,6 +2770,195 @@ private void UpdateV2ray(ConnectionInfo connectionInfo, TextBlock textBlockName,
             #endregion
 
         }
+        //检测升级远程主机Trojan版本
+        private void ButtonUpdateTrojan_Click(object sender, RoutedEventArgs e)
+        {
+            ConnectionInfo connectionInfo = GenerateConnectionInfo();
+            if (connectionInfo == null)
+            {
+                MessageBox.Show("远程主机连接信息有误,请检查");
+                return;
+            }
+
+            Thread thread = new Thread(() => UpdateTojan(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing));
+            thread.SetApartmentState(ApartmentState.STA);
+            thread.Start();
+        }
+        //升级Trojan主程序
+        private void UpdateTojan(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar)
+        {
+            string currentStatus = "正在登录远程主机......";
+            Action<TextBlock, ProgressBar, string> updateAction = new Action<TextBlock, ProgressBar, string>(UpdateTextBlock);
+            textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+
+            try
+            {
+                #region 主机指纹,暂未启用
+                //byte[] expectedFingerPrint = new byte[] {
+                //                                0x66, 0x31, 0xaf, 0x00, 0x54, 0xb9, 0x87, 0x31,
+                //                                0xff, 0x58, 0x1c, 0x31, 0xb1, 0xa2, 0x4c, 0x6b
+                //                            };
+                #endregion
+                using (var client = new SshClient(connectionInfo))
+
+                {
+                    #region ssh登录验证主机指纹代码块,暂未启用
+                    //    client.HostKeyReceived += (sender, e) =>
+                    //    {
+                    //        if (expectedFingerPrint.Length == e.FingerPrint.Length)
+                    //        {
+                    //            for (var i = 0; i < expectedFingerPrint.Length; i++)
+                    //            {
+                    //                if (expectedFingerPrint[i] != e.FingerPrint[i])
+                    //                {
+                    //                    e.CanTrust = false;
+                    //                    break;
+                    //                }
+                    //            }
+                    //        }
+                    //        else
+                    //        {
+                    //            e.CanTrust = false;
+                    //        }
+                    //    };
+                    #endregion
+
+                    client.Connect();
+                    if (client.IsConnected == true)
+                    {
+                        currentStatus = "主机登录成功";
+                        textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                        Thread.Sleep(1000);
+                    }
+                    //检测远程主机V2ray版本
+                    currentStatus = "检测远程主机Trojan版本......";
+                    textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                    Thread.Sleep(1000);
+
+                    string cmdTestTrojanInstalled = @"find / -name trojan";
+                    //MessageBox.Show(cmdTestV2rayInstalled);
+                    string resultCmdTestTrojanInstalled = client.RunCommand(cmdTestTrojanInstalled).Result;
+                    //client.Disconnect();
+                    //MessageBox.Show(resultCmdTestV2rayInstalled);
+                    if (resultCmdTestTrojanInstalled.Contains("/usr/local/bin/trojan") == false)
+                    {
+                        MessageBoxResult messageBoxResult = MessageBox.Show("远程主机未安装Trojan!");
+
+                        currentStatus = "未安装Trojan,退出";
+                        textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                        Thread.Sleep(1000);
+                        return;
+
+                    }
+                    string sshcmd;
+                    sshcmd = @"echo ""$(/usr/local/bin/trojan -v 2>&1)"" | head -n 1 | cut -d "" "" -f4";
+                    //MessageBox.Show(sshcmd);
+                    string trojanCurrentVersion = client.RunCommand(sshcmd).Result;//不含字母v
+                    //MessageBox.Show(v2rayCurrentVersion);
+
+                    sshcmd = @"curl -fsSL https://api.github.com/repos/trojan-gfw/trojan/releases/latest | grep tag_name | sed -E 's/.*""v(.*)"".*/\1/'";
+                    //MessageBox.Show(sshcmd);
+
+                    string trojanNewVersion = client.RunCommand(sshcmd).Result;//不包含字母v
+                    //MessageBox.Show(v2rayNewVersion);
+                    if (trojanNewVersion.Equals(trojanCurrentVersion) == false)
+                    {
+                        MessageBoxResult messageBoxResult = MessageBox.Show($"远程主机当前版本为:v{trojanCurrentVersion}\n最新版本为:{trojanNewVersion}\n是否升级为最新版本?", "", MessageBoxButton.YesNo, MessageBoxImage.Question);
+                        if (messageBoxResult == MessageBoxResult.No)
+                        {
+                            currentStatus = "升级取消,退出";
+                            textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                            Thread.Sleep(1000);
+                            return;
+                        }
+                        else
+                        {
+                            currentStatus = "正在升级Trojan到最新版本......";
+                            textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                            Thread.Sleep(1000);
+
+                            //备份配置文件
+                            sshcmd = @"mv /usr/local/etc/trojan/config.json /usr/local/etc/trojan/config.json.bak";
+                            client.RunCommand(sshcmd);
+                            //升级Trojan主程序
+                            client.RunCommand("curl -o /tmp/trojan-quickstart.sh https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh");
+                            client.RunCommand("yes | bash /tmp/trojan-quickstart.sh");
+                            sshcmd = @"echo ""$(/usr/local/bin/trojan -v 2>&1)"" | head -n 1 | cut -d "" "" -f4";
+                            //MessageBox.Show(sshcmd);
+                            trojanCurrentVersion = client.RunCommand(sshcmd).Result;//不含字母v
+                            if (trojanNewVersion.Equals(trojanCurrentVersion) == true)
+                            {
+                                //恢复原来的配置文件备份
+                                sshcmd = @"rm -f /usr/local/etc/trojan/config.json";
+                                client.RunCommand(sshcmd);
+                                sshcmd = @"mv /usr/local/etc/trojan/config.json.bak /usr/local/etc/trojan/config.json";
+                                client.RunCommand(sshcmd);
+                                MessageBox.Show($"升级成功!!\n当前版本为:v{trojanCurrentVersion}\n最新版本为:{trojanNewVersion}");
+                                currentStatus = "升级成功!当前已是最新版本!";
+                                textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                                Thread.Sleep(1000);
+                            }
+                            else
+                            {
+                                MessageBox.Show("升级失败,原因未知,请向开发者提问,以寻求支持!");
+                                currentStatus = "升级失败!";
+                                textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                                Thread.Sleep(1000);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        MessageBox.Show($"远程主机当前已是最新版本:{trojanNewVersion}\n无需升级!");
+                        currentStatus = "已是最新版本,无需升级,退出";
+                        textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+                        Thread.Sleep(1000);
+                    }
+
+                    client.Disconnect();
+                    return;
+                }
+            }
+            catch (Exception ex1)//例外处理   
+            #region 例外处理
+            {
+                //MessageBox.Show(ex1.Message);
+                if (ex1.Message.Contains("连接尝试失败") == true)
+                {
+                    MessageBox.Show($"{ex1.Message}\n请检查主机地址及端口是否正确,如果通过代理,请检查代理是否正常工作");
+                }
+
+                else if (ex1.Message.Contains("denied (password)") == true)
+                {
+                    MessageBox.Show($"{ex1.Message}\n密码错误或用户名错误");
+                }
+                else if (ex1.Message.Contains("Invalid private key file") == true)
+                {
+                    MessageBox.Show($"{ex1.Message}\n所选密钥文件错误或者格式不对");
+                }
+                else if (ex1.Message.Contains("denied (publickey)") == true)
+                {
+                    MessageBox.Show($"{ex1.Message}\n使用密钥登录,密钥文件错误或用户名错误");
+                }
+                else if (ex1.Message.Contains("目标计算机积极拒绝") == true)
+                {
+                    MessageBox.Show($"{ex1.Message}\n主机地址错误,如果使用了代理,也可能是连接代理的端口错误");
+                }
+                else
+                {
+                    MessageBox.Show("发生错误");
+                    MessageBox.Show(ex1.Message);
+                }
+                currentStatus = "主机登录失败";
+                textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
+
+            }
+            #endregion
+
+        }
+
+
+
         //生成三合一的v2ray路径
         private void ButtonV2rayPath3in1_Click(object sender, RoutedEventArgs e)
         {
diff --git a/ProxySU/Properties/AssemblyInfo.cs b/ProxySU/Properties/AssemblyInfo.cs
index 512eb5ab..d30cb115 100644
--- a/ProxySU/Properties/AssemblyInfo.cs
+++ b/ProxySU/Properties/AssemblyInfo.cs
@@ -51,5 +51,5 @@
 // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.6.1.0")]
-[assembly: AssemblyFileVersion("1.6.1.0")]
+[assembly: AssemblyVersion("1.6.2.0")]
+[assembly: AssemblyFileVersion("1.6.2.0")]
diff --git a/ProxySU/bin/Beta/Beta.zip b/ProxySU/bin/Beta/Beta.zip
index 61d60d8f..a6b364fe 100644
Binary files a/ProxySU/bin/Beta/Beta.zip and b/ProxySU/bin/Beta/Beta.zip differ