diff --git a/RXInstanceManager/AppHandlers.cs b/RXInstanceManager/AppHandlers.cs
index a57f772..1c4209c 100644
--- a/RXInstanceManager/AppHandlers.cs
+++ b/RXInstanceManager/AppHandlers.cs
@@ -236,7 +236,7 @@ public static void LaunchProcess(string fileName, bool asAdmin)
LaunchProcess(fileName, null, asAdmin, false);
}
- public static void LaunchProcess(string fileName, string args, bool asAdmin, bool waitForExit)
+ public static void LaunchProcess(string fileName, string args, bool asAdmin, bool waitForExit, bool isHiddenCommandLine = false)
{
using (var process = new Process())
{
@@ -253,6 +253,14 @@ public static void LaunchProcess(string fileName, string args, bool asAdmin, boo
if (asAdmin)
process.StartInfo.Verb = "runas";
+ if (isHiddenCommandLine)
+ {
+ process.StartInfo.CreateNoWindow = true;
+ process.StartInfo.UseShellExecute = false;
+ process.StartInfo.RedirectStandardOutput = true;
+ process.StartInfo.RedirectStandardError = true;
+ }
+
try
{
process.Start();
diff --git a/RXInstanceManager/Entities/Models/Config.cs b/RXInstanceManager/Entities/Models/Config.cs
index 6c073e5..7104628 100644
--- a/RXInstanceManager/Entities/Models/Config.cs
+++ b/RXInstanceManager/Entities/Models/Config.cs
@@ -27,6 +27,10 @@ public class Config
public string LogViewer { get; set; }
internal bool LogViewerExists { get; set; }
+ public string MetadataBrowser { get; set; }
+
+ internal bool MetadataBrowserExists { get; set; }
+
public bool NeedCheckAfterSet { get; set; }
public ContextMenuClass ContextMenu { get; set; }
diff --git a/RXInstanceManager/MainWindow.xaml b/RXInstanceManager/MainWindow.xaml
index df853b1..872e1b6 100644
--- a/RXInstanceManager/MainWindow.xaml
+++ b/RXInstanceManager/MainWindow.xaml
@@ -42,6 +42,7 @@
+
diff --git a/RXInstanceManager/MainWindow.xaml.cs b/RXInstanceManager/MainWindow.xaml.cs
index e40ebb6..507e1fc 100644
--- a/RXInstanceManager/MainWindow.xaml.cs
+++ b/RXInstanceManager/MainWindow.xaml.cs
@@ -443,6 +443,22 @@ private void RunDirectumLogViewer_Click(object sender, RoutedEventArgs e)
System.Windows.MessageBox.Show($"Папка {_instance.LogFolder} не существует.", "", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
}
+ private void RunMetadataBrowser_Click(object sender, RoutedEventArgs e)
+ {
+ if (_instance == null)
+ return;
+
+ if (File.Exists(_configRxInstMan.MetadataBrowser))
+ try
+ {
+ Task.Run(() => AppHandlers.LaunchProcess(AppHelper.GetDoPath(_instance.InstancePath), "map run_metadata_browser " + _configRxInstMan.MetadataBrowser, true, false, true));
+ }
+ catch (Exception ex)
+ {
+ AppHandlers.ErrorHandler(_instance, ex);
+ }
+ }
+
private void ButtonSourcesFolder_Click(object sender, RoutedEventArgs e)
{
if (Directory.Exists(_instance.WorkingRepositoryName))
diff --git a/RXInstanceManager/MainWindowHandlers.cs b/RXInstanceManager/MainWindowHandlers.cs
index 580c218..c1f72ac 100644
--- a/RXInstanceManager/MainWindowHandlers.cs
+++ b/RXInstanceManager/MainWindowHandlers.cs
@@ -41,7 +41,8 @@ private void LoadConfig()
contextMenu.OpenLogFolder = true;
var config = new Config();
- config.LogViewer = "";
+ config.LogViewer = "";
+ config.MetadataBrowser = "";
config.NeedCheckAfterSet = false;
config.ContextMenu = contextMenu;
var serializer = new YamlDotNet.Serialization.SerializerBuilder()
@@ -66,6 +67,20 @@ private void LoadConfig()
_configRxInstMan.LogViewerExists = File.Exists(_configRxInstMan.LogViewer);
if (!_configRxInstMan.LogViewerExists)
AppHandlers.logger.Error(string.Format("Файл LogViewer {0} не найден", _configRxInstMan.LogViewer));
+ try
+ {
+ _configRxInstMan.MetadataBrowser = ymlData.metadataBrowser;
+ }
+ catch (Exception e)
+ {
+ if (Environment.UserDomainName == "NT_WORK")
+ _configRxInstMan.MetadataBrowser = "\\\\orpihost\\MetadataBrowser\\MetadataBrowser.exe";
+ else
+ _configRxInstMan.MetadataBrowser = "";
+ }
+ _configRxInstMan.MetadataBrowserExists = File.Exists(_configRxInstMan.MetadataBrowser);
+ if (!_configRxInstMan.MetadataBrowserExists)
+ AppHandlers.logger.Error(string.Format("Файл MetadataBrowser {0} не найден", _configRxInstMan.MetadataBrowser));
_configRxInstMan.NeedCheckAfterSet = (ymlData.needCheckAfterSet == "true") ? true : false;
Func getContext = (contextMenuItem) => !ymlData.contextMenu.ContainsKey(contextMenuItem) || ymlData.contextMenu[contextMenuItem] == "true" ? true : false;
@@ -198,6 +213,10 @@ private void ActionButtonVisibleChanging(string status = null)
ButtonLogViewer.Visibility = Visibility.Visible;
else
ButtonLogViewer.Visibility = Visibility.Collapsed;
+ if (_configRxInstMan.MetadataBrowserExists)
+ ButtonMetadataBrowser.Visibility = Visibility.Visible;
+ else
+ ButtonMetadataBrowser.Visibility = Visibility.Collapsed;
ButtonSourcesFolder.Visibility = Visibility.Visible;
break;
case Constants.InstanceStatus.Working:
@@ -209,6 +228,10 @@ private void ActionButtonVisibleChanging(string status = null)
ButtonLogViewer.Visibility = Visibility.Visible;
else
ButtonLogViewer.Visibility = Visibility.Collapsed;
+ if (_configRxInstMan.MetadataBrowserExists)
+ ButtonMetadataBrowser.Visibility = Visibility.Visible;
+ else
+ ButtonMetadataBrowser.Visibility = Visibility.Collapsed;
ButtonSourcesFolder.Visibility = Visibility.Visible;
break;
}