diff --git a/MediaBrowser.ServerApplication/App.xaml b/MediaBrowser.ServerApplication/App.xaml
deleted file mode 100644
index 3729dc7b68..0000000000
--- a/MediaBrowser.ServerApplication/App.xaml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs
deleted file mode 100644
index 2186a19f8c..0000000000
--- a/MediaBrowser.ServerApplication/App.xaml.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-using MediaBrowser.Common.Events;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.ServerApplication.Splash;
-using System;
-using System.Diagnostics;
-using System.Windows;
-
-namespace MediaBrowser.ServerApplication
-{
- ///
- /// Interaction logic for App.xaml
- ///
- public partial class App : Application
- {
- ///
- /// Gets or sets the logger.
- ///
- /// The logger.
- private readonly ILogger _logger;
-
- ///
- /// Gets or sets the composition root.
- ///
- /// The composition root.
- private readonly ApplicationHost _appHost;
-
- public event EventHandler AppStarted;
-
- public bool IsRunningAsService { get; private set; }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The logger.
- public App(ApplicationHost appHost, ILogger logger, bool isRunningAsService)
- {
- _appHost = appHost;
- _logger = logger;
- IsRunningAsService = isRunningAsService;
-
- InitializeComponent();
- }
-
- ///
- /// Gets the name of the uninstaller file.
- ///
- /// The name of the uninstaller file.
- protected string UninstallerFileName
- {
- get { return "MediaBrowser.Server.Uninstall.exe"; }
- }
-
- public void OnUnhandledException(Exception ex)
- {
- MessageBox.Show("Unhandled exception: " + ex.Message);
- }
-
- protected override void OnStartup(StartupEventArgs e)
- {
- base.OnStartup(e);
-
- LoadApplication();
- }
-
- ///
- /// Loads the kernel.
- ///
- protected async void LoadApplication()
- {
- try
- {
- var initProgress = new Progress();
-
- if (!IsRunningAsService)
- {
- ShowSplashWindow(initProgress);
- }
-
- await _appHost.Init(initProgress);
-
- var task = _appHost.RunStartupTasks();
-
- if (!IsRunningAsService)
- {
- HideSplashWindow();
- }
-
- if (!IsRunningAsService)
- {
- ShowMainWindow();
- }
-
- EventHelper.FireEventIfNotNull(AppStarted, this, EventArgs.Empty, _logger);
-
- await task;
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error launching application", ex);
-
- MessageBox.Show("There was an error launching Media Browser: " + ex.Message);
-
- // Shutdown the app with an error code
- Shutdown(1);
- }
- }
-
- private MainWindow _mainWindow;
- private void ShowMainWindow()
- {
- var host = _appHost;
-
- var win = new MainWindow(host.LogManager, host,
- host.ServerConfigurationManager, host.UserManager,
- host.LibraryManager, host.JsonSerializer,
- host.DisplayPreferencesRepository,
- host.ItemRepository);
-
- win.Show();
-
- _mainWindow = win;
- }
-
- private SplashForm _splashWindow;
- private void ShowSplashWindow(Progress progress)
- {
- var win = new SplashForm(_appHost.ApplicationVersion, progress);
- win.Show();
-
- _splashWindow = win;
- }
-
- private void HideSplashWindow()
- {
- if (_splashWindow != null)
- {
- _splashWindow.Hide();
- _splashWindow = null;
- }
- }
-
- public void ShutdownApplication()
- {
- Dispatcher.Invoke(Shutdown);
- }
- }
-}
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index f34c3921d9..8a1f937dac 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -1,10 +1,13 @@
-using MediaBrowser.Common.Configuration;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Constants;
using MediaBrowser.Common.Implementations.Logging;
using MediaBrowser.Common.Implementations.Updates;
using MediaBrowser.Model.Logging;
using MediaBrowser.Server.Implementations;
using MediaBrowser.ServerApplication.Native;
+using MediaBrowser.ServerApplication.Splash;
using Microsoft.Win32;
using System;
using System.Configuration.Install;
@@ -14,6 +17,7 @@ using System.Linq;
using System.Runtime.InteropServices;
using System.ServiceProcess;
using System.Windows;
+using System.Windows.Forms;
namespace MediaBrowser.ServerApplication
{
@@ -21,8 +25,6 @@ namespace MediaBrowser.ServerApplication
{
private static ApplicationHost _appHost;
- private static App _app;
-
private static ILogger _logger;
private static bool _isRunningAsService = false;
@@ -201,6 +203,8 @@ namespace MediaBrowser.ServerApplication
logger.Info("Application Path: {0}", appPaths.ApplicationPath);
}
+ private static readonly TaskCompletionSource ApplicationTaskCompletionSource = new TaskCompletionSource();
+
///
/// Runs the application.
///
@@ -209,25 +213,66 @@ namespace MediaBrowser.ServerApplication
/// if set to true [run service].
private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, bool runService)
{
- SystemEvents.SessionEnding += SystemEvents_SessionEnding;
- SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
-
_appHost = new ApplicationHost(appPaths, logManager, runService);
- _app = new App(_appHost, _appHost.LogManager.GetLogger("App"), runService);
+ var initProgress = new Progress();
if (runService)
{
- _app.AppStarted += (sender, args) => StartService(logManager);
+ StartService(logManager);
}
else
{
+ ShowSplashScreen(_appHost.ApplicationVersion, initProgress, logManager.GetLogger("Splash"));
+
// Not crazy about this but it's the only way to suppress ffmpeg crash dialog boxes
SetErrorMode(ErrorModes.SEM_FAILCRITICALERRORS | ErrorModes.SEM_NOALIGNMENTFAULTEXCEPT |
ErrorModes.SEM_NOGPFAULTERRORBOX | ErrorModes.SEM_NOOPENFILEERRORBOX);
}
- _app.Run();
+ var task = _appHost.Init(initProgress);
+ Task.WaitAll(task);
+
+ task = _appHost.RunStartupTasks();
+ Task.WaitAll(task);
+
+ if (!runService)
+ {
+ HideSplashScreen();
+ }
+
+ SystemEvents.SessionEnding += SystemEvents_SessionEnding;
+ SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
+
+ task = ApplicationTaskCompletionSource.Task;
+ Task.WaitAll(task);
+ }
+
+ private static SplashForm _splash;
+ private static Thread _splashThread;
+ private static void ShowSplashScreen(Version appVersion, Progress progress, ILogger logger)
+ {
+ var thread = new Thread(() =>
+ {
+ _splash = new SplashForm(appVersion, progress);
+
+ _splash.ShowDialog();
+ });
+
+ thread.SetApartmentState(ApartmentState.STA);
+ thread.IsBackground = true;
+ thread.Start();
+
+ _splashThread = thread;
+ }
+
+ private static void HideSplashScreen()
+ {
+ if (_splash != null)
+ {
+ _splash.Close();
+ _splashThread = null;
+ }
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
@@ -257,6 +302,7 @@ namespace MediaBrowser.ServerApplication
/// The instance containing the event data.
static void service_Disposed(object sender, EventArgs e)
{
+ ApplicationTaskCompletionSource.SetResult(true);
OnServiceShutdown();
}
@@ -270,8 +316,6 @@ namespace MediaBrowser.ServerApplication
{
SetErrorMode(ErrorModes.SYSTEM_DEFAULT);
}
-
- _app.Dispatcher.Invoke(_app.Shutdown);
}
///
@@ -392,7 +436,7 @@ namespace MediaBrowser.ServerApplication
if (!_isRunningAsService)
{
- _app.OnUnhandledException(exception);
+ MessageBox.Show("Unhandled exception: " + exception.Message);
}
if (!Debugger.IsAttached)
@@ -467,7 +511,7 @@ namespace MediaBrowser.ServerApplication
if (!_isRunningAsService)
{
_logger.Info("Executing windows forms restart");
- System.Windows.Forms.Application.Restart();
+ Application.Restart();
ShutdownWindowsApplication();
}
@@ -475,7 +519,7 @@ namespace MediaBrowser.ServerApplication
private static void ShutdownWindowsApplication()
{
- _app.Dispatcher.Invoke(_app.Shutdown);
+ ApplicationTaskCompletionSource.SetResult(true);
}
private static void ShutdownWindowsService()
diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml b/MediaBrowser.ServerApplication/MainWindow.xaml
deleted file mode 100644
index 518c55a767..0000000000
--- a/MediaBrowser.ServerApplication/MainWindow.xaml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MediaBrowser.ServerApplication/MainWindow.xaml.cs b/MediaBrowser.ServerApplication/MainWindow.xaml.cs
deleted file mode 100644
index 9464c62726..0000000000
--- a/MediaBrowser.ServerApplication/MainWindow.xaml.cs
+++ /dev/null
@@ -1,301 +0,0 @@
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.ServerApplication.Logging;
-using MediaBrowser.ServerApplication.Native;
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Windows;
-using System.Windows.Threading;
-
-namespace MediaBrowser.ServerApplication
-{
- ///
- /// Interaction logic for MainWindow.xaml
- ///
- public partial class MainWindow : Window, INotifyPropertyChanged
- {
- ///
- /// The _logger
- ///
- private readonly ILogger _logger;
-
- ///
- /// The _app host
- ///
- private readonly IServerApplicationHost _appHost;
-
- ///
- /// The _log manager
- ///
- private readonly ILogManager _logManager;
-
- ///
- /// The _configuration manager
- ///
- private readonly IServerConfigurationManager _configurationManager;
-
- private readonly IUserManager _userManager;
- private readonly ILibraryManager _libraryManager;
- private readonly IJsonSerializer _jsonSerializer;
- private readonly IDisplayPreferencesRepository _displayPreferencesManager;
- private readonly IItemRepository _itemRepository;
-
- private LogForm _logForm;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The log manager.
- /// The app host.
- /// The configuration manager.
- /// The user manager.
- /// The library manager.
- /// The json serializer.
- /// The display preferences manager.
- /// logger
- public MainWindow(ILogManager logManager, IServerApplicationHost appHost, IServerConfigurationManager configurationManager, IUserManager userManager, ILibraryManager libraryManager, IJsonSerializer jsonSerializer, IDisplayPreferencesRepository displayPreferencesManager, IItemRepository itemRepo)
- {
- if (logManager == null)
- {
- throw new ArgumentNullException("logManager");
- }
- if (appHost == null)
- {
- throw new ArgumentNullException("appHost");
- }
- if (configurationManager == null)
- {
- throw new ArgumentNullException("configurationManager");
- }
-
- _logger = logManager.GetLogger("MainWindow");
- _itemRepository = itemRepo;
- _appHost = appHost;
- _logManager = logManager;
- _configurationManager = configurationManager;
- _userManager = userManager;
- _libraryManager = libraryManager;
- _jsonSerializer = jsonSerializer;
- _displayPreferencesManager = displayPreferencesManager;
-
- InitializeComponent();
-
- Loaded += MainWindowLoaded;
- }
-
- ///
- /// Mains the window loaded.
- ///
- /// The sender.
- /// The instance containing the event data.
- void MainWindowLoaded(object sender, RoutedEventArgs e)
- {
- DataContext = this;
-
- UpdateButtons();
-
- LoadLogWindow(null, EventArgs.Empty);
- _logManager.LoggerLoaded += LoadLogWindow;
- _configurationManager.ConfigurationUpdated += Instance_ConfigurationUpdated;
-
- if (_appHost.IsFirstRun)
- {
- Dispatcher.InvokeAsync(() => MbTaskbarIcon.ShowBalloonTip("Media Browser", "Welcome to Media Browser Server!", Hardcodet.Wpf.TaskbarNotification.BalloonIcon.None));
- }
- }
-
- ///
- /// Handles the ConfigurationUpdated event of the Instance control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- void Instance_ConfigurationUpdated(object sender, EventArgs e)
- {
- UpdateButtons();
-
- Dispatcher.InvokeAsync(() =>
- {
- var isLogWindowOpen = _logForm != null;
-
- if ((!isLogWindowOpen && _configurationManager.Configuration.ShowLogWindow) || (isLogWindowOpen && !_configurationManager.Configuration.ShowLogWindow))
- {
- _logManager.ReloadLogger(_configurationManager.Configuration.EnableDebugLevelLogging ? LogSeverity.Debug : LogSeverity.Info);
- }
- });
- }
-
- private void UpdateButtons()
- {
- Dispatcher.InvokeAsync(() =>
- {
- separatorDeveloperTools.Visibility = Visibility.Visible;
- cmdReloadServer.Visibility = Visibility.Visible;
- cmOpenExplorer.Visibility = Visibility.Visible;
- cmShowLogWindow.Visibility = Visibility.Visible;
- });
- }
-
- ///
- /// Loads the log window.
- ///
- /// The sender.
- /// The instance containing the event data.
- void LoadLogWindow(object sender, EventArgs args)
- {
- CloseLogWindow();
-
- Dispatcher.InvokeAsync(() =>
- {
- // Add our log window if specified
- if (_configurationManager.Configuration.ShowLogWindow)
- {
- _logForm = new LogForm(_logManager);
-
- Trace.Listeners.Add(new WindowTraceListener(_logForm));
- }
- else
- {
- Trace.Listeners.Remove("MBLogWindow");
- }
- // Set menu option indicator
- cmShowLogWindow.IsChecked = _configurationManager.Configuration.ShowLogWindow;
-
- }, DispatcherPriority.Normal);
- }
-
- ///
- /// Closes the log window.
- ///
- void CloseLogWindow()
- {
- if (_logForm != null)
- {
- _logForm.ShutDown();
- }
- }
-
- ///
- /// Handles the Click event of the cmdApiDocs control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- void cmdApiDocs_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenStandardApiDocumentation(_configurationManager, _appHost, _logger);
- }
-
- void cmdSwaggerApiDocs_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenSwagger(_configurationManager, _appHost, _logger);
- }
-
- void cmdGithubWiki_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenGithub(_logger);
- }
-
- ///
- /// Occurs when [property changed].
- ///
- public event PropertyChangedEventHandler PropertyChanged;
-
- ///
- /// Called when [property changed].
- ///
- /// The info.
- public void OnPropertyChanged(String info)
- {
- if (PropertyChanged != null)
- {
- try
- {
- PropertyChanged(this, new PropertyChangedEventArgs(info));
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error in event handler", ex);
- }
- }
- }
-
- #region Context Menu events
- ///
- /// Handles the click event of the cmOpenExplorer control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void cmOpenExplorer_click(object sender, RoutedEventArgs e)
- {
- new LibraryViewer(_jsonSerializer, _userManager, _libraryManager, _displayPreferencesManager, _itemRepository).Show();
- }
-
- ///
- /// Handles the click event of the cmOpenDashboard control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void cmOpenDashboard_click(object sender, RoutedEventArgs e)
- {
- BrowserLauncher.OpenDashboard(_userManager, _configurationManager, _appHost, _logger);
- }
-
- ///
- /// Handles the click event of the cmVisitCT control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void cmVisitCT_click(object sender, RoutedEventArgs e)
- {
- BrowserLauncher.OpenCommunity(_logger);
- }
-
- ///
- /// Handles the click event of the cmdBrowseLibrary control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void cmdBrowseLibrary_click(object sender, RoutedEventArgs e)
- {
- BrowserLauncher.OpenWebClient(_userManager, _configurationManager, _appHost, _logger);
- }
-
- ///
- /// Handles the click event of the cmExit control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private async void cmExit_click(object sender, RoutedEventArgs e)
- {
- await _appHost.Shutdown().ConfigureAwait(false);
- }
-
- ///
- /// Handles the click event of the cmdReloadServer control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private async void cmdReloadServer_click(object sender, RoutedEventArgs e)
- {
- await _appHost.Restart().ConfigureAwait(false);
- }
-
- ///
- /// Handles the click event of the CmShowLogWindow control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- private void CmShowLogWindow_click(object sender, RoutedEventArgs e)
- {
- _configurationManager.Configuration.ShowLogWindow = !_configurationManager.Configuration.ShowLogWindow;
- _configurationManager.SaveConfiguration();
- LoadLogWindow(sender, e);
- }
-
- #endregion
- }
-}
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index bd4364eaf4..ef5fd6eb67 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -4,38 +4,15 @@
Debug
AnyCPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}
WinExe
Properties
MediaBrowser.ServerApplication
MediaBrowser.ServerApplication
v4.5
512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
..\
true
- http://www.mb3admin.com/downloads/server/
- true
- Web
- false
- Background
- 1
- Days
- false
- false
- true
- http://forum.mediabrowser3.com
- Media Browser Server
- Media Browser Team
- Media Browser 3
- 3033
- 2.9.4795.3033
- false
- true
- true
- true
AnyCPU
@@ -45,7 +22,7 @@
bin\Debug\
DEBUG;TRACE
prompt
- 1
+ 4
AnyCPU
@@ -60,42 +37,12 @@
MediaBrowser.ServerApplication.MainStartup
- Resources\Images\icon.ico
-
-
- app.manifest
-
-
- OnBuildSuccess
-
-
- 9633DCDB4A07D3328EFB99299C6DFB1823EBC4BE
-
-
-
-
-
-
- false
-
-
- false
-
-
- http://timestamp.verisign.com/scripts/timstamp.dll
-
-
- false
-
-
-
-
+ Resources\Images\Icon.ico
true
bin\x86\Debug\
DEBUG;TRACE
- 1
full
x86
prompt
@@ -112,64 +59,51 @@
MinimumRecommendedRules.ruleset
true
-
- LocalIntranet
-
-
- ..\packages\Hardcodet.Wpf.TaskbarNotification.1.0.4.0\lib\net40\Hardcodet.Wpf.TaskbarNotification.dll
-
-
- False
+
..\packages\MediaBrowser.IsoMounting.3.0.65\lib\net45\MediaBrowser.IsoMounter.dll
-
- False
+
..\packages\NLog.2.1.0\lib\net45\NLog.dll
-
- False
+
..\packages\MediaBrowser.IsoMounting.3.0.65\lib\net45\pfmclrapi.dll
..\ThirdParty\ServiceStack\ServiceStack.Interfaces.dll
-
- False
- ..\packages\SimpleInjector.2.4.1\lib\net45\SimpleInjector.dll
-
-
- False
- ..\packages\SimpleInjector.2.4.1\lib\net45\SimpleInjector.Diagnostics.dll
-
+
-
+
-
-
-
-
+
-
- 4.0
-
-
-
-
+
+
+
+
+ Properties\SharedVersion.cs
+
+
Component
+
+ Component
+
+
+
Form
@@ -182,65 +116,36 @@
LogForm.cs
+
+
-
-
-
-
-
-
- Component
-
+
+
+
+
+ True
+ True
+ Resources.resx
+
Form
SplashForm.cs
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Properties\SharedVersion.cs
-
-
- App.xaml
- Code
-
-
-
-
- MainWindow.xaml
- Code
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- LibraryViewer.cs
-
+
+
+
+
+
+
LogForm.cs
@@ -251,21 +156,10 @@
SplashForm.cs
-
-
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
-
-
- Designer
-
+
+
@@ -301,61 +195,8 @@
MediaBrowser.WebDashboard
-
-
-
-
-
- False
- Microsoft .NET Framework 4.5 %28x86 and x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
- False
- Visual C++ 2010 Runtime Libraries %28x86%29
- true
-
-
-
-
-
-
- if $(ConfigurationName) == Release (
-rmdir "$(SolutionDir)..\Deploy\Server\System" /s /q
-mkdir "$(SolutionDir)..\Deploy\Server\System"
-rmdir "$(SolutionDir)..\Deploy\Server\Pismo" /s /q
-xcopy "$(TargetDir)$(TargetFileName)" "$(SolutionDir)..\Deploy\Server\System\" /y
-xcopy "$(SolutionDir)Installation\MediaBrowser.Uninstaller.exe.config" "$(SolutionDir)..\Deploy\Server\System\" /y
-xcopy "$(SolutionDir)Installation\MediaBrowser.Uninstaller.exe" "$(SolutionDir)..\Deploy\Server\System\" /y
-xcopy "$(SolutionDir)Installation\MediaBrowser.InstallUtil.dll" "$(SolutionDir)..\Deploy\Server\System\" /y
-xcopy "$(SolutionDir)Installation\MediaBrowser.Updater.exe" "$(SolutionDir)..\Deploy\Server\System\" /y
-
-mkdir "$(SolutionDir)..\Deploy\Server\System\swagger-ui"
-xcopy "$(TargetDir)swagger-ui" "$(SolutionDir)..\Deploy\Server\System\swagger-ui" /y /s
-
-xcopy "$(TargetDir)$(TargetFileName).config" "$(SolutionDir)..\Deploy\Server\System\" /y
-
-xcopy "$(TargetDir)*.dll" "$(SolutionDir)..\Deploy\Server\System" /y
-
-mkdir "$(SolutionDir)..\Deploy\Server\System\dashboard-ui"
-xcopy "$(TargetDir)dashboard-ui" "$(SolutionDir)..\Deploy\Server\System\dashboard-ui" /y /s
-
-del "$(SolutionDir)..\Deploy\MBServer.zip"
-"$(SolutionDir)ThirdParty\7zip\7za" a -mx9 "$(SolutionDir)..\Deploy\MBServer.zip" "$(SolutionDir)..\Deploy\Server\*"
-)
-
-
+
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs b/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs
index 11ac6c7bbe..080c12596d 100644
--- a/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs
+++ b/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs
@@ -1,6 +1,6 @@
using System.Reflection;
+using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
@@ -19,25 +19,8 @@ using System.Windows;
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
-
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a5a1e61f-da85-4fd6-9d6d-bcf2bf09c1f8")]
// Version information for an assembly consists of the following four values:
//
diff --git a/MediaBrowser.ServerApplication/Properties/Resources.Designer.cs b/MediaBrowser.ServerApplication/Properties/Resources.Designer.cs
index 1fdc11c667..6323af6fde 100644
--- a/MediaBrowser.ServerApplication/Properties/Resources.Designer.cs
+++ b/MediaBrowser.ServerApplication/Properties/Resources.Designer.cs
@@ -59,15 +59,5 @@ namespace MediaBrowser.ServerApplication.Properties {
resourceCulture = value;
}
}
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap mb3logo800 {
- get {
- object obj = ResourceManager.GetObject("mb3logo800", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
}
}
diff --git a/MediaBrowser.ServerApplication/Properties/Resources.resx b/MediaBrowser.ServerApplication/Properties/Resources.resx
index 728eee2507..29dcb1b3a3 100644
--- a/MediaBrowser.ServerApplication/Properties/Resources.resx
+++ b/MediaBrowser.ServerApplication/Properties/Resources.resx
@@ -117,8 +117,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- ..\Resources\Images\mb3logo800.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
\ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/Properties/Settings.Designer.cs b/MediaBrowser.ServerApplication/Properties/Settings.Designer.cs
deleted file mode 100644
index f7b055389f..0000000000
--- a/MediaBrowser.ServerApplication/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.17626
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace MediaBrowser.ServerApplication.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/MediaBrowser.ServerApplication/Properties/Settings.settings b/MediaBrowser.ServerApplication/Properties/Settings.settings
deleted file mode 100644
index 8f2fd95d62..0000000000
--- a/MediaBrowser.ServerApplication/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs
index 198c3c6af8..e9ba17bc1f 100644
--- a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs
+++ b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs
@@ -56,6 +56,7 @@
this.panelMainContainer.Padding = new System.Windows.Forms.Padding(1);
this.panelMainContainer.Size = new System.Drawing.Size(648, 347);
this.panelMainContainer.TabIndex = 0;
+ this.panelMainContainer.UseWaitCursor = true;
//
// panel3
//
@@ -65,6 +66,7 @@
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(646, 69);
this.panel3.TabIndex = 2;
+ this.panel3.UseWaitCursor = true;
//
// panel2
//
@@ -78,6 +80,7 @@
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(646, 205);
this.panel2.TabIndex = 1;
+ this.panel2.UseWaitCursor = true;
//
// panelProgress
//
@@ -86,6 +89,7 @@
this.panelProgress.Name = "panelProgress";
this.panelProgress.Size = new System.Drawing.Size(0, 13);
this.panelProgress.TabIndex = 3;
+ this.panelProgress.UseWaitCursor = true;
//
// panel4
//
@@ -94,6 +98,7 @@
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(648, 13);
this.panel4.TabIndex = 2;
+ this.panel4.UseWaitCursor = true;
//
// lblVersion
//
@@ -106,6 +111,7 @@
this.lblVersion.Size = new System.Drawing.Size(270, 59);
this.lblVersion.TabIndex = 1;
this.lblVersion.Text = "Version 1234";
+ this.lblVersion.UseWaitCursor = true;
//
// lblStatus
//
@@ -118,6 +124,7 @@
this.lblStatus.Size = new System.Drawing.Size(599, 59);
this.lblStatus.TabIndex = 0;
this.lblStatus.Text = "Loading Media Browser Server";
+ this.lblStatus.UseWaitCursor = true;
//
// panel1
//
@@ -128,17 +135,19 @@
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(646, 140);
this.panel1.TabIndex = 0;
+ this.panel1.UseWaitCursor = true;
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pictureBox1.Image = global::MediaBrowser.ServerApplication.Properties.Resources.mb3logo800;
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(646, 140);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
+ this.pictureBox1.UseWaitCursor = true;
//
// SplashForm
//
@@ -154,6 +163,7 @@
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Media Browser";
+ this.UseWaitCursor = true;
this.panelMainContainer.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.cs b/MediaBrowser.ServerApplication/Splash/SplashForm.cs
index 1260c34052..845ad74fb5 100644
--- a/MediaBrowser.ServerApplication/Splash/SplashForm.cs
+++ b/MediaBrowser.ServerApplication/Splash/SplashForm.cs
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
+using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -42,4 +43,29 @@ namespace MediaBrowser.ServerApplication.Splash
base.OnClosing(e);
}
}
+
+ public static class ControlHelper
+ {
+ #region Redraw Suspend/Resume
+ [DllImport("user32.dll", EntryPoint = "SendMessageA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
+ private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
+ private const int WM_SETREDRAW = 0xB;
+
+ public static void SuspendDrawing(this Control target)
+ {
+ SendMessage(target.Handle, WM_SETREDRAW, 0, 0);
+ }
+
+ public static void ResumeDrawing(this Control target) { ResumeDrawing(target, true); }
+ public static void ResumeDrawing(this Control target, bool redraw)
+ {
+ SendMessage(target.Handle, WM_SETREDRAW, 1, 0);
+
+ if (redraw)
+ {
+ target.Refresh();
+ }
+ }
+ #endregion
+ }
}
diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.resx b/MediaBrowser.ServerApplication/Splash/SplashForm.resx
index 9fe6f0196c..4ef7e3c41c 100644
--- a/MediaBrowser.ServerApplication/Splash/SplashForm.resx
+++ b/MediaBrowser.ServerApplication/Splash/SplashForm.resx
@@ -118,6 +118,621 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 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
+ rkJggg==
+
+
AAABAAsAICAQAAEABADoAgAAtgAAABAQEAABAAQAKAEAAJ4DAAAwMAAAAQAIAKgOAADGBAAAICAAAAEA
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index d83a85d090..f62249aa3b 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -1,7 +1,5 @@
-
-
\ No newline at end of file
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 0c5360b494..a3e35f6038 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Common", "Medi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Model", "MediaBrowser.Model\MediaBrowser.Model.csproj", "{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.ServerApplication", "MediaBrowser.ServerApplication\MediaBrowser.ServerApplication.csproj", "{156EA256-AD2D-4D2F-B116-2ED4B9EFD869}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.WebDashboard", "MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj", "{5624B7B5-B5A7-41D8-9F10-CC5611109619}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F0E0E64C-2A6F-4E35-9533-D53AC07C2CD1}"
@@ -39,6 +37,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Providers", "M
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Model.Portable", "MediaBrowser.Model.Portable\MediaBrowser.Model.Portable.csproj", "{D729ADB1-1C01-428D-B680-8EFACD687B2A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.ServerApplication", "MediaBrowser.ServerApplication\MediaBrowser.ServerApplication.csproj", "{94ADE4D3-B7EC-45CD-A200-CC469433072B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -117,22 +117,6 @@ Global
{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|x64.ActiveCfg = Release|Any CPU
{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|x86.ActiveCfg = Release|Any CPU
{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|x86.Build.0 = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|Any CPU.ActiveCfg = Debug|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|Any CPU.Build.0 = Debug|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|x64.ActiveCfg = Debug|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|x86.ActiveCfg = Debug|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Debug|x86.Build.0 = Debug|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|Any CPU.ActiveCfg = Release|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|Any CPU.Build.0 = Release|x86
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|Win32.ActiveCfg = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|x64.ActiveCfg = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|x86.ActiveCfg = Release|Any CPU
- {156EA256-AD2D-4D2F-B116-2ED4B9EFD869}.Release|x86.Build.0 = Release|Any CPU
{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -233,6 +217,20 @@ Global
{D729ADB1-1C01-428D-B680-8EFACD687B2A}.Release|Win32.ActiveCfg = Release|Any CPU
{D729ADB1-1C01-428D-B680-8EFACD687B2A}.Release|x64.ActiveCfg = Release|Any CPU
{D729ADB1-1C01-428D-B680-8EFACD687B2A}.Release|x86.ActiveCfg = Release|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|Any CPU.Build.0 = Debug|x86
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|Any CPU.ActiveCfg = Release|x86
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|Any CPU.Build.0 = Release|x86
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|Win32.ActiveCfg = Release|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|x64.ActiveCfg = Release|Any CPU
+ {94ADE4D3-B7EC-45CD-A200-CC469433072B}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE