diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs
index 162d26d..3d78fbe 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/MainForm.cs
@@ -17,7 +17,6 @@ namespace WelsonJS.Launcher
public partial class MainForm : Form
{
private const string _entryFileName = "bootstrap.bat";
-
private readonly string _dateTimeFormat;
private string _workingDirectory;
@@ -26,18 +25,28 @@ namespace WelsonJS.Launcher
public MainForm()
{
+ // set the datetime format
_dateTimeFormat = Program.GetAppConfig("DateTimeFormat");
+ // initialize UI
InitializeComponent();
+ // Check the user is an Administator
if (IsInAdministrator())
{
Text += " (Administrator)";
}
+ // Send to the tray (to the background)
notifyIcon1.DoubleClick += OnShow;
openLauncherToolStripMenuItem.Click += OnShow;
exitToolStripMenuItem.Click += OnExit;
+
+ // Autostart the resource server
+ if (Program.GetAppConfig("ResourceServerAutoStart").ToLower() == "true")
+ {
+ RunResourceServer();
+ }
}
protected override void OnFormClosing(FormClosingEventArgs e)
@@ -120,12 +129,12 @@ namespace WelsonJS.Launcher
string filePath = openFileDialog.FileName;
DisableUI();
- Task.Run(() => ExtractAndRun(filePath));
+ Task.Run(() => RunAppPackageFile(filePath));
}
}
}
- private void ExtractAndRun(string filePath)
+ private void RunAppPackageFile(string filePath)
{
_instanceId = Guid.NewGuid().ToString();
_workingDirectory = Program.GetWorkingDirectory(_instanceId);
@@ -160,6 +169,19 @@ namespace WelsonJS.Launcher
SafeInvoke(() => EnableUI());
}
+ private bool RunResourceServer()
+ {
+ Program.InitializeResourceServer();
+
+ if (!Program._ResourceServer.IsRunning())
+ {
+ Program._ResourceServer.Start(false);
+ startCodeEditorToolStripMenuItem.Text = "Open the code editor...";
+ }
+
+ return Program._ResourceServer.IsRunning();
+ }
+
private void RecordFirstDeployTime(string directory, string instanceId)
{
// get current time
@@ -263,14 +285,7 @@ namespace WelsonJS.Launcher
private void startCodeEditorToolStripMenuItem_Click(object sender, EventArgs e)
{
- Program.StartResourceServer();
-
- if (!Program._ResourceServer.IsRunning())
- {
- Program._ResourceServer.Start();
- ((ToolStripMenuItem)sender).Text = "Open the code editor...";
- }
- else
+ if (RunResourceServer())
{
Program.OpenWebBrowser(Program._ResourceServer.GetPrefix());
}
diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs
index b796fb5..42f6d07 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Program.cs
@@ -146,7 +146,7 @@ namespace WelsonJS.Launcher
return workingDirectory;
}
- public static void StartResourceServer()
+ public static void InitializeResourceServer()
{
lock(typeof(Program))
{
@@ -159,7 +159,7 @@ namespace WelsonJS.Launcher
public static void OpenWebBrowser(string url)
{
Uri resourceServerUri = new Uri(GetAppConfig("ResourceServerPrefix"));
- Uri devToolsUri = new Uri(GetAppConfig("DevToolsPrefix"));
+ Uri devToolsUri = new Uri(GetAppConfig("ChromiumDevToolsPrefix"));
string userDataDir = Path.Combine(GetAppDataPath(), "EdgeUserProfile");
string remoteAllowOrigins = $"{resourceServerUri.Scheme}://{resourceServerUri.Host}:{resourceServerUri.Port}";
@@ -173,7 +173,7 @@ namespace WelsonJS.Launcher
Process.Start(new ProcessStartInfo
{
- FileName = "msedge.exe",
+ FileName = Program.GetAppConfig("ChromiumFileName"),
Arguments = string.Join(" ", arguments),
UseShellExecute = true
});
diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs
index c3ebefd..24f5ca1 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.Designer.cs
@@ -105,6 +105,24 @@ namespace WelsonJS.Launcher.Properties {
}
}
+ ///
+ /// http://localhost:9222/과(와) 유사한 지역화된 문자열을 찾습니다.
+ ///
+ internal static string ChromiumDevToolsPrefix {
+ get {
+ return ResourceManager.GetString("ChromiumDevToolsPrefix", resourceCulture);
+ }
+ }
+
+ ///
+ /// msedge.exe과(와) 유사한 지역화된 문자열을 찾습니다.
+ ///
+ internal static string ChromiumFileName {
+ get {
+ return ResourceManager.GetString("ChromiumFileName", resourceCulture);
+ }
+ }
+
///
/// 과(와) 유사한 지역화된 문자열을 찾습니다.
///
@@ -141,15 +159,6 @@ namespace WelsonJS.Launcher.Properties {
}
}
- ///
- /// http://localhost:9222/과(와) 유사한 지역화된 문자열을 찾습니다.
- ///
- internal static string DevToolsPrefix {
- get {
- return ResourceManager.GetString("DevToolsPrefix", resourceCulture);
- }
- }
-
///
/// 1.1.1.1과(와) 유사한 지역화된 문자열을 찾습니다.
///
@@ -277,6 +286,15 @@ namespace WelsonJS.Launcher.Properties {
}
}
+ ///
+ /// true과(와) 유사한 지역화된 문자열을 찾습니다.
+ ///
+ internal static string ResourceServerAutoStart {
+ get {
+ return ResourceManager.GetString("ResourceServerAutoStart", resourceCulture);
+ }
+ }
+
///
/// http://localhost:3000/과(와) 유사한 지역화된 문자열을 찾습니다.
///
diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx
index 7bf3635..c619a4c 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/Properties/Resources.resx
@@ -157,7 +157,7 @@
http://localhost:3000/
-
+
http://localhost:9222/
@@ -199,4 +199,10 @@
yyyy-MM-dd HH:mm:ss
+
+ true
+
+
+ msedge.exe
+
\ No newline at end of file
diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceServer.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceServer.cs
index d87f0d3..7ea8dc0 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceServer.cs
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceServer.cs
@@ -30,6 +30,7 @@ namespace WelsonJS.Launcher
private string _prefix;
private string _resourceName;
private List _tools = new List();
+
private static readonly HttpClient _httpClient = new HttpClient();
private static readonly string _defaultMimeType = "application/octet-stream";
private static BlobConfig _blobConfig;
@@ -66,7 +67,7 @@ namespace WelsonJS.Launcher
return _prefix;
}
- public void Start()
+ public void Start(bool IsOpenWebBrowser = true)
{
if (_isRunning) return;
@@ -75,7 +76,10 @@ namespace WelsonJS.Launcher
_listener.Start();
// Open the web browser
- Program.OpenWebBrowser(_prefix);
+ if (IsOpenWebBrowser)
+ {
+ Program.OpenWebBrowser(_prefix);
+ }
// Run a task with cancellation token
_serverTask = Task.Run(() => ListenLoop(_cts.Token));
diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/app.config b/WelsonJS.Toolkit/WelsonJS.Launcher/app.config
index 3e9cad8..59bea5f 100644
--- a/WelsonJS.Toolkit/WelsonJS.Launcher/app.config
+++ b/WelsonJS.Toolkit/WelsonJS.Launcher/app.config
@@ -2,9 +2,11 @@
+
-
+
+