From 6644ef920a092f04b7162a4485919cd7f45c2d46 Mon Sep 17 00:00:00 2001 From: Konstantina Chremmou Date: Tue, 8 Nov 2022 11:18:35 +0000 Subject: [PATCH] CP-41108: Replaced the separate splash screen executable with a form within the application executable. Signed-off-by: Konstantina Chremmou --- WixInstaller/XenCenter.wxs | 7 +- XenAdmin.sln | 11 - XenAdmin/Dialogs/ActionProgressDialog.ja.resx | 2 +- XenAdmin/Dialogs/ActionProgressDialog.resx | 2 +- .../Dialogs/ActionProgressDialog.zh-CN.resx | 2 +- XenAdmin/Dialogs/GraphDetailsDialog.ja.resx | 6 +- XenAdmin/Dialogs/GraphDetailsDialog.resx | 6 +- .../Dialogs/GraphDetailsDialog.zh-CN.resx | 6 +- XenAdmin/Dialogs/OptionsDialog.ja.resx | 22 +- XenAdmin/Dialogs/OptionsDialog.resx | 22 +- XenAdmin/Dialogs/OptionsDialog.zh-CN.resx | 22 +- .../OptionsPages/DisplayOptionsPage.resx | 8 +- .../ExternalToolsOptionsPage.resx | 2 +- .../CloseXenCenterWarningDialog.resx | 4 +- XenAdmin/Images.cs | 1 + XenAdmin/MainWindow.cs | 31 +- XenAdmin/MainWindow.resx | 238 ++++----- XenAdmin/Program.cs | 176 +++---- XenAdmin/Properties/Resources.Designer.cs | 32 +- XenAdmin/Properties/Resources.resx | 3 + XenAdmin/Settings.cs | 5 +- XenAdmin/SplashScreen.Designer.cs | 71 +++ splash/util.h => XenAdmin/SplashScreen.cs | 33 +- XenAdmin/SplashScreen.ja.resx | 101 ++++ XenAdmin/SplashScreen.resx | 183 +++++++ XenAdmin/SplashScreen.zh-CN.resx | 101 ++++ XenAdmin/TabPages/AdPage.ja.resx | 8 +- XenAdmin/TabPages/AdPage.resx | 8 +- XenAdmin/TabPages/AdPage.zh-CN.resx | 8 +- XenAdmin/TabPages/BaseTabPage.ja.resx | 4 +- XenAdmin/TabPages/BaseTabPage.resx | 4 +- XenAdmin/TabPages/BaseTabPage.zh-CN.resx | 4 +- XenAdmin/TabPages/GeneralTabPage.ja.resx | 44 +- XenAdmin/TabPages/GeneralTabPage.resx | 44 +- XenAdmin/TabPages/GeneralTabPage.zh-CN.resx | 44 +- .../DRFailoverWizardPrecheckPage.resx | 4 +- .../DRFailoverWizardRecoverPage.resx | 4 +- .../AutomatedUpdatesBasePage.resx | 2 +- .../PatchingWizard_FirstPage.ja.resx | 2 +- .../PatchingWizard_FirstPage.resx | 2 +- .../PatchingWizard_FirstPage.zh-CN.resx | 2 +- .../PatchingWizard_SelectPatchPage.ja.resx | 2 +- .../PatchingWizard_SelectPatchPage.resx | 2 +- .../PatchingWizard_SelectPatchPage.zh-CN.resx | 2 +- .../PatchingWizard_SelectServers.ja.resx | 4 +- .../PatchingWizard_SelectServers.resx | 4 +- .../PatchingWizard_SelectServers.zh-CN.resx | 4 +- .../RollingUpgradeExtrasPage.resx | 2 +- XenAdmin/XenAdmin.csproj | 22 +- XenAdminTests/CodeTests/AssemblyTests.cs | 2 +- XenCenterLib/NamedPipes.cs | 120 ++--- scripts/re-branding.sh | 15 - scripts/xenadmin-build.sh | 8 +- splash/main.cpp | 473 ------------------ splash/resource.h | 48 -- splash/splash.manifest | 12 - splash/splash.rc | 130 ----- splash/splash.vcproj | 227 --------- splash/splash.vcxproj | 129 ----- splash/splash.vcxproj.filters | 40 -- splash/util.cpp | 79 --- 61 files changed, 956 insertions(+), 1650 deletions(-) create mode 100644 XenAdmin/SplashScreen.Designer.cs rename splash/util.h => XenAdmin/SplashScreen.cs (65%) create mode 100644 XenAdmin/SplashScreen.ja.resx create mode 100644 XenAdmin/SplashScreen.resx create mode 100644 XenAdmin/SplashScreen.zh-CN.resx delete mode 100644 splash/main.cpp delete mode 100644 splash/resource.h delete mode 100644 splash/splash.manifest delete mode 100644 splash/splash.rc delete mode 100644 splash/splash.vcproj delete mode 100644 splash/splash.vcxproj delete mode 100644 splash/splash.vcxproj.filters delete mode 100644 splash/util.cpp diff --git a/WixInstaller/XenCenter.wxs b/WixInstaller/XenCenter.wxs index 400f293db..4c201a381 100644 --- a/WixInstaller/XenCenter.wxs +++ b/WixInstaller/XenCenter.wxs @@ -59,11 +59,10 @@ - - + @@ -126,7 +125,7 @@ - + @@ -135,7 +134,7 @@ - + diff --git a/XenAdmin.sln b/XenAdmin.sln index 67205b9da..56dc9847b 100644 --- a/XenAdmin.sln +++ b/XenAdmin.sln @@ -12,8 +12,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommandLib", "CommandLib\Co EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xva_verify", "xva_verify\xva_verify.csproj", "{2A70D7E7-EAB2-4C36-B3F4-85B79D2384B5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "splash", "splash\splash.vcxproj", "{AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XenAdminTests", "XenAdminTests\XenAdminTests.csproj", "{21B9482C-D255-40D5-ABA7-C8F00F99547C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XenCenterLib", "XenCenterLib\XenCenterLib.csproj", "{9861DFA1-B41F-432D-A43F-226257DEBBB9}" @@ -74,15 +72,6 @@ Global {2A70D7E7-EAB2-4C36-B3F4-85B79D2384B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU {2A70D7E7-EAB2-4C36-B3F4-85B79D2384B5}.Release|Win32.ActiveCfg = Release|Any CPU {2A70D7E7-EAB2-4C36-B3F4-85B79D2384B5}.Release|Win32.Build.0 = Release|Any CPU - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Debug|Win32.ActiveCfg = Debug|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Release|Any CPU.ActiveCfg = Release|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Release|Mixed Platforms.Build.0 = Release|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Release|Win32.ActiveCfg = Release|Win32 - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB}.Release|Win32.Build.0 = Release|Win32 {21B9482C-D255-40D5-ABA7-C8F00F99547C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21B9482C-D255-40D5-ABA7-C8F00F99547C}.Debug|Any CPU.Build.0 = Debug|Any CPU {21B9482C-D255-40D5-ABA7-C8F00F99547C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU diff --git a/XenAdmin/Dialogs/ActionProgressDialog.ja.resx b/XenAdmin/Dialogs/ActionProgressDialog.ja.resx index c9f3942b2..a15e79910 100644 --- a/XenAdmin/Dialogs/ActionProgressDialog.ja.resx +++ b/XenAdmin/Dialogs/ActionProgressDialog.ja.resx @@ -487,6 +487,6 @@ ActionProgressDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Dialogs/ActionProgressDialog.resx b/XenAdmin/Dialogs/ActionProgressDialog.resx index 85a981bb4..f9e65d787 100644 --- a/XenAdmin/Dialogs/ActionProgressDialog.resx +++ b/XenAdmin/Dialogs/ActionProgressDialog.resx @@ -487,6 +487,6 @@ ActionProgressDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/ActionProgressDialog.zh-CN.resx b/XenAdmin/Dialogs/ActionProgressDialog.zh-CN.resx index 0875cc5f4..651abf0d6 100644 --- a/XenAdmin/Dialogs/ActionProgressDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/ActionProgressDialog.zh-CN.resx @@ -487,6 +487,6 @@ ActionProgressDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Dialogs/GraphDetailsDialog.ja.resx b/XenAdmin/Dialogs/GraphDetailsDialog.ja.resx index 1e264c09f..4b445ea3b 100644 --- a/XenAdmin/Dialogs/GraphDetailsDialog.ja.resx +++ b/XenAdmin/Dialogs/GraphDetailsDialog.ja.resx @@ -619,7 +619,7 @@ dropDownButtonShow - XenAdmin.Controls.DropDownButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DropDownButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -730,7 +730,7 @@ searchTextBox - XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -811,6 +811,6 @@ GraphDetailsDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/GraphDetailsDialog.resx b/XenAdmin/Dialogs/GraphDetailsDialog.resx index 71ae9d24a..5ce75dcd0 100644 --- a/XenAdmin/Dialogs/GraphDetailsDialog.resx +++ b/XenAdmin/Dialogs/GraphDetailsDialog.resx @@ -619,7 +619,7 @@ dropDownButtonShow - XenAdmin.Controls.DropDownButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DropDownButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -730,7 +730,7 @@ searchTextBox - XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -811,6 +811,6 @@ GraphDetailsDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/GraphDetailsDialog.zh-CN.resx b/XenAdmin/Dialogs/GraphDetailsDialog.zh-CN.resx index e9cb07559..1f686cc2b 100644 --- a/XenAdmin/Dialogs/GraphDetailsDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/GraphDetailsDialog.zh-CN.resx @@ -619,7 +619,7 @@ dropDownButtonShow - XenAdmin.Controls.DropDownButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DropDownButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -730,7 +730,7 @@ searchTextBox - XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.SearchTextBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel2 @@ -811,6 +811,6 @@ GraphDetailsDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/OptionsDialog.ja.resx b/XenAdmin/Dialogs/OptionsDialog.ja.resx index 465a2863d..88daba003 100644 --- a/XenAdmin/Dialogs/OptionsDialog.ja.resx +++ b/XenAdmin/Dialogs/OptionsDialog.ja.resx @@ -151,7 +151,7 @@ externalToolsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -181,7 +181,7 @@ confirmationOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -211,7 +211,7 @@ pluginOptionsPage1 - XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -244,7 +244,7 @@ saveAndRestoreOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -274,7 +274,7 @@ securityOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -304,7 +304,7 @@ updatesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -334,7 +334,7 @@ graphsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -367,7 +367,7 @@ consolesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -400,7 +400,7 @@ connectionOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -439,7 +439,7 @@ verticalTabs - XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer.Panel1 @@ -556,6 +556,6 @@ OptionsDialog - XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/OptionsDialog.resx b/XenAdmin/Dialogs/OptionsDialog.resx index ddd80e7d5..d782c3445 100644 --- a/XenAdmin/Dialogs/OptionsDialog.resx +++ b/XenAdmin/Dialogs/OptionsDialog.resx @@ -151,7 +151,7 @@ externalToolsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -181,7 +181,7 @@ confirmationOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -211,7 +211,7 @@ pluginOptionsPage1 - XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -244,7 +244,7 @@ saveAndRestoreOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -274,7 +274,7 @@ securityOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -304,7 +304,7 @@ updatesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -334,7 +334,7 @@ graphsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -367,7 +367,7 @@ consolesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -400,7 +400,7 @@ connectionOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -439,7 +439,7 @@ verticalTabs - XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer.Panel1 @@ -556,6 +556,6 @@ OptionsDialog - XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/OptionsDialog.zh-CN.resx b/XenAdmin/Dialogs/OptionsDialog.zh-CN.resx index d3ec706cb..3cf641e51 100644 --- a/XenAdmin/Dialogs/OptionsDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/OptionsDialog.zh-CN.resx @@ -151,7 +151,7 @@ externalToolsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -181,7 +181,7 @@ confirmationOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConfirmationOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -211,7 +211,7 @@ pluginOptionsPage1 - XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.PluginOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -244,7 +244,7 @@ saveAndRestoreOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SaveAndRestoreOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -274,7 +274,7 @@ securityOptionsPage1 - XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.SecurityOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -304,7 +304,7 @@ updatesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.UpdatesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -334,7 +334,7 @@ graphsOptionsPage1 - XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.DisplayOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -367,7 +367,7 @@ consolesOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConsolesOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -400,7 +400,7 @@ connectionOptionsPage1 - XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.OptionsPages.ConnectionOptionsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ContentPanel @@ -439,7 +439,7 @@ verticalTabs - XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.VerticalTabs, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer.Panel1 @@ -556,6 +556,6 @@ OptionsDialog - XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.VerticallyTabbedDialog, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx index c1ef10771..fc4d3f4c4 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx @@ -229,7 +229,7 @@ updateLogOptionsDecentGroupBox - XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel3 @@ -280,7 +280,7 @@ label5 - XenAdmin.Controls.Common.AutoHeightLabel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.Common.AutoHeightLabel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -481,7 +481,7 @@ GraphTypeGroupBox - XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel3 @@ -589,7 +589,7 @@ TabGroupBox - XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel3 diff --git a/XenAdmin/Dialogs/OptionsPages/ExternalToolsOptionsPage.resx b/XenAdmin/Dialogs/OptionsPages/ExternalToolsOptionsPage.resx index fc35653bb..a26dcfcf7 100644 --- a/XenAdmin/Dialogs/OptionsPages/ExternalToolsOptionsPage.resx +++ b/XenAdmin/Dialogs/OptionsPages/ExternalToolsOptionsPage.resx @@ -404,7 +404,7 @@ sshConsoleGroupBox - XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DecentGroupBox, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null externalToolsLayoutPanel diff --git a/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.resx b/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.resx index 079d364a1..b008f07c1 100644 --- a/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.resx +++ b/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.resx @@ -338,7 +338,7 @@ dataGridViewActions - XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space]Main, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -491,6 +491,6 @@ CloseXenCenterWarningDialog - XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space]Main, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Images.cs b/XenAdmin/Images.cs index bc6243694..d875b8cc1 100644 --- a/XenAdmin/Images.cs +++ b/XenAdmin/Images.cs @@ -889,6 +889,7 @@ namespace XenAdmin public static Bitmap SpinningFrame5 = Properties.Resources.SpinningFrame5; public static Bitmap SpinningFrame6 = Properties.Resources.SpinningFrame6; public static Bitmap SpinningFrame7 = Properties.Resources.SpinningFrame7; + public static Bitmap splash = Properties.Resources.splash; public static Bitmap StoppedDC_16 = Properties.Resources.StoppedDC_16; public static Bitmap subscribe = Properties.Resources.subscribe; public static Bitmap suse_16x = Properties.Resources.suse_16x; diff --git a/XenAdmin/MainWindow.cs b/XenAdmin/MainWindow.cs index 375072042..49fcf1d03 100755 --- a/XenAdmin/MainWindow.cs +++ b/XenAdmin/MainWindow.cs @@ -61,7 +61,6 @@ using XenCenterLib; using System.Linq; using XenAdmin.Controls.GradientPanel; using XenAdmin.Help; -using System.IO; namespace XenAdmin { @@ -79,7 +78,7 @@ namespace XenAdmin /// /// The selected tab for the overview node. /// - private TabPage selectedOverviewTab = null; + private TabPage selectedOverviewTab; internal readonly PerformancePage PerformancePage = new PerformancePage(); internal readonly GeneralTabPage GeneralPage = new GeneralTabPage(); @@ -105,22 +104,22 @@ namespace XenAdmin internal readonly DockerDetailsPage DockerDetailsPage = new DockerDetailsPage(); internal readonly UsbPage UsbPage = new UsbPage(); - private ActionBase statusBarAction = null; + private ActionBase statusBarAction; - private bool IgnoreTabChanges = false; + private bool IgnoreTabChanges; /// /// Helper boolean to only trigger Resize_End when window is really resized by dragging edges /// Without this Resize_End is triggered even when window is moved around and not resized /// - private bool mainWindowResized = false; + private bool mainWindowResized; private readonly Dictionary> activePoolWizards = new Dictionary>(); /// /// The arguments passed in on the command line. /// - private string[] CommandLineParam = null; + private string[] CommandLineParam; private ArgType CommandLineArgType = ArgType.None; private static readonly System.Windows.Forms.Timer CheckForUpdatesTimer = new System.Windows.Forms.Timer(); @@ -144,9 +143,10 @@ namespace XenAdmin [DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern uint RegisterApplicationRestart(string pszCommandline, uint dwFlags); + public event Action CloseSplashRequested; + public MainWindow(ArgType argType, string[] args) { - Program.MainWindow = this; licenseManagerLauncher = new LicenseManagerLauncher(Program.MainWindow); HealthCheckOverviewLauncher = new HealthCheckOverviewLauncher(Program.MainWindow); InvokeHelper.Initialize(this); @@ -565,6 +565,16 @@ namespace XenAdmin statusLabel.Text = Helpers.FirstLine(message); } + public void CloseSplashScreen() + { + ThreadPool.QueueUserWorkItem(delegate + { + // Sleep a short time before closing the splash + Thread.Sleep(500); + Program.Invoke(Program.MainWindow, () => CloseSplashRequested?.Invoke()); + }); + } + private void MainWindow_Shown(object sender, EventArgs e) { MainMenuBar.Location = new Point(0, 0); @@ -598,12 +608,7 @@ namespace XenAdmin } } - ThreadPool.QueueUserWorkItem(delegate - { - // Sleep a short time before closing the splash - Thread.Sleep(500); - Program.Invoke(Program.MainWindow, Program.CloseSplash); - }); + CloseSplashScreen(); if (!Program.RunInAutomatedTestMode && !Helpers.CommonCriteriaCertificationRelease) { diff --git a/XenAdmin/MainWindow.resx b/XenAdmin/MainWindow.resx index 41cce683f..9b5b523b3 100644 --- a/XenAdmin/MainWindow.resx +++ b/XenAdmin/MainWindow.resx @@ -145,7 +145,7 @@ navigationPane - XenAdmin.Controls.MainWindowControls.NavigationPane, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.MainWindowControls.NavigationPane, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer1.Panel1 @@ -577,7 +577,7 @@ snapshotPage - XenAdmin.TabPages.SnapshotsPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.SnapshotsPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null TabPageSnapshots @@ -928,7 +928,7 @@ alertPage - XenAdmin.TabPages.AlertSummaryPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.AlertSummaryPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer1.Panel2 @@ -958,7 +958,7 @@ eventsPage - XenAdmin.TabPages.HistoryPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.HistoryPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer1.Panel2 @@ -1102,7 +1102,7 @@ loggedInLabel1 - XenAdmin.Controls.LoggedInLabel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.LoggedInLabel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolTipContainer1 @@ -1129,7 +1129,7 @@ toolTipContainer1 - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -1177,7 +1177,7 @@ TitleBackPanel - XenAdmin.Controls.GradientPanel.VerticalGradientPanel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.GradientPanel.VerticalGradientPanel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null splitContainer1.Panel2 @@ -1777,7 +1777,7 @@ ToolStrip - XenAdmin.Controls.ToolStripEx, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolStripEx, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null $this @@ -2794,7 +2794,7 @@ MainMenuBar - XenAdmin.Controls.MenuStripEx, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.MenuStripEx, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null MenuPanel @@ -2935,7 +2935,7 @@ AddServerToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator11 @@ -2947,19 +2947,19 @@ AddPoolToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null newStorageToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null NewVmToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator12 @@ -2971,79 +2971,79 @@ shutDownToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null powerOnHostToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null startVMToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null RebootToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null resumeToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null SuspendToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ForceShutdownToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ForceRebootToolbarButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null stopContainerToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null startContainerToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null restartContainerToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null resumeContainerToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null pauseContainerToolStripButton - XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripButton, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null statusToolTip @@ -3067,13 +3067,13 @@ FileImportVMToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null importSearchToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator21 @@ -3169,7 +3169,7 @@ AddPoolToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator8 @@ -3181,25 +3181,25 @@ addServerToolStripMenuItem - XenAdmin.Commands.AddHostToSelectedPoolToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.AddHostToSelectedPoolToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null removeServerToolStripMenuItem - XenAdmin.Commands.PoolRemoveServerToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.PoolRemoveServerToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null poolReconnectAsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null disconnectPoolToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator27 @@ -3211,7 +3211,7 @@ virtualAppliancesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator30 @@ -3223,73 +3223,73 @@ highAvailabilityToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemHaConfigure - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemHaDisable - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null disasterRecoveryToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null drConfigureToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null DrWizardToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null VMSnapshotScheduleToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null exportResourceReportPoolToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemWlb - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null wlbReportsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null wlbDisconnectToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null conversionToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator9 @@ -3301,19 +3301,19 @@ changePoolPasswordToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemRotateSecret - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemEnableTls - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItem1 @@ -3325,7 +3325,7 @@ deleteToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator26 @@ -3343,7 +3343,7 @@ PoolPropertiesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null HostMenuItem @@ -3355,7 +3355,7 @@ AddHostToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItem11 @@ -3367,25 +3367,25 @@ RebootHostToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null powerOnToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ShutdownHostToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null restartToolstackToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator1 @@ -3403,19 +3403,19 @@ ReconnectToolStripMenuItem1 - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null DisconnectToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null reconnectAsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator4 @@ -3427,25 +3427,25 @@ connectAllToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null disconnectAllToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null addServerToPoolMenuItem - XenAdmin.Commands.AddSelectedHostToPoolToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.AddSelectedHostToPoolToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null menuItemRemoveFromPool - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator3 @@ -3457,13 +3457,13 @@ backupToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null restoreFromBackupToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator23 @@ -3475,55 +3475,55 @@ toolStripMenuItemCertificate - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemInstallCertificate - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItemResetCertificate - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null maintenanceModeToolStripMenuItem1 - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null controlDomainMemoryToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null RemoveCrashdumpsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null HostPasswordToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ChangeRootPasswordToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null forgetSavedPasswordToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator25 @@ -3535,13 +3535,13 @@ destroyServerToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null removeHostToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator15 @@ -3559,7 +3559,7 @@ ServerPropertiesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null VMToolStripMenuItem @@ -3571,31 +3571,31 @@ NewVmToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null startShutdownToolStripMenuItem - XenAdmin.Commands.VMLifeCycleToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.VMLifeCycleToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null resumeOnToolStripMenuItem - XenAdmin.Commands.ResumeVMOnHostToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.ResumeVMOnHostToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null relocateToolStripMenuItem - XenAdmin.Commands.MigrateVMToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.MigrateVMToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null startOnHostToolStripMenuItem - XenAdmin.Commands.StartVMOnHostToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.StartVMOnHostToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator20 @@ -3607,13 +3607,13 @@ assignSnapshotScheduleToolStripMenuItem - XenAdmin.Commands.AssignGroupToolStripMenuItemVMSS, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.AssignGroupToolStripMenuItemVMSS, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null assignToVirtualApplianceToolStripMenuItem - XenAdmin.Commands.AssignGroupToolStripMenuItemVM_appliance, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.AssignGroupToolStripMenuItemVM_appliance, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItem9 @@ -3625,49 +3625,49 @@ copyVMtoSharedStorageMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null MoveVMToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null snapshotToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null convertToTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null exportToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null disableCbtToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null enablePVSReadcachingToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null disablePVSReadcachingToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItem12 @@ -3679,7 +3679,7 @@ installToolsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null sendCtrlAltDelToolStripMenuItem @@ -3697,7 +3697,7 @@ uninstallToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator10 @@ -3715,7 +3715,7 @@ VMPropertiesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripMenuItem8 @@ -3733,7 +3733,7 @@ AddStorageToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator22 @@ -3745,13 +3745,13 @@ RepairStorageToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null DefaultSRToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator2 @@ -3763,25 +3763,25 @@ virtualDisksToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null addVirtualDiskToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null attachVirtualDiskToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null reclaimFreedSpacetripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator19 @@ -3793,25 +3793,25 @@ DetachStorageToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ReattachStorageRepositoryToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ForgetStorageRepositoryToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null DestroyStorageRepositoryToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator18 @@ -3829,7 +3829,7 @@ SRPropertiesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null templatesToolStripMenuItem @@ -3841,19 +3841,19 @@ CreateVmFromTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null newVMFromTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null InstantVmToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator29 @@ -3865,13 +3865,13 @@ exportTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null duplicateTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator16 @@ -3883,7 +3883,7 @@ uninstallTemplateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator28 @@ -3901,7 +3901,7 @@ templatePropertiesToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolsToolStripMenuItem @@ -3913,13 +3913,13 @@ bugToolToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null healthCheckToolStripMenuItem1 - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator14 @@ -3943,13 +3943,13 @@ installNewUpdateToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null rollingUpgradeToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null toolStripSeparator6 @@ -4069,7 +4069,7 @@ securityGroupsToolStripMenuItem - XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Commands.CommandToolStripMenuItem, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null statusProgressBar diff --git a/XenAdmin/Program.cs b/XenAdmin/Program.cs index 74046beff..32d38dc9d 100644 --- a/XenAdmin/Program.cs +++ b/XenAdmin/Program.cs @@ -40,6 +40,7 @@ using System.IO; using System.Linq; using System.Net; using System.Reflection; +using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using XenAdmin.Core; @@ -61,8 +62,9 @@ namespace XenAdmin /// public static readonly string XenCenterUUID = Guid.NewGuid().ToString(); - private static NamedPipes.Pipe pipe; - private const string PIPE_PATH_PATTERN = @"\\.\pipe\XenCenter-{0}-{1}-{2}"; + private static NamedPipes.Pipe _pipe; + private static string _pipePath; + private const string PIPE_PATH_PATTERN = @"\\.\pipe\{0}-{1}"; public static Font DefaultFont = FormFontFixer.DefaultFont; public static Font DefaultFontBold; @@ -70,8 +72,7 @@ namespace XenAdmin public static Font DefaultFontItalic; public static Font DefaultFontHeader; - public static MainWindow MainWindow = null; - + public static MainWindow MainWindow { get; private set; } public static CollectionChangeEventHandler ProgramInvokeHandler(CollectionChangeEventHandler handler) { @@ -88,7 +89,6 @@ namespace XenAdmin }; } - /// /// The secure hash of the main password used to load the client session. /// If this is null then no prior session existed and the user should be prompted @@ -104,7 +104,7 @@ namespace XenAdmin public static bool RunInAutomatedTestMode = false; public static string TestExceptionString; // an exception passed back to the test framework - private static log4net.ILog log; + private static readonly log4net.ILog log; public static volatile bool Exiting; @@ -133,6 +133,15 @@ namespace XenAdmin [STAThread] public static void Main(string[] args) { + string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value; + _pipePath = string.Format(PIPE_PATH_PATTERN, BrandManager.BrandConsoleNoSpace, appGuid); + + if (NamedPipes.Pipe.ExistsPipe(_pipePath)) + { + NamedPipes.Pipe.SendMessageToPipe(_pipePath, string.Join(" ", args)); + return; + } + Settings.Load(); // Reset statics, because XenAdminTests likes to call Main() twice. @@ -174,10 +183,7 @@ namespace XenAdmin LogSystemDetails(); Settings.Log(); - // Remove the '--wait' argument, which may have been passed to the splash screen - var sanitizedArgs = args.Where(ar => ar != "--wait").ToArray(); - - var firstArgType = ParseFileArgs(sanitizedArgs, out string[] tailArgs); + var firstArgType = ParseFileArgs(args, out string[] tailArgs); if (firstArgType == ArgType.Passwords) { @@ -194,27 +200,20 @@ namespace XenAdmin return; } - try - { - ConnectPipe(); - } - catch (Win32Exception exn) - { - log.Error("Creating named pipe failed. Continuing to launch XenCenter.", exn); - } + ConnectPipe(); Application.ApplicationExit -= Application_ApplicationExit; Application.ApplicationExit += Application_ApplicationExit; - MainWindow mainWindow = new MainWindow(firstArgType, tailArgs); - Application.Run(mainWindow); + MainWindow = new MainWindow(firstArgType, tailArgs); + Application.Run(new SplashScreenContext(MainWindow)); log.Info("Application main thread exited"); } private static ArgType ParseFileArgs(string[] args, out string[] tailArgs) { - tailArgs = new string[0]; + tailArgs = Array.Empty(); if (args == null || args.Length < 2) { @@ -259,84 +258,47 @@ namespace XenAdmin } /// - /// Connects to the XenCenter named pipe. If the pipe didn't already exist, a new thread is started - /// that listens for incoming data on the pipe (from new invocations of XenCenter) and deals - /// with the command line arguments of those instances. If the pipe does exist, a Win32Exception is thrown. + /// If the pipe doesn't already exist, it creates a new one and starts a thread + /// that listens for incoming data on the pipe (from new invocations of XenCenter) + /// and deals with the command line arguments of those instances. /// - /// If creating the pipe failed for any reason. private static void ConnectPipe() { - string pipe_path = string.Format(PIPE_PATH_PATTERN, Process.GetCurrentProcess().SessionId, Environment.UserName, Assembly.GetExecutingAssembly().Location.Replace('\\', '-')); + _pipe = new NamedPipes.Pipe(_pipePath); - // Pipe path must be limited to 256 characters in length - if (pipe_path.Length > 256) + if (_pipe != null) { - pipe_path = pipe_path.Substring(0, 256); + _pipe.Read += pipe_Read; + _pipe.BeginRead(); } + } - log.InfoFormat(@"Connecting to pipe '{0}'", pipe_path); - // Line below may throw Win32Exception - pipe = new NamedPipes.Pipe(pipe_path); + private static void pipe_Read(string message) + { + MainWindow m = MainWindow; + if (m == null || RunInAutomatedTestMode) + return; - log.InfoFormat(@"Successfully created pipe '{0}' - proceeding to launch XenCenter", pipe_path); + var bits = message.Split(' ').ToArray(); - pipe.Read += delegate (object sender, NamedPipes.PipeReadEventArgs e) + var firstArgType = ParseFileArgs(bits, out string[] tailArgs); + + if (firstArgType == ArgType.None) + return; + + Invoke(m, delegate { - MainWindow m = MainWindow; - if (m == null || RunInAutomatedTestMode) - return; - - var bits = e.Message.Split(' ').Where(ar => ar != "--wait").ToArray(); - - var firstArgType = ParseFileArgs(bits, out string[] tailArgs); - - if (firstArgType == ArgType.Passwords) - { - log.ErrorFormat("Refusing to accept passwords request down pipe. Use {0}Main.exe directly", BrandManager.BrandConsole.Replace(" ", "")); - return; - } - if (firstArgType == ArgType.Connect) - { - log.ErrorFormat("Connect not supported down pipe. Use {0}Main.exe directly", BrandManager.BrandConsole.Replace(" ", "")); - return; - } - if (firstArgType == ArgType.None) - return; - - // The C++ splash screen passes its command line as a literal string. - // This means we will get an e.Message like - // open "C:\Documents and Settings\foo.xva" - // INCLUDING the double quotes, thus we need to trim them - - var argument = tailArgs[0]; - - if (argument.StartsWith("\"")) - { - var count = tailArgs.TakeWhile(t => !t.EndsWith("\"")).Count(); - if (count < tailArgs.Length) - count++; - argument = string.Join(" ", tailArgs.Take(count).ToArray()); - } - - argument = argument.Trim('"'); - - Invoke(m, delegate - { - m.WindowState = FormWindowState.Normal; - m.ProcessCommand(firstArgType, argument); - }); - }; - - pipe.BeginRead(); - // We created the pipe successfully - i.e. nobody was listening, so go ahead and start XenCenter + m.WindowState = FormWindowState.Normal; + m.ProcessCommand(firstArgType, tailArgs); + }); } internal static void DisconnectPipe() { - if (pipe != null) + if (_pipe != null) { log.Debug("Disconnecting from named pipe in Program.DisconnectPipe()"); - ThreadPool.QueueUserWorkItem(state => pipe.Disconnect()); + ThreadPool.QueueUserWorkItem(state => _pipe.EndRead()); } } @@ -803,22 +765,9 @@ namespace XenAdmin { return !Exiting && c != null && !c.Disposing && !c.IsDisposed && c.IsHandleCreated; } + #endregion - private const string SplashWindowClass = "XenCenterSplash0001"; - - internal static void CloseSplash() - { - IntPtr hWnd = Win32.FindWindow(SplashWindowClass, null); - - if (hWnd == IntPtr.Zero) - return; - - if (!Win32.PostMessage(hWnd, Win32.WM_DESTROY, IntPtr.Zero, IntPtr.Zero)) - { - log.Warn("PostMessage WM_DESTROY failed in CloseSplash()", new Win32Exception()); - } - } public static void OpenURL(string url) { if (RunInAutomatedTestMode || string.IsNullOrEmpty(url)) @@ -845,6 +794,39 @@ namespace XenAdmin public static string VersionAndLanguage => $"{Version}.{CurrentLanguage}"; public static CultureInfo CurrentCulture => Thread.CurrentThread.CurrentCulture; + + + private class SplashScreenContext : ApplicationContext + { + private readonly SplashScreen _splashScreen; + private readonly MainWindow _mainWindow; + + public SplashScreenContext(MainWindow mainWindow) + { + _mainWindow = mainWindow; + _mainWindow.CloseSplashRequested += _mainWindow_CloseSplashRequested; + _mainWindow.FormClosed += mainWindow_FormClosed; + + _splashScreen = new SplashScreen(); + _splashScreen.ShowMainWindowRequested += _splashScreen_ShowMainWindowRequested; + _splashScreen.Show(); + } + + private void _splashScreen_ShowMainWindowRequested() + { + _mainWindow.Show(); + } + + private void _mainWindow_CloseSplashRequested() + { + _splashScreen.Close(); + } + + private void mainWindow_FormClosed(object s, FormClosedEventArgs args) + { + ExitThread(); + } + } } public enum ArgType { Import, License, Restore, None, XenSearch, Passwords, Connect } diff --git a/XenAdmin/Properties/Resources.Designer.cs b/XenAdmin/Properties/Resources.Designer.cs index 8dbc4e975..e6d6577f5 100755 --- a/XenAdmin/Properties/Resources.Designer.cs +++ b/XenAdmin/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace XenAdmin.Properties { // 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. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -2169,16 +2169,6 @@ namespace XenAdmin.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap rocky_16x { - get { - object obj = ResourceManager.GetObject("rocky_16x", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } /// /// Looks up a localized resource of type System.Drawing.Bitmap. @@ -2800,6 +2790,16 @@ namespace XenAdmin.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap rocky_16x { + get { + object obj = ResourceManager.GetObject("rocky_16x", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -3050,6 +3050,16 @@ namespace XenAdmin.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap splash { + get { + object obj = ResourceManager.GetObject("splash", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/XenAdmin/Properties/Resources.resx b/XenAdmin/Properties/Resources.resx index 8084c62d1..8d8a47f4e 100755 --- a/XenAdmin/Properties/Resources.resx +++ b/XenAdmin/Properties/Resources.resx @@ -1132,4 +1132,7 @@ ..\..\Branding\Images\RightArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\..\Branding\Images\splash.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/XenAdmin/Settings.cs b/XenAdmin/Settings.cs index 201b469a0..42395ed3e 100644 --- a/XenAdmin/Settings.cs +++ b/XenAdmin/Settings.cs @@ -169,10 +169,7 @@ namespace XenAdmin return; } - // close the splash screen before opening the password dialog (the main window closes the - // splash screen after this method is called, however, this cannot happen because the dialog - // is launched modally blocking the UI thread and is additionally behind the splash screen) - Program.CloseSplash(); + Program.MainWindow.CloseSplashScreen(); string password = null; do diff --git a/XenAdmin/SplashScreen.Designer.cs b/XenAdmin/SplashScreen.Designer.cs new file mode 100644 index 000000000..fd7f643a9 --- /dev/null +++ b/XenAdmin/SplashScreen.Designer.cs @@ -0,0 +1,71 @@ +namespace XenAdmin +{ + partial class SplashScreen + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen)); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.TabStop = false; + // + // timer1 + // + this.timer1.Interval = 2000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // SplashScreen + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.ControlBox = false; + this.Controls.Add(this.pictureBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "SplashScreen"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.TopMost = true; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Timer timer1; + } +} + diff --git a/splash/util.h b/XenAdmin/SplashScreen.cs similarity index 65% rename from splash/util.h rename to XenAdmin/SplashScreen.cs index 0ff1bceca..193848e59 100644 --- a/splash/util.h +++ b/XenAdmin/SplashScreen.cs @@ -1,4 +1,4 @@ -/* Copyright (c) Citrix Systems, Inc. +/* Copyright (c) Cloud Software Group Holdings, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, @@ -29,14 +29,31 @@ * SUCH DAMAGE. */ -#ifndef UTIL_H -#define UTIL_H +using System; +using System.Windows.Forms; -#include -#include +namespace XenAdmin +{ + public partial class SplashScreen : Form + { + public event Action ShowMainWindowRequested; -using namespace std; + public SplashScreen() + { + InitializeComponent(); + pictureBox1.Image = Images.StaticImages.splash; + } -void ErrorExit(wostringstream& logStream, const LPTSTR lpszFunction, bool showDialog); + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + timer1.Start(); + } -#endif + private void timer1_Tick(object sender, EventArgs e) + { + timer1.Stop(); + ShowMainWindowRequested?.Invoke(); + } + } +} diff --git a/XenAdmin/SplashScreen.ja.resx b/XenAdmin/SplashScreen.ja.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/SplashScreen.ja.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/SplashScreen.resx b/XenAdmin/SplashScreen.resx new file mode 100644 index 000000000..fbc43df9b --- /dev/null +++ b/XenAdmin/SplashScreen.resx @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 0, 0 + + + + 0, 0, 0, 0 + + + 415, 217 + + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 17, 17 + + + True + + + 96, 96 + + + True + + + GrowAndShrink + + + 435, 246 + + + CenterScreen + + + SplashScreen + + + timer1 + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + SplashScreen + + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/SplashScreen.zh-CN.resx b/XenAdmin/SplashScreen.zh-CN.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/SplashScreen.zh-CN.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/TabPages/AdPage.ja.resx b/XenAdmin/TabPages/AdPage.ja.resx index 7ab469ae0..178a19ee9 100644 --- a/XenAdmin/TabPages/AdPage.ja.resx +++ b/XenAdmin/TabPages/AdPage.ja.resx @@ -322,7 +322,7 @@ tTipRemoveButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -379,7 +379,7 @@ tTipLogoutButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -436,7 +436,7 @@ tTipChangeRole - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -826,6 +826,6 @@ AdPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/TabPages/AdPage.resx b/XenAdmin/TabPages/AdPage.resx index fbe678cd4..0ca7abb98 100644 --- a/XenAdmin/TabPages/AdPage.resx +++ b/XenAdmin/TabPages/AdPage.resx @@ -322,7 +322,7 @@ tTipRemoveButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -379,7 +379,7 @@ tTipLogoutButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -436,7 +436,7 @@ tTipChangeRole - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -826,6 +826,6 @@ AdPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/TabPages/AdPage.zh-CN.resx b/XenAdmin/TabPages/AdPage.zh-CN.resx index af36bbc6d..cb823ea40 100644 --- a/XenAdmin/TabPages/AdPage.zh-CN.resx +++ b/XenAdmin/TabPages/AdPage.zh-CN.resx @@ -322,7 +322,7 @@ tTipRemoveButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -379,7 +379,7 @@ tTipLogoutButton - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -436,7 +436,7 @@ tTipChangeRole - XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.ToolTipContainer, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null flowLayoutPanel1 @@ -826,6 +826,6 @@ AdPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/TabPages/BaseTabPage.ja.resx b/XenAdmin/TabPages/BaseTabPage.ja.resx index 9a21ab2bb..581a70f38 100644 --- a/XenAdmin/TabPages/BaseTabPage.ja.resx +++ b/XenAdmin/TabPages/BaseTabPage.ja.resx @@ -199,7 +199,7 @@ deprecationBanner1 - XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanelBanner @@ -298,7 +298,7 @@ gradientPanel1 - XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null $this diff --git a/XenAdmin/TabPages/BaseTabPage.resx b/XenAdmin/TabPages/BaseTabPage.resx index 76ba499f9..27e8be7fa 100644 --- a/XenAdmin/TabPages/BaseTabPage.resx +++ b/XenAdmin/TabPages/BaseTabPage.resx @@ -199,7 +199,7 @@ deprecationBanner1 - XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanelBanner @@ -298,7 +298,7 @@ gradientPanel1 - XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null $this diff --git a/XenAdmin/TabPages/BaseTabPage.zh-CN.resx b/XenAdmin/TabPages/BaseTabPage.zh-CN.resx index bfcc473e5..ff76289da 100644 --- a/XenAdmin/TabPages/BaseTabPage.zh-CN.resx +++ b/XenAdmin/TabPages/BaseTabPage.zh-CN.resx @@ -199,7 +199,7 @@ deprecationBanner1 - XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DeprecationBanner, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanelBanner @@ -298,7 +298,7 @@ gradientPanel1 - XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.GradientPanel.HorizontalGradientPanel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null $this diff --git a/XenAdmin/TabPages/GeneralTabPage.ja.resx b/XenAdmin/TabPages/GeneralTabPage.ja.resx index ba6ad8773..a91e71f57 100644 --- a/XenAdmin/TabPages/GeneralTabPage.ja.resx +++ b/XenAdmin/TabPages/GeneralTabPage.ja.resx @@ -157,7 +157,7 @@ pdSectionReadCaching - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelReadCaching @@ -226,7 +226,7 @@ pdSectionDockerInfo - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerInfo @@ -295,7 +295,7 @@ pdSectionDockerVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerVersion @@ -364,7 +364,7 @@ pdSectionStorageLinkSystemCapabilities - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLinkSystemCapabilities @@ -433,7 +433,7 @@ pdSectionMultipathBoot - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathBoot @@ -502,7 +502,7 @@ pdStorageLink - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLink @@ -571,7 +571,7 @@ pdSectionVCPUs - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemoryAndVCPUs @@ -640,7 +640,7 @@ pdSectionMultipathing - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathing @@ -709,7 +709,7 @@ pdSectionStatus - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStatus @@ -778,7 +778,7 @@ pdSectionHighAvailability - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelHighAvailability @@ -847,7 +847,7 @@ pdSectionBootOptions - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelBootOptions @@ -916,7 +916,7 @@ pdSectionCPU - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCPU @@ -985,7 +985,7 @@ pdSectionMemory - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemory @@ -1054,7 +1054,7 @@ pdSectionManagementInterfaces - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelManagementInterfaces @@ -1123,7 +1123,7 @@ pdSectionUpdates - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelUpdates @@ -1192,7 +1192,7 @@ pdSectionVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelVersion @@ -1261,7 +1261,7 @@ pdSectionLicense - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelLicense @@ -1330,7 +1330,7 @@ pdSectionCustomFields - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCustomFields @@ -1399,7 +1399,7 @@ pdSectionCertificate - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCertificate @@ -1468,7 +1468,7 @@ pdSectionGeneral - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelGeneral @@ -1519,7 +1519,7 @@ panel2 - XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null pageContainerPanel @@ -1687,6 +1687,6 @@ GeneralTabPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/TabPages/GeneralTabPage.resx b/XenAdmin/TabPages/GeneralTabPage.resx index 978ec67a7..97bc5ef54 100644 --- a/XenAdmin/TabPages/GeneralTabPage.resx +++ b/XenAdmin/TabPages/GeneralTabPage.resx @@ -157,7 +157,7 @@ pdSectionReadCaching - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelReadCaching @@ -226,7 +226,7 @@ pdSectionDockerInfo - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerInfo @@ -295,7 +295,7 @@ pdSectionDockerVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerVersion @@ -364,7 +364,7 @@ pdSectionStorageLinkSystemCapabilities - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLinkSystemCapabilities @@ -433,7 +433,7 @@ pdSectionMultipathBoot - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathBoot @@ -502,7 +502,7 @@ pdStorageLink - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLink @@ -571,7 +571,7 @@ pdSectionVCPUs - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemoryAndVCPUs @@ -640,7 +640,7 @@ pdSectionMultipathing - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathing @@ -709,7 +709,7 @@ pdSectionStatus - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStatus @@ -778,7 +778,7 @@ pdSectionHighAvailability - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelHighAvailability @@ -847,7 +847,7 @@ pdSectionBootOptions - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelBootOptions @@ -916,7 +916,7 @@ pdSectionCPU - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCPU @@ -985,7 +985,7 @@ pdSectionMemory - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemory @@ -1054,7 +1054,7 @@ pdSectionManagementInterfaces - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelManagementInterfaces @@ -1123,7 +1123,7 @@ pdSectionUpdates - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelUpdates @@ -1192,7 +1192,7 @@ pdSectionVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelVersion @@ -1261,7 +1261,7 @@ pdSectionLicense - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelLicense @@ -1330,7 +1330,7 @@ pdSectionCustomFields - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCustomFields @@ -1399,7 +1399,7 @@ pdSectionCertificate - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCertificate @@ -1468,7 +1468,7 @@ pdSectionGeneral - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelGeneral @@ -1519,7 +1519,7 @@ panel2 - XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null pageContainerPanel @@ -1687,6 +1687,6 @@ GeneralTabPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/TabPages/GeneralTabPage.zh-CN.resx b/XenAdmin/TabPages/GeneralTabPage.zh-CN.resx index 2cda7389e..e879cb6a4 100644 --- a/XenAdmin/TabPages/GeneralTabPage.zh-CN.resx +++ b/XenAdmin/TabPages/GeneralTabPage.zh-CN.resx @@ -157,7 +157,7 @@ pdSectionReadCaching - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelReadCaching @@ -226,7 +226,7 @@ pdSectionDockerInfo - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerInfo @@ -295,7 +295,7 @@ pdSectionDockerVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelDockerVersion @@ -364,7 +364,7 @@ pdSectionStorageLinkSystemCapabilities - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLinkSystemCapabilities @@ -433,7 +433,7 @@ pdSectionMultipathBoot - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathBoot @@ -502,7 +502,7 @@ pdStorageLink - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStorageLink @@ -571,7 +571,7 @@ pdSectionVCPUs - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemoryAndVCPUs @@ -640,7 +640,7 @@ pdSectionMultipathing - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMultipathing @@ -709,7 +709,7 @@ pdSectionStatus - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelStatus @@ -778,7 +778,7 @@ pdSectionHighAvailability - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelHighAvailability @@ -847,7 +847,7 @@ pdSectionBootOptions - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelBootOptions @@ -916,7 +916,7 @@ pdSectionCPU - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCPU @@ -985,7 +985,7 @@ pdSectionMemory - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelMemory @@ -1054,7 +1054,7 @@ pdSectionManagementInterfaces - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelManagementInterfaces @@ -1123,7 +1123,7 @@ pdSectionUpdates - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelUpdates @@ -1192,7 +1192,7 @@ pdSectionVersion - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelVersion @@ -1261,7 +1261,7 @@ pdSectionLicense - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelLicense @@ -1330,7 +1330,7 @@ pdSectionCustomFields - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCustomFields @@ -1399,7 +1399,7 @@ pdSectionCertificate - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelCertificate @@ -1468,7 +1468,7 @@ pdSectionGeneral - XenAdmin.Controls.PDSection, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PDSection, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null panelGeneral @@ -1519,7 +1519,7 @@ panel2 - XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.PanelNoFocusScroll, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null pageContainerPanel @@ -1687,6 +1687,6 @@ GeneralTabPage - XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.TabPages.BaseTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx b/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx index b61f6c75c..d51494487 100644 --- a/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx +++ b/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx @@ -316,7 +316,7 @@ dataGridView1 - XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -577,6 +577,6 @@ DRFailoverWizardPrecheckPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/DRWizards/DRFailoverWizardRecoverPage.resx b/XenAdmin/Wizards/DRWizards/DRFailoverWizardRecoverPage.resx index e52f2f260..d33b140c1 100644 --- a/XenAdmin/Wizards/DRWizards/DRFailoverWizardRecoverPage.resx +++ b/XenAdmin/Wizards/DRWizards/DRFailoverWizardRecoverPage.resx @@ -193,7 +193,7 @@ dataGridView1 - XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -361,6 +361,6 @@ DRFailoverWizardRecoverPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.resx b/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.resx index f925473af..665151cbf 100644 --- a/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.resx +++ b/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.resx @@ -409,6 +409,6 @@ AutomatedUpdatesBasePage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.ja.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.ja.resx index d3858c18d..edbcd16d0 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.ja.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.ja.resx @@ -446,6 +446,6 @@ PatchingWizard_FirstPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.resx index baf9cfa69..0355a3dc7 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.resx @@ -446,6 +446,6 @@ PatchingWizard_FirstPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.zh-CN.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.zh-CN.resx index 043572484..d965cdaae 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.zh-CN.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_FirstPage.zh-CN.resx @@ -446,6 +446,6 @@ PatchingWizard_FirstPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.ja.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.ja.resx index 28ca55c64..7f8ba3180 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.ja.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.ja.resx @@ -292,6 +292,6 @@ PatchingWizard_SelectPatchPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.resx index c8a3dd40a..242f14a43 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.resx @@ -292,6 +292,6 @@ PatchingWizard_SelectPatchPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.zh-CN.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.zh-CN.resx index 288b5c317..7fe6ee2df 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.zh-CN.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.zh-CN.resx @@ -292,6 +292,6 @@ PatchingWizard_SelectPatchPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.ja.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.ja.resx index 3cd611b1b..a9731c194 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.ja.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.ja.resx @@ -220,7 +220,7 @@ dataGridViewHosts - XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -355,6 +355,6 @@ PatchingWizard_SelectServers - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.resx index 70be664c7..bab5d7537 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.resx @@ -220,7 +220,7 @@ dataGridViewHosts - XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -355,6 +355,6 @@ PatchingWizard_SelectServers - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.zh-CN.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.zh-CN.resx index d4c48eeee..fb602300c 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.zh-CN.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.zh-CN.resx @@ -220,7 +220,7 @@ dataGridViewHosts - XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Wizards.PatchingWizard.PatchingWizard_SelectServers+PatchingHostsDataGridView, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -355,6 +355,6 @@ PatchingWizard_SelectServers - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx index ba7b72c73..7a06ac34a 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx +++ b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx @@ -382,6 +382,6 @@ RollingUpgradeExtrasPage - XenAdmin.Controls.XenTabPage, [XenCenter_No_Space]Main, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/XenAdmin.csproj b/XenAdmin/XenAdmin.csproj index 710d01f72..e2312ca09 100755 --- a/XenAdmin/XenAdmin.csproj +++ b/XenAdmin/XenAdmin.csproj @@ -9,7 +9,7 @@ WinExe Properties XenAdmin - [XenCenter_No_Space]Main + [XenCenter_No_Space] ..\Branding\Images\AppIcon.ico v4.8 publish\ @@ -480,6 +480,12 @@ WlbThresholdsPage.cs + + Form + + + SplashScreen.cs + UserControl @@ -2139,6 +2145,15 @@ Designer WlbThresholdsPage.cs + + SplashScreen.cs + + + SplashScreen.cs + + + SplashScreen.cs + AdPage.cs Designer @@ -6689,6 +6704,9 @@ + + Images\splash.bmp + PreserveNewest @@ -6770,4 +6788,4 @@ copy "$(ProjectDir)\ReportViewer\resource_report.rdlc" "$(TargetDir)" - + \ No newline at end of file diff --git a/XenAdminTests/CodeTests/AssemblyTests.cs b/XenAdminTests/CodeTests/AssemblyTests.cs index def4db289..0903cbbe7 100644 --- a/XenAdminTests/CodeTests/AssemblyTests.cs +++ b/XenAdminTests/CodeTests/AssemblyTests.cs @@ -45,7 +45,7 @@ namespace XenAdminTests.CodeTests [TestFixture, Category(TestCategories.Unit)] public class AssemblyTests { - private static readonly string MainAssemblyName = $"{BrandManager.BrandConsoleNoSpace}Main"; + private static readonly string MainAssemblyName = BrandManager.BrandConsoleNoSpace; public class TestDataClass { diff --git a/XenCenterLib/NamedPipes.cs b/XenCenterLib/NamedPipes.cs index 51bc374ae..854a6aa5f 100644 --- a/XenCenterLib/NamedPipes.cs +++ b/XenCenterLib/NamedPipes.cs @@ -32,6 +32,7 @@ using System; using System.ComponentModel; using System.IO; +using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; @@ -237,29 +238,52 @@ namespace XenCenterLib private static extern bool CloseHandle(IntPtr hObject); private const string STOP_LISTENING_MSG = "stop-listening-on-pipe"; + private const uint PIPE_CALL_TIMEOUT = 30 * 1000; //30sec + public class Pipe { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public readonly IntPtr Handle; - public EventHandler Read; + private readonly IntPtr Handle; private Thread pipeThread; private readonly string pipePath; private volatile bool run; - /// If creating the pipe failed for any reason. + public event Action Read; + public Pipe(string path) { - this.pipePath = path; + pipePath = path; Handle = CreateNamedPipe(pipePath, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 512, 512, NMPWAIT_WAIT_FOREVER, IntPtr.Zero); + if (Handle.ToInt32() == INVALID_HANDLE_VALUE) - { - // Throw last win32 exception - throw new Win32Exception(); - } + log.Error($"Creating named pipe {path} failed.", new Win32Exception()); + else + log.Info($"Successfully created named pipe '{path}'."); + } + + public static bool ExistsPipe(string pipePath) + { + log.Debug($"Checking {pipePath} exists"); + return Directory.GetFiles(@"\\.\pipe\").Contains(pipePath); + } + + /// + /// Send a message to the pipe with the given path. May block for up to PIPE_CALL_TIMEOUT milliseconds. + /// + public static void SendMessageToPipe(string pipePath, string message) + { + byte[] msg = Encoding.Unicode.GetBytes(message); + byte[] rcv = Array.Empty(); + var success = CallNamedPipe(pipePath, msg, (uint)msg.Length, rcv, (uint)rcv.Length, out _, PIPE_CALL_TIMEOUT); + + if (success) + log.Debug($"Message successfully forwarded to {pipePath})"); + else + log.Error($"Failed to forward message to {pipePath} with native error code {new Win32Exception().NativeErrorCode}"); } /// @@ -271,28 +295,17 @@ namespace XenCenterLib if (pipeThread == null) { run = true; - pipeThread = new Thread((ThreadStart)BackgroundPipeThread); - pipeThread.Name = "Named pipe thread"; - pipeThread.IsBackground = true; + pipeThread = new Thread(BackgroundPipeThread) { Name = "Named pipe thread", IsBackground = true }; pipeThread.Start(); } } /// - /// May block for up to 30 seconds. + /// Stops reading from this pipe. May block for up to PIPE_CALL_TIMEOUT milliseconds. /// - public void Disconnect() + public void EndRead() { - // Now connect to our own NamedPipe and sent a disconnect message - if (pipeThread != null) - { - byte[] msg = Encoding.UTF8.GetBytes(STOP_LISTENING_MSG); - byte[] rcv = new byte[0]; - UInt32 bytesRead; - UInt32 timeout = 30 * 1000; - - CallNamedPipe(pipePath, msg, (UInt32)msg.Length, rcv, (UInt32)rcv.Length, out bytesRead, timeout); - } + SendMessageToPipe(pipePath, STOP_LISTENING_MSG); } private void BackgroundPipeThread() @@ -306,22 +319,15 @@ namespace XenCenterLib { Win32Exception exn = new Win32Exception(); if (exn.NativeErrorCode == ERROR_PIPE_CONNECTED) - { - // This is OK. It simply means a remote process has connected to the - // named pipe since we did the CreateNamedPipe. - } + log.Debug("A remote process has already connected to the named pipe since we called CreateNamedPipe."); else - { throw new Win32Exception("ConnectNamedPipe failed", exn); - } } ProcessPipeMessage(); if (!DisconnectNamedPipe(Handle)) - { throw new Win32Exception("DisconnectNamedPipe failed", new Win32Exception()); - } } catch (Exception exn) { @@ -354,11 +360,10 @@ namespace XenCenterLib // Peek at the pipe to see how much data is available // Read the data and append it to the buffer // If we get ERROR_MORE_DATA, repeat - UInt32 bytesRead, bytesAvailable, bytesLeft; // First peek into the pipe to see how much data is waiting. - byte[] peekBuf = new byte[0]; - if (!PeekNamedPipe(Handle, peekBuf, (UInt32)peekBuf.Length, out bytesRead, out bytesAvailable, out bytesLeft)) + byte[] peekBuf = Array.Empty(); + if (!PeekNamedPipe(Handle, peekBuf, (uint)peekBuf.Length, out var bytesRead, out var bytesAvailable, out var bytesLeft)) { throw new Win32Exception( string.Format("PeekNamedPipe failed. bytesRead={0} bytesAvailable={1} bytesLeft={2}", @@ -374,7 +379,7 @@ namespace XenCenterLib // Now allocate a buffer of the correct size and read in the message. byte[] readBuf = new byte[bytesAvailable]; - if (!ReadFile(Handle, readBuf, (UInt32)readBuf.Length, out bytesRead, ref overlapped)) + if (!ReadFile(Handle, readBuf, (uint)readBuf.Length, out bytesRead, ref overlapped)) { Win32Exception exn = new Win32Exception(); if (exn.NativeErrorCode == ERROR_MORE_DATA) @@ -386,37 +391,27 @@ namespace XenCenterLib ms.Write(readBuf, 0, (int)bytesRead); continue; } - else - { - throw new Win32Exception( - string.Format("ReadFile failed. readBuf.Length={0} bytesRead={1}", - readBuf.Length, bytesRead), exn); - } - } - else - { - ms.Write(readBuf, 0, (int)bytesRead); - break; + + throw new Win32Exception($"ReadFile failed. readBuf.Length={readBuf.Length} bytesRead={bytesRead}", exn); } + + ms.Write(readBuf, 0, (int)bytesRead); + break; } readMessage = ms.ToArray(); } // Now perform a zero-byte write. This causes the CallNamedPipe call to // return successfully in the splash screen. - UInt32 bytesWritten; - byte[] toWrite = new byte[0]; - if (!WriteFile(Handle, toWrite, (UInt32)toWrite.Length, out bytesWritten, ref overlapped)) + byte[] toWrite = Array.Empty(); + if (!WriteFile(Handle, toWrite, (uint)toWrite.Length, out var bytesWritten, ref overlapped)) { - throw new Win32Exception( - string.Format("WriteFile failed. toWrite.Length={0} bytesWritten={1}", - toWrite.Length, bytesWritten), - new Win32Exception()); + throw new Win32Exception($"WriteFile failed. toWrite.Length={toWrite.Length} bytesWritten={bytesWritten}", new Win32Exception()); } - PipeReadEventArgs e = new PipeReadEventArgs(readMessage); + var message = Encoding.Unicode.GetString(readMessage); - if (e.Message == STOP_LISTENING_MSG) + if (message == STOP_LISTENING_MSG) { log.Debug("NamedPipe thread was told to stop listening"); run = false; @@ -424,20 +419,7 @@ namespace XenCenterLib } // Now inform any listeners of the received data. - if (Read != null) - { - Read(null, e); - } - } - } - - public class PipeReadEventArgs : EventArgs - { - public readonly string Message; - - public PipeReadEventArgs(byte[] bytes) - { - Message = Encoding.Unicode.GetString(bytes); + Read?.Invoke(message); } } } diff --git a/scripts/re-branding.sh b/scripts/re-branding.sh index 66aa3e029..7e99769de 100644 --- a/scripts/re-branding.sh +++ b/scripts/re-branding.sh @@ -30,15 +30,6 @@ GLOBAL_BUILD_NUMBER=$1 REPO="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" -version_cpp() -{ - num=$(echo "${BRANDING_XC_PRODUCT_VERSION}.${GLOBAL_BUILD_NUMBER}" | sed 's/\./, /g') - sed -b -i -e "s/1,0,0,1/${num}/g" \ - -e "s/1, 0, 0, 1/${num}/g" \ - -e "s/@BUILD_NUMBER@/${GLOBAL_BUILD_NUMBER}/g" \ - $1 -} - version_csharp() { sed -b -i -e "s/0\.0\.0\.0/${BRANDING_XC_PRODUCT_VERSION}.${GLOBAL_BUILD_NUMBER}/g" \ @@ -64,12 +55,6 @@ rebranding_global() $1 } -#splace rebranding -for file in splash.rc main.cpp splash.vcproj splash.vcxproj util.cpp -do - version_cpp "${REPO}/splash/${file}" && rebranding_global "${REPO}/splash/${file}" -done - #AssemblyInfo rebranding for projectName in CommandLib xe XenAdmin XenAdminTests XenCenterLib XenModel XenOvfApi XenServerHealthCheck xva_verify do diff --git a/scripts/xenadmin-build.sh b/scripts/xenadmin-build.sh index 1d635a84a..d75ec6719 100644 --- a/scripts/xenadmin-build.sh +++ b/scripts/xenadmin-build.sh @@ -81,14 +81,14 @@ cd ${REPO} && "${MSBUILD}" ${SWITCHES} XenAdmin.sln SIGN_BAT="${REPO}/scripts/sign.bat" if [ -f "${SIGN_BAT}" ] ; then - for file in ${BRANDING_BRAND_CONSOLE_NO_SPACE}Main.exe CommandLib.dll MSTSCLib.dll CoreUtilsLib.dll XenModel.dll XenOvf.dll + for file in ${BRANDING_BRAND_CONSOLE_NO_SPACE}.exe CommandLib.dll MSTSCLib.dll CoreUtilsLib.dll XenModel.dll XenOvf.dll do cd ${REPO}/XenAdmin/bin/Release && ${SIGN_BAT} ${file} "${BRANDING_BRAND_CONSOLE}" done for locale in ja zh-CN do - for file in ${BRANDING_BRAND_CONSOLE_NO_SPACE}Main.resources.dll XenModel.resources.dll XenOvf.resources.dll + for file in ${BRANDING_BRAND_CONSOLE_NO_SPACE}.resources.dll XenModel.resources.dll XenOvf.resources.dll do cd ${REPO}/XenAdmin/bin/Release/${locale} && ${SIGN_BAT} ${file} "${BRANDING_BRAND_CONSOLE}" done @@ -208,12 +208,12 @@ cd ${REPO}/XenAdminTests/bin/ && zip -r ${OUTPUT_DIR}/XenAdminTests.zip Release cd ${REPO}/XenAdmin/TestResources && zip -r ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE_NO_SPACE}TestResources.zip * #include cfu validator binary in output directory -cd ${REPO}/CFUValidator/bin/Release && zip ${OUTPUT_DIR}/CFUValidator.zip ./{*.dll,CFUValidator.exe,${BRANDING_BRAND_CONSOLE_NO_SPACE}Main.exe} +cd ${REPO}/CFUValidator/bin/Release && zip ${OUTPUT_DIR}/CFUValidator.zip ./{*.dll,CFUValidator.exe,${BRANDING_BRAND_CONSOLE_NO_SPACE}.exe} #now package the pdbs cp ${REPO}/packages/*.pdb ${OUTPUT_DIR} -cp ${REPO}/XenAdmin/bin/Release/{CommandLib.pdb,${BRANDING_BRAND_CONSOLE_NO_SPACE}.pdb,CoreUtilsLib.pdb,${BRANDING_BRAND_CONSOLE_NO_SPACE}Main.pdb,XenModel.pdb,XenOvf.pdb} \ +cp ${REPO}/XenAdmin/bin/Release/{CommandLib.pdb,${BRANDING_BRAND_CONSOLE_NO_SPACE}.pdb,CoreUtilsLib.pdb,${BRANDING_BRAND_CONSOLE_NO_SPACE}.pdb,XenModel.pdb,XenOvf.pdb} \ ${REPO}/xe/bin/Release/xe.pdb \ ${REPO}/xva_verify/bin/Release/xva_verify.pdb \ ${REPO}/XenServerHealthCheck/bin/Release/XenServerHealthCheck.pdb \ diff --git a/splash/main.cpp b/splash/main.cpp deleted file mode 100644 index 584a4da67..000000000 --- a/splash/main.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* Copyright (c) Citrix Systems, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the - * following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * main.cpp - * - * Loads a splash screen bitmap from the resources built into the - * executable. Writes the current XenCenter version numbers onto - * the bitmap, and displays it on screen. Waits for a message - * from XenCenter, and then quits. Also monitors the XenCenter - * process, and quits if it dies (in case XenCenter crashes - * before sending the message). - * - * Parts of code taken from msdn. - */ - -// Disable deprecation warnings in the CRT -#define _CRT_SECURE_NO_DEPRECATE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "resource.h" -#include "util.h" - -using namespace std; - -// Our own made-up IDs for timers -const int ShortTimerId = 1; -const int LongTimerId = 2; - -const int ShortTimerInterval = 100; -// How long to wait for XenCenterMain to start -const int LongTimerInterval = 30000; - -const int PipeTimeout = 60 * 1000; - -// How long the splash should try to acquire the splashscreen lock for -const int SplashLockMaxWait = 60000; -// How many ms the splash screen should wait between attempts -const int SplashLockSleepInterval = 250; - -// Size of the splash bitmap -const int ImageSizeX = 415; -const int ImageSizeY = 217; - -const TCHAR SplashClassName[] = TEXT("XenCenterSplash0001"); -const TCHAR PipeStub[] = TEXT("\\\\.\\pipe\\XenCenter-"); -const TCHAR SplashPipeStub[] = TEXT("\\\\.\\pipe\\XenCenterSplash-"); -// The path to the main C# XenCenter exe, relative to the location of the splash exe. -const TCHAR XenCenterPath[] = TEXT("[XenCenter_No_Space]Main.exe"); -const size_t PathLen = 17; - -#ifdef _DEBUG -const TCHAR ProductVersion[] = TEXT("0.0"); -const TCHAR ProductBuild[] = TEXT("0000"); -#else -const TCHAR ProductVersion[] = TEXT("[BRANDING_PRODUCT_VERSION]"); -const TCHAR ProductBuild[] = TEXT("@BUILD_NUMBER@"); -#endif - -// The in-memory Device Context -HDC memdc; - -PROCESS_INFORMATION pi; - -static wstring PipeName(const TCHAR * stub, wstring mainExePath) -{ - // Replace '\' with '-' in mainExePath - wstring sanitizedMainExePath(mainExePath); - { - size_t index = sanitizedMainExePath.npos; - while ((index = sanitizedMainExePath.find('\\', 0)) != sanitizedMainExePath.npos) - { - sanitizedMainExePath.replace(index, 1, 1, '-'); - } - } - - DWORD tmp = UNLEN + 1; - TCHAR UserName[UNLEN + 1]; - GetUserName(UserName, &tmp); - - DWORD pid = GetCurrentProcessId(); - DWORD sid = 0; - if (0 == ProcessIdToSessionId(pid, &sid)) - { - // Ignore error and force sid to 0. - sid = 0; - } - - wostringstream SplashPipePath; - SplashPipePath << stub << sid << '-' << UserName << '-' << sanitizedMainExePath; - - wstring s = SplashPipePath.str(); - // Max length of named pipe name string is 256 chars - if (s.length() > 256) - { - s.resize(256); - } - - return s; -} - -LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch(msg) - { - case WM_CLOSE: - DestroyWindow(hwnd); - break; - case WM_DESTROY: - // Hide the window - will happen anyway if we exit, but not until - // after XenCenterMain exits if --wait was specified. - ShowWindow(hwnd, SW_HIDE); - // Line below sends a WM_QUIT message to this thread - PostQuitMessage(0); - break; - case WM_LBUTTONDOWN: - ShowWindow(hwnd, SW_HIDE); - break; - case WM_PAINT: - { - PAINTSTRUCT ps; - HDC screendc = BeginPaint(hwnd, &ps); - BitBlt(screendc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right, ps.rcPaint.bottom, - memdc, ps.rcPaint.left, ps.rcPaint.top, SRCCOPY); - EndPaint(hwnd, &ps); - } - break; - case WM_TIMER: - { - switch (wParam) - { - case ShortTimerId: - if (WaitForSingleObject(pi.hProcess, 0) != WAIT_TIMEOUT) - { - // XenCenter has closed (e.g. crashed) without killing the splash screen: exit. - KillTimer(hwnd, ShortTimerId); - DestroyWindow(hwnd); - } - else - { - // Poll again later - SetTimer(hwnd, ShortTimerId, ShortTimerInterval, NULL); - } - break; - case LongTimerId: - // We've been open too long: close even though we haven't heard from XenCenter - DestroyWindow(hwnd); - break; - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - } - } - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - } - return 0; -} - -int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - - // Record if an error that doesn't prevent us launching XenCenterMain has occurred. - // If set to true, we write the splash log to file and launch XenCenterMain, even - // if the splash screen locking or named pipe argument passing have failed. - bool nonCriticalError = false; - - // Open logging output stream. The accumulated contents of this stream are written - // to a log file only in the event of an ErrorExit. - wostringstream logStream; - time_t rawtime = time(NULL); - if (rawtime > -1) - { - logStream << TEXT("splash .exe started at ") << ctime(&rawtime) << endl; - } - else - { - logStream << TEXT("WARNING: time() returned -1") << endl; - } - - // Get the full path to the splash exe - const size_t pathBufSize = 128 * 1024; - wchar_t splashExePath[pathBufSize]; - DWORD pathLen = GetModuleFileName(NULL, splashExePath, pathBufSize); - if (pathLen == 0 || pathLen == pathBufSize) - { - ErrorExit(logStream, TEXT("GetModuleFileName"), true); - } - logStream << TEXT("splashExePath: ") << splashExePath << endl; - - // Now work out the path to the main exe - wstring mainExePath(splashExePath); - { - size_t index = mainExePath.find_last_of('\\', pathLen); - if (index != mainExePath.npos) - { - mainExePath.resize(index); - mainExePath.push_back('\\'); - } - mainExePath.append(XenCenterPath); - } - logStream << TEXT("mainExePath: ") << mainExePath << endl; - - // Acquire splash screen lock - HANDLE splashPipeHandle = INVALID_HANDLE_VALUE; - { - wstring s = PipeName(SplashPipeStub, mainExePath); - logStream << "Attempting to acquire splash screen lock: " << s.c_str() << endl; - - for (int numTries = 0; numTries * SplashLockSleepInterval < SplashLockMaxWait; numTries++) - { - splashPipeHandle = CreateNamedPipe(s.c_str(), - PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE, - PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, 0, NULL); - - if (splashPipeHandle == INVALID_HANDLE_VALUE) - { - DWORD lastError = GetLastError(); - if (lastError == ERROR_ACCESS_DENIED) - { - // Pipe in use. Sleep and retry. - Sleep(SplashLockSleepInterval); - } - else - { - // Unexpected error code - logStream << "WARNING: CreateNamedPipe failed with unexpected error. Error code: " << GetLastError() << endl; - nonCriticalError = true; - } - } - else - { - // We have acquired the lock - logStream << "Acquired splash screen lock" << endl; - break; - } - } - - if (splashPipeHandle == INVALID_HANDLE_VALUE) - { - // Maximum attempts reached without success. Exit. - logStream << "WARNING: Couldn't acquire splash screen lock before timeout." << endl; - nonCriticalError = true; - } - } - - // First try to pass the cmd line arguments into the named pipe - { - wstring s = PipeName(PipeStub, mainExePath); - logStream << TEXT("Pipe path 's': ") << s << endl; - - // Allocate a buffer for data sent to us through the pipe. - // (Should never actually be any, but the command needs a buffer param anyway) - const int dataOutLength = 64 * 1024; - LPVOID dataOut = malloc(dataOutLength); - if (dataOut == NULL) - { - logStream << TEXT("WARNING: malloc dataOut failed. Error code: ") << GetLastError() << endl; - nonCriticalError = true; - } - - DWORD bytesRead; - if (!CallNamedPipe(s.c_str(), lpCmdLine, (DWORD)_tcslen(lpCmdLine) * sizeof(TCHAR), dataOut, dataOutLength, &bytesRead, PipeTimeout)) - { - DWORD lastError = GetLastError(); - if (lastError == ERROR_FILE_NOT_FOUND) - { - logStream << TEXT("CallNamedPipe gave ERROR_FILE_NOT_FOUND: proceeding to launch XenCenter") << endl; - } - else if (lastError == ERROR_BROKEN_PIPE) - { - logStream << TEXT("CallNamedPipe gave ERROR_BROKEN_PIPE: proceeding to launch XenCenter") << endl; - } - else - { - logStream << "WARNING: CallNamedPipe failed with unexpected error. Error code: " << GetLastError() << endl; - nonCriticalError = true; - } - } - else - { - // Success: we passed the args into the pipe. Exit. - logStream << "Success: command line arguments were passed into pipe. Exiting." << endl; - exit(0); - } - free(dataOut); - } - - // If we get here, sending into the pipe failed. Start XenCenter. - STARTUPINFO si; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - - logStream << TEXT("Running CreateProcess with GetCommandLine(): ") << GetCommandLine() << endl; - if (!CreateProcess(mainExePath.c_str(), // module name - GetCommandLine(), // Command line - NULL, // Process handle not inheritable - NULL, // Thread handle not inheritable - FALSE, // Set handle inheritance to FALSE - NORMAL_PRIORITY_CLASS, - NULL, // Use parent's environment block - NULL, // Use parent's starting directory - &si, // Pointer to STARTUPINFO structure - &pi) // Pointer to PROCESS_INFORMATION structure - ) - { - ErrorExit(logStream, TEXT("CreateProcess"), true); - } - CloseHandle(pi.hThread); - - if (nonCriticalError) - { - // At least we managed to launch XenCenterMain. - // Probably not appropriate to show the splash screen. Exit now. - ErrorExit(logStream, TEXT("nonCriticalError"), false); - } - - // Show the splash screen. First register the window class. - WNDCLASSEX wc; - wc.cbSize = sizeof(WNDCLASSEX); - wc.style = 0; - wc.lpfnWndProc = WndProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = hInstance; - wc.hIcon = NULL; - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); - wc.lpszMenuName = NULL; - wc.lpszClassName = SplashClassName; - wc.hIconSm = NULL; - - if (RegisterClassEx(&wc) == NULL) - { - ErrorExit(logStream, TEXT("RegisterClassEx"), false); - } - - // Get the screen (desktop) DC - HDC screendc = CreateIC(TEXT("DISPLAY"), NULL, NULL, NULL); - if (screendc == NULL) - { - ErrorExit(logStream, TEXT("CreateIC"), false); - } - - // Get the primary monitor desktop size - const int screenwidth = GetSystemMetrics(SM_CXSCREEN); - const int screenheight = GetSystemMetrics(SM_CYSCREEN); - - logStream << TEXT("Creating splash window") << endl; - // Create the splash window - int x = (screenwidth-ImageSizeX)/2; - int y = (screenheight-ImageSizeY)/2; - HWND hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW, SplashClassName, NULL, WS_POPUP, x, y, ImageSizeX, ImageSizeY, NULL, NULL, hInstance, NULL); - if (hwnd == NULL) - { - ErrorExit(logStream, TEXT("CreateWindowEx"), false); - } - - // Load the splash bitmap from the embedded resource file - HBITMAP image = (HBITMAP)LoadImage(hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); - if (image == NULL) - { - ErrorExit(logStream, TEXT("LoadImage"), false); - } - - // Create the in-memory Device Context - memdc = CreateCompatibleDC(screendc); - if (memdc == NULL) - { - ErrorExit(logStream, TEXT("CreateCompatibleDC(screendc)"), false); - } - - // Create a DC for the splash image - HDC filedc = CreateCompatibleDC(screendc); - if (filedc == NULL) - { - ErrorExit(logStream, TEXT("CreateCompatibleDC(filedc)"), false); - } - - // Blit the splash image into the memory DC - SelectObject(filedc, image); - HBITMAP bmp = CreateCompatibleBitmap(screendc, ImageSizeX, ImageSizeY); - ReleaseDC(hwnd, screendc); - SelectObject(memdc, bmp); - BitBlt(memdc, 0, 0, ImageSizeX, ImageSizeY, filedc, 0, 0, SRCCOPY); - DeleteObject(image); - DeleteDC(filedc); - - logStream << TEXT("Showing splash window") << endl; - // Show the splash window - ShowWindow(hwnd, nCmdShow); - UpdateWindow(hwnd); - - // Start timer to poll for XenCenter having started - SetTimer(hwnd, ShortTimerId, ShortTimerInterval, NULL); - - // Start timeout timer after which splash window closes anyway - SetTimer(hwnd, LongTimerId, LongTimerInterval, NULL); - - MSG msg; - // Start message loop - while(GetMessage(&msg, NULL, 0, 0) > 0) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - if (!DisconnectNamedPipe(splashPipeHandle)) - { - // Irritating but non-fatal - logStream << "DisconnectNamedPipe failed with error " << GetLastError() << endl; - } - if (!CloseHandle(splashPipeHandle)) - { - // Likewise - logStream << "CloseHandle failed with error " << GetLastError() << endl; - } - - // Check to see if args contain '--wait': if so, wait for XenCenterMain process to exit - { - wstring args(lpCmdLine); - logStream << TEXT("args: ") << args.c_str() << endl; - if (args.find(TEXT("--wait"), 0) != args.npos) - { - logStream << TEXT("--wait detected: waiting for main XenCenter process to exit") << endl; - WaitForSingleObject(pi.hProcess, INFINITE); - logStream << TEXT("XenCenter process exited") << endl; - } - else - { - CloseHandle(pi.hProcess); - } - } - - logStream << TEXT("Exiting normally") << endl; - - return (int)msg.wParam; -} diff --git a/splash/resource.h b/splash/resource.h deleted file mode 100644 index 5e64b6d94..000000000 --- a/splash/resource.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (c) Citrix Systems, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the - * following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by splash.rc -// -#define IDB_BITMAP1 101 -#define IDI_ICON1 102 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 103 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/splash/splash.manifest b/splash/splash.manifest deleted file mode 100644 index 2c837a3f9..000000000 --- a/splash/splash.manifest +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/splash/splash.rc b/splash/splash.rc deleted file mode 100644 index 7016d3d8e..000000000 --- a/splash/splash.rc +++ /dev/null @@ -1,130 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "windows.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""windows.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP1 BITMAP "../Branding/Images/splash.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON1 ICON "../Branding/Images/AppIcon.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080904b0" - BEGIN - VALUE "CompanyName", "[Citrix]" - VALUE "FileDescription", "[XenCenter]" - VALUE "FileVersion", "1, 0, 0, 1" - VALUE "InternalName", "[XenCenter]" - VALUE "LegalCopyright", "Copyright \\251 [BRANDING_COMPANY_NAME_LEGAL]" - VALUE "OriginalFilename", "[XenCenter_No_Space].exe" - VALUE "ProductName", "[XenCenter]" - VALUE "ProductVersion", "1, 0, 0, 1" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x809, 1200 - END -END - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/splash/splash.vcproj b/splash/splash.vcproj deleted file mode 100644 index b6b1bbc9f..000000000 --- a/splash/splash.vcproj +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/splash/splash.vcxproj b/splash/splash.vcxproj deleted file mode 100644 index 691198571..000000000 --- a/splash/splash.vcxproj +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {AFB19C9D-DD63-478B-A4A3-8452CBD0B9AB} - test - Win32Proj - 10.0.18362.0 - - - - Application - Unicode - true - v142 - - - Application - Unicode - v142 - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)XenAdmin\bin\Debug\ - $(ProjectDir)$(Configuration)\ - true - $(SolutionDir)XenAdmin\bin\Release\ - $(ProjectDir)$(Configuration)\ - false - - - [XenCenter_No_Space] - - - [XenCenter_No_Space] - - - - Disabled - %(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level4 - EditAndContinue - - - $(OutDir)$(TargetName).exe - true - Windows - false - - - MachineX86 - - - $(ProjectDir)\splash.manifest;%(AdditionalManifestFiles) - - - - - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - - - Level4 - true - ProgramDatabase - 4995;%(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).exe - %(AdditionalLibraryDirectories) - true - Windows - true - true - false - - - MachineX86 - - - $(ProjectDir)\splash.manifest;%(AdditionalManifestFiles) - - - - - - - - - - - - - - - - {70bda4bc-f062-4302-8acd-a15d8bf31d65} - false - - - - - - \ No newline at end of file diff --git a/splash/splash.vcxproj.filters b/splash/splash.vcxproj.filters deleted file mode 100644 index 862eab3a4..000000000 --- a/splash/splash.vcxproj.filters +++ /dev/null @@ -1,40 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - - - Header Files - - - - - Resource Files - - - - - Header Files - - - \ No newline at end of file diff --git a/splash/util.cpp b/splash/util.cpp deleted file mode 100644 index 83658024e..000000000 --- a/splash/util.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (c) Citrix Systems, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the - * following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include "util.h" - -using namespace std; - -void ErrorExit(wostringstream& logStream, const LPTSTR lpszFunction, bool showDialog) -{ - // Retrieve the system error message for the last-error code - LPVOID lpMsgBuf; - LPVOID lpDisplayBuf; - DWORD dw = GetLastError(); - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); - - // Display the error message and exit the process - lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 100) * sizeof(TCHAR)); - StringCchPrintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), - TEXT("%s failed with error %d: %s Please contact your support representative."), lpszFunction, dw, lpMsgBuf); - - logStream << TEXT("ErrorExit called: ") << (LPTSTR)lpDisplayBuf << endl; - - // Now write logStream to file - TCHAR destBuf[MAX_PATH]; - wostringstream DebugFilePath; - // Get %APPDATA% path - if (SHGetSpecialFolderPath(NULL, destBuf, CSIDL_APPDATA, 1) == TRUE) - { - DebugFilePath << destBuf << "\\[Citrix]\\[XenCenter_No_Space]\\logs\\splash.log"; - wofstream fileStream(DebugFilePath.str().c_str(), ios_base::out | ios_base::trunc); - fileStream << logStream.str() << endl; - } - - if (showDialog) - { - // Show error to user - MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); - } - - LocalFree(lpMsgBuf); - LocalFree(lpDisplayBuf); - ExitProcess(dw); -}