diff --git a/WebsitePanel.Installer/Sources/Setup/Setup.vdproj b/WebsitePanel.Installer/Sources/Setup/Setup.vdproj
index 5bca1c16..c8bcd76d 100644
--- a/WebsitePanel.Installer/Sources/Setup/Setup.vdproj
+++ b/WebsitePanel.Installer/Sources/Setup/Setup.vdproj
@@ -33,24 +33,6 @@
}
"Entry"
{
- "MsmKey" = "8:_3FE8A1704B90098231CE54C0A887C0F9"
- "OwnerKey" = "8:_05F59A142DD147798C90054A203C0EE9"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_3FE8A1704B90098231CE54C0A887C0F9"
- "OwnerKey" = "8:_1239E87E938248B1BAF9BF75C32D3EDC"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_3FE8A1704B90098231CE54C0A887C0F9"
- "OwnerKey" = "8:_EAE1EA76C9D31E75B8631E8C4E874282"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_4BD2D475F25A409B9E2F96A9C0AD9283"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -63,24 +45,42 @@
}
"Entry"
{
+ "MsmKey" = "8:_8358EC0621F48BC59677CAE4E2FA8FC3"
+ "OwnerKey" = "8:_05F59A142DD147798C90054A203C0EE9"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_8358EC0621F48BC59677CAE4E2FA8FC3"
+ "OwnerKey" = "8:_1239E87E938248B1BAF9BF75C32D3EDC"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_B0491B1356193E1DEAF528DAD55FD861"
+ "OwnerKey" = "8:_05F59A142DD147798C90054A203C0EE9"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_B0491B1356193E1DEAF528DAD55FD861"
+ "OwnerKey" = "8:_1239E87E938248B1BAF9BF75C32D3EDC"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_B0491B1356193E1DEAF528DAD55FD861"
+ "OwnerKey" = "8:_8358EC0621F48BC59677CAE4E2FA8FC3"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
"MsmKey" = "8:_BD9DC4338DFD4472BE5D099C388608B6"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_EAE1EA76C9D31E75B8631E8C4E874282"
- "OwnerKey" = "8:_05F59A142DD147798C90054A203C0EE9"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_EAE1EA76C9D31E75B8631E8C4E874282"
- "OwnerKey" = "8:_1239E87E938248B1BAF9BF75C32D3EDC"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_1239E87E938248B1BAF9BF75C32D3EDC"
"MsmSig" = "8:_UNDEFINED"
@@ -94,13 +94,13 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
- "OwnerKey" = "8:_EAE1EA76C9D31E75B8631E8C4E874282"
+ "OwnerKey" = "8:_8358EC0621F48BC59677CAE4E2FA8FC3"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
- "OwnerKey" = "8:_3FE8A1704B90098231CE54C0A887C0F9"
+ "OwnerKey" = "8:_B0491B1356193E1DEAF528DAD55FD861"
"MsmSig" = "8:_UNDEFINED"
}
}
@@ -111,7 +111,7 @@
"DisplayName" = "8:Debug"
"IsDebugOnly" = "11:TRUE"
"IsReleaseOnly" = "11:FALSE"
- "OutputFilename" = "8:..\\..\\Build\\debug\\WebsitePanelInstaller12.msi"
+ "OutputFilename" = "8:..\\..\\..\\WebsitePanel\\Deploy\\Debug\\WebsitePanelInstaller121.msi"
"PackageFilesAs" = "3:2"
"PackageFileSize" = "3:-2147483648"
"CabType" = "3:1"
@@ -153,7 +153,7 @@
"DisplayName" = "8:Release"
"IsDebugOnly" = "11:FALSE"
"IsReleaseOnly" = "11:TRUE"
- "OutputFilename" = "8:..\\..\\Build\\release\\WebsitePanelInstaller12.msi"
+ "OutputFilename" = "8:..\\..\\..\\WebsitePanel\\Deploy\\Release\\WebsitePanelInstaller121.msi"
"PackageFilesAs" = "3:2"
"PackageFileSize" = "3:-2147483648"
"CabType" = "3:1"
@@ -228,37 +228,6 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
- "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3FE8A1704B90098231CE54C0A887C0F9"
- {
- "AssemblyRegister" = "3:1"
- "AssemblyIsInGAC" = "11:FALSE"
- "AssemblyAsmDisplayName" = "8:Ionic.Zip.Reduced, Version=1.8.4.28, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL"
- "ScatterAssemblies"
- {
- "_3FE8A1704B90098231CE54C0A887C0F9"
- {
- "Name" = "8:Ionic.Zip.Reduced.dll"
- "Attributes" = "3:512"
- }
- }
- "SourcePath" = "8:Ionic.Zip.Reduced.dll"
- "TargetName" = "8:"
- "Tag" = "8:"
- "Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Vital" = "11:TRUE"
- "ReadOnly" = "11:FALSE"
- "Hidden" = "11:FALSE"
- "System" = "11:FALSE"
- "Permanent" = "11:FALSE"
- "SharedLegacy" = "11:FALSE"
- "PackageAs" = "3:1"
- "Register" = "3:1"
- "Exclude" = "11:FALSE"
- "IsDependency" = "11:TRUE"
- "IsolateTo" = "8:"
- }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4BD2D475F25A409B9E2F96A9C0AD9283"
{
"SourcePath" = "8:WebsitePanel Help.url"
@@ -299,6 +268,63 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
+ "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8358EC0621F48BC59677CAE4E2FA8FC3"
+ {
+ "AssemblyRegister" = "3:1"
+ "AssemblyIsInGAC" = "11:FALSE"
+ "AssemblyAsmDisplayName" = "8:WebsitePanel.Installer.Core, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL"
+ "ScatterAssemblies"
+ {
+ }
+ "SourcePath" = "8:WebsitePanel.Installer.Core.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B0491B1356193E1DEAF528DAD55FD861"
+ {
+ "AssemblyRegister" = "3:1"
+ "AssemblyIsInGAC" = "11:FALSE"
+ "AssemblyAsmDisplayName" = "8:Ionic.Zip.Reduced, Version=1.8.4.28, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL"
+ "ScatterAssemblies"
+ {
+ "_B0491B1356193E1DEAF528DAD55FD861"
+ {
+ "Name" = "8:Ionic.Zip.Reduced.dll"
+ "Attributes" = "3:512"
+ }
+ }
+ "SourcePath" = "8:Ionic.Zip.Reduced.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BD9DC4338DFD4472BE5D099C388608B6"
{
"SourcePath" = "8:Banner.bmp"
@@ -319,37 +345,6 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
- "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EAE1EA76C9D31E75B8631E8C4E874282"
- {
- "AssemblyRegister" = "3:1"
- "AssemblyIsInGAC" = "11:FALSE"
- "AssemblyAsmDisplayName" = "8:WebsitePanel.Installer.Core, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL"
- "ScatterAssemblies"
- {
- "_EAE1EA76C9D31E75B8631E8C4E874282"
- {
- "Name" = "8:WebsitePanel.Installer.Core.dll"
- "Attributes" = "3:512"
- }
- }
- "SourcePath" = "8:WebsitePanel.Installer.Core.dll"
- "TargetName" = "8:"
- "Tag" = "8:"
- "Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
- "Condition" = "8:"
- "Transitive" = "11:FALSE"
- "Vital" = "11:TRUE"
- "ReadOnly" = "11:FALSE"
- "Hidden" = "11:FALSE"
- "System" = "11:FALSE"
- "Permanent" = "11:FALSE"
- "SharedLegacy" = "11:FALSE"
- "PackageAs" = "3:1"
- "Register" = "3:1"
- "Exclude" = "11:FALSE"
- "IsDependency" = "11:TRUE"
- "IsolateTo" = "8:"
- }
}
"FileType"
{
@@ -417,15 +412,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:WebsitePanel Installer"
- "ProductCode" = "8:{09BCDF68-1964-4FC6-9570-9AB3B8512CF6}"
- "PackageCode" = "8:{D94FF2E6-1D7D-4E33-8528-C7B6BFADEC99}"
+ "ProductCode" = "8:{A22F374C-4AFC-4B5D-A509-7456A6107588}"
+ "PackageCode" = "8:{62AE518E-85D1-4D7E-9642-660FB1794974}"
"UpgradeCode" = "8:{2950A907-11E7-436C-86CE-049C414AFD08}"
"AspNetVersion" = "8:4.0.30319.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:FALSE"
"DetectNewerInstalledVersion" = "11:FALSE"
"InstallAllUsers" = "11:TRUE"
- "ProductVersion" = "8:1.2.0"
+ "ProductVersion" = "8:1.2.1"
"Manufacturer" = "8:Outercurve Foundation"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
@@ -977,7 +972,7 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_05F59A142DD147798C90054A203C0EE9"
{
- "SourcePath" = "8:..\\WebsitePanel.Installer\\obj\\Release\\WebsitePanel.Installer.exe"
+ "SourcePath" = "8:..\\WebsitePanel.Installer\\obj\\Debug\\WebsitePanel.Installer.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
@@ -1005,7 +1000,7 @@
}
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1239E87E938248B1BAF9BF75C32D3EDC"
{
- "SourcePath" = "8:..\\WebsitePanel.SilentInstaller\\obj\\x86\\Release\\WebsitePanel.SilentInstaller.exe"
+ "SourcePath" = "8:..\\WebsitePanel.SilentInstaller\\obj\\x86\\Debug\\WebsitePanel.SilentInstaller.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_E742E59BFE4D43C59AA65A07792B89FB"
diff --git a/WebsitePanel.Installer/Sources/VersionInfo.cs b/WebsitePanel.Installer/Sources/VersionInfo.cs
index d03067e7..f939546f 100644
--- a/WebsitePanel.Installer/Sources/VersionInfo.cs
+++ b/WebsitePanel.Installer/Sources/VersionInfo.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -35,7 +35,7 @@ using System.Reflection;
// Revision
//
[assembly: AssemblyCompany("Outercurve Foundation")]
-[assembly: AssemblyCopyright("Copyright © 2011 Outercurve Foundation.")]
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.38")]
-[assembly: AssemblyInformationalVersion("1.2.0")]
\ No newline at end of file
+[assembly: AssemblyCopyright("Copyright © 2012 Outercurve Foundation.")]
+[assembly: AssemblyVersion("1.2.1.0")]
+[assembly: AssemblyFileVersion("1.2.1.0")]
+[assembly: AssemblyInformationalVersion("1.2.1")]
\ No newline at end of file
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/AppConfigManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/AppConfigManager.cs
index fb4a411f..d10b29c0 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/AppConfigManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/AppConfigManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/AssemblyLoader.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/AssemblyLoader.cs
index a80e7631..79180198 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/AssemblyLoader.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/AssemblyLoader.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/FileUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/FileUtils.cs
index 7ca351b9..fb93c644 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/FileUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/FileUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -34,43 +34,43 @@ using System.IO;
namespace WebsitePanel.Installer.Common
{
- ///
- /// File utils.
- ///
- public sealed class FileUtils
- {
- ///
- /// Initializes a new instance of the class.
- ///
- private FileUtils()
- {
- }
+ ///
+ /// File utils.
+ ///
+ public sealed class FileUtils
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ private FileUtils()
+ {
+ }
- ///
- /// Creates drectory with the specified directory.
- ///
- /// The directory path to create.
- public static void CreateDirectory(string path)
- {
- string dir = Path.GetDirectoryName(path);
- if(!Directory.Exists(dir))
- {
- // create directory structure
- Directory.CreateDirectory(dir);
- }
- }
+ ///
+ /// Creates drectory with the specified directory.
+ ///
+ /// The directory path to create.
+ public static void CreateDirectory(string path)
+ {
+ string dir = Path.GetDirectoryName(path);
+ if(!Directory.Exists(dir))
+ {
+ // create directory structure
+ Directory.CreateDirectory(dir);
+ }
+ }
- ///
- /// Saves file content.
- ///
- /// File name.
- /// The array of bytes to write.
- public static void SaveFileContent(string fileName, byte[] content)
- {
- FileStream stream = new FileStream(fileName, FileMode.Create);
- stream.Write(content, 0, content.Length);
- stream.Close();
- }
+ ///
+ /// Saves file content.
+ ///
+ /// File name.
+ /// The array of bytes to write.
+ public static void SaveFileContent(string fileName, byte[] content)
+ {
+ FileStream stream = new FileStream(fileName, FileMode.Create);
+ stream.Write(content, 0, content.Length);
+ stream.Close();
+ }
///
/// Saves file content.
@@ -84,188 +84,203 @@ namespace WebsitePanel.Installer.Common
stream.Close();
}
- ///
- /// Deletes the specified file.
- ///
- /// The name of the file to be deleted.
- public static void DeleteFile(string fileName)
- {
- int attempts = 0;
- while (true)
- {
- try
- {
- DeleteFileInternal(fileName);
- break;
- }
- catch (Exception)
- {
- if (attempts > 2)
- throw;
+ ///
+ /// Deletes the specified file.
+ ///
+ /// The name of the file to be deleted.
+ public static void DeleteFile(string fileName)
+ {
+ int attempts = 0;
+ while (true)
+ {
+ try
+ {
+ DeleteFileInternal(fileName);
+ break;
+ }
+ catch (Exception)
+ {
+ if (attempts > 2)
+ throw;
- attempts++;
- System.Threading.Thread.Sleep(1000);
- }
- }
- }
+ attempts++;
+ System.Threading.Thread.Sleep(1000);
+ }
+ }
+ }
- ///
- /// Deletes the specified file.
- ///
- /// The name of the file to be deleted.
- private static void DeleteReadOnlyFile(string fileName)
- {
- FileInfo info = new FileInfo(fileName);
- info.Attributes = FileAttributes.Normal;
- info.Delete();
- }
+ ///
+ /// Deletes the specified file.
+ ///
+ /// The name of the file to be deleted.
+ private static void DeleteReadOnlyFile(string fileName)
+ {
+ FileInfo info = new FileInfo(fileName);
+ info.Attributes = FileAttributes.Normal;
+ info.Delete();
+ }
- ///
- /// Deletes the specified file.
- ///
- /// The name of the file to be deleted.
- private static void DeleteFileInternal(string fileName)
- {
- try
- {
- File.Delete(fileName);
- }
- catch (UnauthorizedAccessException)
- {
- DeleteReadOnlyFile(fileName);
- }
- }
+ ///
+ /// Deletes the specified file.
+ ///
+ /// The name of the file to be deleted.
+ private static void DeleteFileInternal(string fileName)
+ {
+ try
+ {
+ File.Delete(fileName);
+ }
+ catch (UnauthorizedAccessException)
+ {
+ DeleteReadOnlyFile(fileName);
+ }
+ }
- ///
- /// Deletes the specified directory.
- ///
- /// The name of the directory to be deleted.
- public static void DeleteDirectory(string directory)
- {
- if (!Directory.Exists(directory))
- return;
+ ///
+ /// Deletes the specified directory.
+ ///
+ /// The name of the directory to be deleted.
+ public static void DeleteDirectory(string directory)
+ {
+ if (!Directory.Exists(directory))
+ return;
- // iterate through child folders
- string[] dirs = Directory.GetDirectories(directory);
- foreach (string dir in dirs)
- {
- DeleteDirectory(dir);
- }
+ // iterate through child folders
+ string[] dirs = Directory.GetDirectories(directory);
+ foreach (string dir in dirs)
+ {
+ DeleteDirectory(dir);
+ }
- // iterate through child files
- string[] files = Directory.GetFiles(directory);
- foreach (string file in files)
- {
- DeleteFile(file);
- }
+ // iterate through child files
+ string[] files = Directory.GetFiles(directory);
+ foreach (string file in files)
+ {
+ DeleteFile(file);
+ }
- //try to delete dir for 3 times
- int attempts = 0;
- while (true)
- {
- try
- {
- DeleteDirectoryInternal(directory);
- break;
- }
- catch (Exception)
- {
- if (attempts > 2)
- throw;
+ //try to delete dir for 3 times
+ int attempts = 0;
+ while (true)
+ {
+ try
+ {
+ DeleteDirectoryInternal(directory);
+ break;
+ }
+ catch (Exception)
+ {
+ if (attempts > 2)
+ throw;
- attempts++;
- System.Threading.Thread.Sleep(1000);
- }
- }
- }
+ attempts++;
+ System.Threading.Thread.Sleep(1000);
+ }
+ }
+ }
- ///
- /// Deletes the specified directory.
- ///
- /// The name of the directory to be deleted.
- private static void DeleteDirectoryInternal(string directory)
- {
- try
- {
- Directory.Delete(directory);
- }
- catch (IOException)
- {
- DeleteReadOnlyDirectory(directory);
- }
- }
+ ///
+ /// Deletes the specified directory.
+ ///
+ /// The name of the directory to be deleted.
+ private static void DeleteDirectoryInternal(string directory)
+ {
+ try
+ {
+ Directory.Delete(directory);
+ }
+ catch (IOException)
+ {
+ DeleteReadOnlyDirectory(directory);
+ }
+ }
- ///
- /// Deletes the specified directory.
- ///
- /// The name of the directory to be deleted.
- private static void DeleteReadOnlyDirectory(string directory)
- {
- DirectoryInfo info = new DirectoryInfo(directory);
- info.Attributes = FileAttributes.Normal;
- info.Delete();
- }
+ ///
+ /// Deletes the specified directory.
+ ///
+ /// The name of the directory to be deleted.
+ private static void DeleteReadOnlyDirectory(string directory)
+ {
+ DirectoryInfo info = new DirectoryInfo(directory);
+ info.Attributes = FileAttributes.Normal;
+ info.Delete();
+ }
- ///
- /// Determines whether the specified file exists.
- ///
- /// The path to check.
- ///
- public static bool FileExists(string fileName)
- {
- return File.Exists(fileName);
- }
+ ///
+ /// Determines whether the specified file exists.
+ ///
+ /// The path to check.
+ ///
+ public static bool FileExists(string fileName)
+ {
+ return File.Exists(fileName);
+ }
- ///
- /// Determines whether the given path refers to an existing directory on disk.
- ///
- /// The path to test.
- ///
- public static bool DirectoryExists(string path)
- {
- return Directory.Exists(path);
- }
-
- ///
- /// Returns current application path.
- ///
- /// Curent application path.
- public static string GetCurrentDirectory()
- {
- return AppDomain.CurrentDomain.BaseDirectory;
- }
+ ///
+ /// Determines whether the given path refers to an existing directory on disk.
+ ///
+ /// The path to test.
+ ///
+ public static bool DirectoryExists(string path)
+ {
+ return Directory.Exists(path);
+ }
+
+ ///
+ /// Returns current application path.
+ ///
+ /// Curent application path.
+ public static string GetCurrentDirectory()
+ {
+ return AppDomain.CurrentDomain.BaseDirectory;
+ }
- ///
- /// Returns application temp directory.
- ///
- /// Application temp directory.
- public static string GetTempDirectory()
- {
- return Path.Combine(GetCurrentDirectory(), "Tmp");
- }
+ ///
+ /// Returns application temp directory.
+ ///
+ /// Application temp directory.
+ public static string GetTempDirectory()
+ {
+ return Path.Combine(GetCurrentDirectory(), "Tmp");
+ }
- ///
- /// Returns application data directory.
- ///
- /// Application data directory.
- public static string GetDataDirectory()
- {
- return Path.Combine(GetCurrentDirectory(), "Data");
- }
+ ///
+ /// Returns application data directory.
+ ///
+ /// Application data directory.
+ public static string GetDataDirectory()
+ {
+ return Path.Combine(GetCurrentDirectory(), "Data");
+ }
- ///
- /// Deletes application temp directory.
- ///
- public static void DeleteTempDirectory()
- {
- try
- {
- DeleteDirectory(GetTempDirectory());
- }
- catch (Exception ex)
- {
- Log.WriteError("IO Error", ex);
- }
- }
- }
+ ///
+ /// Deletes application's Data folder.
+ ///
+ public static void DeleteDataDirectory()
+ {
+ try
+ {
+ DeleteDirectory(GetDataDirectory());
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError("IO Error", ex);
+ }
+ }
+
+ ///
+ /// Deletes application Tmp directory.
+ ///
+ public static void DeleteTempDirectory()
+ {
+ try
+ {
+ DeleteDirectory(GetTempDirectory());
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError("IO Error", ex);
+ }
+ }
+ }
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Global.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Global.cs
index 69df0978..95d2900a 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Global.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Global.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Log.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Log.cs
index 9f8ee2ed..5e6a9b84 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Log.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Log.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/OS.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/OS.cs
index c03b2d20..9146b457 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/OS.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/OS.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/RegistryUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/RegistryUtils.cs
index 1b4d13ae..32f52de2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/RegistryUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/RegistryUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Utils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Utils.cs
index 68b4cc31..cd036dd1 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Utils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Common/Utils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -45,6 +45,7 @@ using System.Threading;
using WebsitePanel.Installer.Core;
using WebsitePanel.Installer.Configuration;
using System.Xml;
+using System.Data;
namespace WebsitePanel.Installer.Common
{
@@ -389,5 +390,23 @@ namespace WebsitePanel.Installer.Common
mutex = new Mutex(true, "WebsitePanel Installer", out createdNew);
return createdNew;
}
+
+ public static string GetDistributiveLocationInfo(string ccode, string cversion)
+ {
+ var service = ServiceProviderProxy.GetInstallerWebService();
+ //
+ DataSet ds = service.GetReleaseFileInfo(ccode, cversion);
+ //
+ if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
+ {
+ Log.WriteInfo("Component code: {0}; Component version: {1};", ccode, cversion);
+ //
+ throw new ServiceComponentNotFoundException("Seems that the Service has no idea about the component requested.");
+ }
+ //
+ DataRow row = ds.Tables[0].Rows[0];
+ //
+ return row["FullFilePath"].ToString();
+ }
}
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentCollection.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentCollection.cs
index 00285ff1..353210c8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentCollection.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentCollection.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentConfigElement.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentConfigElement.cs
index 9dad79f9..bb8a95be 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentConfigElement.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ComponentConfigElement.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ConfigKeys.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ConfigKeys.cs
index dfebc930..705e3d52 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ConfigKeys.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/ConfigKeys.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/InstallerSection.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/InstallerSection.cs
index ad678b48..6a7c895f 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/InstallerSection.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Configuration/InstallerSection.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Loader.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Loader.cs
index cc38ca29..39fe1861 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Loader.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Loader.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -36,380 +36,495 @@ using System.Text;
using Ionic.Zip;
using WebsitePanel.Installer.Common;
+using System.Net;
+using System.Text.RegularExpressions;
+using System.Collections;
+using System.Threading.Tasks;
+using System.Reflection;
+using System.Diagnostics;
namespace WebsitePanel.Installer.Core
{
- public class LoaderEventArgs : EventArgs
- {
- public string StatusMessage { get; set; }
- public T EventData { get; set; }
- public bool Cancellable { get; set; }
- }
+ public class LoaderEventArgs : EventArgs
+ {
+ public string StatusMessage { get; set; }
+ public T EventData { get; set; }
+ public bool Cancellable { get; set; }
+ }
- ///
- /// Loader form.
- ///
- public partial class Loader
- {
- public const string ConnectingRemotServiceMessage = "Connecting...";
- public const string DownloadingSetupFilesMessage = "Downloading setup files...";
- public const string CopyingSetupFilesMessage = "Copying setup files...";
- public const string PreparingSetupFilesMessage = "Please wait while Setup prepares the necessary files...";
- public const string DownloadProgressMessage = "{0} KB of {1} KB";
- public const string PrepareSetupProgressMessage = "{0}%";
+ public static class LoaderFactory
+ {
+ ///
+ /// Instantiates either BitlyLoader or InstallerServiceLoader based on remote file format.
+ ///
+ ///
+ ///
+ public static Loader CreateFileLoader(string remoteFile)
+ {
+ Debug.Assert(!String.IsNullOrEmpty(remoteFile), "Remote file is empty");
- private const int ChunkSize = 262144;
- private Thread thread;
- private string localFile;
- private string remoteFile;
- private string componentCode;
- private string version;
+ if (remoteFile.StartsWith("http://bit.ly/"))
+ {
+ return new BitlyLoader(remoteFile);
+ }
+ else
+ {
+ return new Loader(remoteFile);
+ }
+ }
+ }
- public event EventHandler> StatusChanged;
- public event EventHandler> OperationFailed;
- public event EventHandler> ProgressChanged;
- public event EventHandler OperationCompleted;
+ public class BitlyLoader : Loader
+ {
+ public const string WEB_PI_USER_AGENT_HEADER = "PI-Integrator/3.0.0.0({0})";
- public Loader(string remoteFile)
- {
- this.remoteFile = remoteFile;
- }
+ private WebClient fileLoader;
- public Loader(string localFile, string componentCode, string version)
- {
- this.localFile = localFile;
- this.componentCode = componentCode;
- this.version = version;
- }
+ public BitlyLoader(string remoteFile)
+ : base(remoteFile)
+ {
+ InitFileLoader();
+ }
- public void LoadAppDistributive()
- {
- thread = new Thread(new ThreadStart(LoadAppDistributiveInternal));
- thread.Start();
- }
+ private void InitFileLoader()
+ {
+ fileLoader = new WebClient();
+ // Set HTTP header for Codeplex to allow direct downloads
+ fileLoader.Headers.Add("User-Agent", String.Format(WEB_PI_USER_AGENT_HEADER, Assembly.GetExecutingAssembly().FullName));
+ }
- private void RaiseOnStatusChangedEvent(string statusMessage)
- {
- RaiseOnStatusChangedEvent(statusMessage, String.Empty);
- }
+ protected override Task GetDownloadFileTask(string remoteFile, string tmpFile, CancellationToken ct)
+ {
+ var downloadFileTask = new Task(() =>
+ {
+ if (!File.Exists(tmpFile))
+ {
+ // Mimic synchronous file download operation because we need to track the download progress
+ // and be able to cancel the operation in progress
+ AutoResetEvent autoEvent = new AutoResetEvent(false);
- private void RaiseOnStatusChangedEvent(string statusMessage, string eventData)
- {
- RaiseOnStatusChangedEvent(statusMessage, eventData, true);
- }
+ if (fileLoader.IsBusy.Equals(true))
+ {
+ return;
+ }
- private void RaiseOnStatusChangedEvent(string statusMessage, string eventData, bool cancellable)
- {
- if (StatusChanged == null)
- {
- return;
- }
- // No event data for status updates
- StatusChanged(this, new LoaderEventArgs {
- StatusMessage = statusMessage,
- EventData = eventData,
- Cancellable = cancellable
- });
- }
+ ct.Register(() =>
+ {
+ fileLoader.CancelAsync();
+ });
- private void RaiseOnProgressChangedEvent(int eventData)
- {
- RaiseOnProgressChangedEvent(eventData, true);
- }
+ Log.WriteStart("Downloading file");
+ Log.WriteInfo("Downloading file \"{0}\" to \"{1}\"", remoteFile, tmpFile);
+
+ // Attach event handlers to track status of the download process
+ fileLoader.DownloadProgressChanged += (obj, e) =>
+ {
+ if (ct.IsCancellationRequested)
+ return;
- private void RaiseOnProgressChangedEvent(int eventData, bool cancellable)
- {
- if (ProgressChanged == null)
- {
- return;
- }
- //
- ProgressChanged(this, new LoaderEventArgs {
- EventData = eventData,
- Cancellable = cancellable
- });
- }
+ RaiseOnProgressChangedEvent(e.ProgressPercentage);
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage,
+ String.Format(DownloadProgressMessage, e.BytesReceived / 1024, e.TotalBytesToReceive / 1024));
+ };
- private void RaiseOnOperationFailedEvent(Exception ex)
- {
- if (OperationFailed == null)
- {
- return;
- }
- //
- OperationFailed(this, new LoaderEventArgs { EventData = ex });
- }
+ fileLoader.DownloadFileCompleted += (obj, e) =>
+ {
+ if (ct.IsCancellationRequested == false)
+ {
+ RaiseOnProgressChangedEvent(100);
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage, "100%");
+ }
- private void RaiseOnOperationCompletedEvent()
- {
- if (OperationCompleted == null)
- {
- return;
- }
- //
- OperationCompleted(this, EventArgs.Empty);
- }
+ if (e.Cancelled)
+ {
+ CancelDownload(tmpFile);
+ }
- ///
- /// Displays process progress.
- ///
- private void LoadAppDistributiveInternal()
- {
- //
- try
- {
- var service = ServiceProviderProxy.GetInstallerWebService();
- //
- string dataFolder = FileUtils.GetDataDirectory();
- string tmpFolder = FileUtils.GetTempDirectory();
+ autoEvent.Set();
+ };
- if (!Directory.Exists(dataFolder))
- {
- Directory.CreateDirectory(dataFolder);
- Log.WriteInfo("Data directory created");
- }
+ fileLoader.DownloadFileAsync(new Uri(remoteFile), tmpFile);
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage);
+
+ autoEvent.WaitOne();
+ }
+ }, ct);
- if (Directory.Exists(tmpFolder))
- {
- FileUtils.DeleteTempDirectory();
- }
+ return downloadFileTask;
+ }
+ }
- if (!Directory.Exists(tmpFolder))
- {
- Directory.CreateDirectory(tmpFolder);
- Log.WriteInfo("Tmp directory created");
- }
+ ///
+ /// Loader form.
+ ///
+ public class Loader
+ {
+ public const string ConnectingRemotServiceMessage = "Connecting...";
+ public const string DownloadingSetupFilesMessage = "Downloading setup files...";
+ public const string CopyingSetupFilesMessage = "Copying setup files...";
+ public const string PreparingSetupFilesMessage = "Please wait while Setup prepares the necessary files...";
+ public const string DownloadProgressMessage = "{0} KB of {1} KB";
+ public const string PrepareSetupProgressMessage = "{0}%";
- string fileToDownload = null;
- if (!string.IsNullOrEmpty(localFile))
- {
- fileToDownload = localFile;
- }
- else
- {
- fileToDownload = Path.GetFileName(remoteFile);
- }
+ private const int ChunkSize = 262144;
+ private string remoteFile;
+ private CancellationTokenSource cts;
- string destinationFile = Path.Combine(dataFolder, fileToDownload);
- string tmpFile = Path.Combine(tmpFolder, fileToDownload);
+ public event EventHandler> StatusChanged;
+ public event EventHandler> OperationFailed;
+ public event EventHandler> ProgressChanged;
+ public event EventHandler OperationCompleted;
- //check whether file already downloaded
- if (!File.Exists(destinationFile))
- {
- if (string.IsNullOrEmpty(remoteFile))
- {
- //need to get remote file name
- RaiseOnStatusChangedEvent(ConnectingRemotServiceMessage);
- //
- RaiseOnProgressChangedEvent(0);
- //
- DataSet ds = service.GetReleaseFileInfo(componentCode, version);
- //
- RaiseOnProgressChangedEvent(100);
- //
- if (ds != null &&
- ds.Tables.Count > 0 &&
- ds.Tables[0].Rows.Count > 0)
- {
- DataRow row = ds.Tables[0].Rows[0];
- remoteFile = row["FullFilePath"].ToString();
- fileToDownload = Path.GetFileName(remoteFile);
- destinationFile = Path.Combine(dataFolder, fileToDownload);
- tmpFile = Path.Combine(tmpFolder, fileToDownload);
- }
- else
- {
- throw new Exception("Installer not found");
- }
- }
+ public Loader(string remoteFile)
+ {
+ this.remoteFile = remoteFile;
+ }
- // download file to tmp folder
- RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage);
- //
- RaiseOnProgressChangedEvent(0);
- //
- DownloadFile(remoteFile, tmpFile);
- //
- RaiseOnProgressChangedEvent(100);
+ public void LoadAppDistributive()
+ {
+ ThreadPool.QueueUserWorkItem(q => LoadAppDistributiveInternal());
+ }
- // copy downloaded file to data folder
- RaiseOnStatusChangedEvent(CopyingSetupFilesMessage);
- //
- RaiseOnProgressChangedEvent(0);
+ protected void RaiseOnStatusChangedEvent(string statusMessage)
+ {
+ RaiseOnStatusChangedEvent(statusMessage, String.Empty);
+ }
- // Ensure that the target does not exist.
- if (File.Exists(destinationFile))
- FileUtils.DeleteFile(destinationFile);
- File.Move(tmpFile, destinationFile);
- //
- RaiseOnProgressChangedEvent(100);
- }
+ protected void RaiseOnStatusChangedEvent(string statusMessage, string eventData)
+ {
+ RaiseOnStatusChangedEvent(statusMessage, eventData, true);
+ }
- // unzip file
- RaiseOnStatusChangedEvent(PreparingSetupFilesMessage);
- //
- RaiseOnProgressChangedEvent(0);
- //
- UnzipFile(destinationFile, tmpFolder);
- //
- RaiseOnProgressChangedEvent(100);
- //
- RaiseOnOperationCompletedEvent();
- }
- catch (Exception ex)
- {
- if (Utils.IsThreadAbortException(ex))
- return;
+ protected void RaiseOnStatusChangedEvent(string statusMessage, string eventData, bool cancellable)
+ {
+ if (StatusChanged == null)
+ {
+ return;
+ }
+ // No event data for status updates
+ StatusChanged(this, new LoaderEventArgs
+ {
+ StatusMessage = statusMessage,
+ EventData = eventData,
+ Cancellable = cancellable
+ });
+ }
- Log.WriteError("Loader module error", ex);
- //
- RaiseOnOperationFailedEvent(ex);
- }
- }
+ protected void RaiseOnProgressChangedEvent(int eventData)
+ {
+ RaiseOnProgressChangedEvent(eventData, true);
+ }
- private void DownloadFile(string sourceFile, string destinationFile)
- {
- try
- {
- var service = ServiceProviderProxy.GetInstallerWebService();
- //
- Log.WriteStart("Downloading file");
- Log.WriteInfo(string.Format("Downloading file \"{0}\" to \"{1}\"", sourceFile, destinationFile));
+ protected void RaiseOnProgressChangedEvent(int eventData, bool cancellable)
+ {
+ if (ProgressChanged == null)
+ {
+ return;
+ }
+ //
+ ProgressChanged(this, new LoaderEventArgs
+ {
+ EventData = eventData,
+ Cancellable = cancellable
+ });
+ }
- long downloaded = 0;
- long fileSize = service.GetFileSize(sourceFile);
- if (fileSize == 0)
- {
- throw new FileNotFoundException("Service returned empty file.", sourceFile);
- }
+ protected void RaiseOnOperationFailedEvent(Exception ex)
+ {
+ if (OperationFailed == null)
+ {
+ return;
+ }
+ //
+ OperationFailed(this, new LoaderEventArgs { EventData = ex });
+ }
- byte[] content;
+ protected void RaiseOnOperationCompletedEvent()
+ {
+ if (OperationCompleted == null)
+ {
+ return;
+ }
+ //
+ OperationCompleted(this, EventArgs.Empty);
+ }
- while (downloaded < fileSize)
- {
- content = service.GetFileChunk(sourceFile, (int)downloaded, ChunkSize);
- if (content == null)
- {
- throw new FileNotFoundException("Service returned NULL file content.", sourceFile);
- }
- FileUtils.AppendFileContent(destinationFile, content);
- downloaded += content.Length;
- //update progress bar
- RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage,
- string.Format(DownloadProgressMessage, downloaded / 1024, fileSize / 1024));
- //
- RaiseOnProgressChangedEvent(Convert.ToInt32((downloaded * 100) / fileSize));
+ ///
+ /// Executes a file download request asynchronously
+ ///
+ private void LoadAppDistributiveInternal()
+ {
+ try
+ {
+ string dataFolder;
+ string tmpFolder;
+ // Retrieve local storage configuration
+ GetLocalStorageInfo(out dataFolder, out tmpFolder);
+ // Initialize storage
+ InitializeLocalStorage(dataFolder, tmpFolder);
- if (content.Length < ChunkSize)
- break;
- }
- //
- RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage, "100%");
- //
- Log.WriteEnd(string.Format("Downloaded {0} bytes", downloaded));
- }
- catch (Exception ex)
- {
- if (Utils.IsThreadAbortException(ex))
- return;
+ string fileToDownload = Path.GetFileName(remoteFile);
- throw;
- }
- }
+ string destinationFile = Path.Combine(dataFolder, fileToDownload);
+ string tmpFile = Path.Combine(tmpFolder, fileToDownload);
- private void UnzipFile(string zipFile, string destFolder)
- {
- try
- {
- int val = 0;
- // Negative value means no progress made yet
- int progress = -1;
- //
- Log.WriteStart("Unzipping file");
- Log.WriteInfo(string.Format("Unzipping file \"{0}\" to the folder \"{1}\"", zipFile, destFolder));
+ cts = new CancellationTokenSource();
+ CancellationToken token = cts.Token;
- long zipSize = 0;
- var zipInfo = ZipFile.Read(zipFile);
- try
- {
- foreach (ZipEntry entry in zipInfo)
- {
- if (!entry.IsDirectory)
- zipSize += entry.UncompressedSize;
- }
- }
- finally
- {
- if (zipInfo != null)
- {
- zipInfo.Dispose();
- }
- }
+ try
+ {
+ // Download the file requested
+ Task downloadFileTask = GetDownloadFileTask(remoteFile, tmpFile, token);
+ // Move the file downloaded from temporary location to Data folder
+ var moveFileTask = downloadFileTask.ContinueWith((t) =>
+ {
+ if (File.Exists(tmpFile))
+ {
+ // copy downloaded file to data folder
+ RaiseOnStatusChangedEvent(CopyingSetupFilesMessage);
+ //
+ RaiseOnProgressChangedEvent(0);
- long unzipped = 0;
- //
- var zip = ZipFile.Read(zipFile);
- //
- try
- {
- foreach (ZipEntry entry in zip)
- {
- //
- entry.Extract(destFolder, ExtractExistingFileAction.OverwriteSilently);
- //
- if (!entry.IsDirectory)
- unzipped += entry.UncompressedSize;
+ // Ensure that the target does not exist.
+ if (File.Exists(destinationFile))
+ FileUtils.DeleteFile(destinationFile);
+ File.Move(tmpFile, destinationFile);
+ //
+ RaiseOnProgressChangedEvent(100);
+ }
+ }, TaskContinuationOptions.NotOnCanceled);
+ // Unzip file downloaded
+ var unzipFileTask = moveFileTask.ContinueWith((t) =>
+ {
+ if (File.Exists(destinationFile))
+ {
+ RaiseOnStatusChangedEvent(PreparingSetupFilesMessage);
+ //
+ RaiseOnProgressChangedEvent(0);
+ //
+ UnzipFile(destinationFile, tmpFolder);
+ //
+ RaiseOnProgressChangedEvent(100);
+ }
+ }, token);
+ //
+ var notifyCompletionTask = unzipFileTask.ContinueWith((t) =>
+ {
+ RaiseOnOperationCompletedEvent();
+ }, token);
+
+ downloadFileTask.Start();
+ downloadFileTask.Wait();
+ }
+ catch (AggregateException ae)
+ {
+ ae.Handle((e) =>
+ {
+ // We handle cancellation requests
+ if (e is OperationCanceledException)
+ {
+ CancelDownload(tmpFile);
+ Log.WriteInfo("Download has been cancelled by the user");
+ return true;
+ }
+ // But other issues just being logged
+ Log.WriteError("Could not download the file", e);
+ return false;
+ });
+ }
+ }
+ catch (Exception ex)
+ {
+ if (Utils.IsThreadAbortException(ex))
+ return;
- if (zipSize != 0)
- {
- val = Convert.ToInt32(unzipped * 100 / zipSize);
- // Skip to raise the progress event change when calculated progress
- // and the current progress value are even
- if (val == progress)
- {
- continue;
- }
- //
- RaiseOnStatusChangedEvent(
- PreparingSetupFilesMessage,
- String.Format(PrepareSetupProgressMessage, val),
- false);
- //
- RaiseOnProgressChangedEvent(val, false);
- }
- }
- // Notify client the operation can be cancelled at this time
- RaiseOnProgressChangedEvent(100);
- //
- Log.WriteEnd("Unzipped file");
- }
- finally
- {
- if (zip != null)
- {
- zip.Dispose();
- }
- }
- }
- catch (Exception ex)
- {
- if (Utils.IsThreadAbortException(ex))
- return;
- //
- RaiseOnOperationFailedEvent(ex);
- }
- }
+ Log.WriteError("Loader module error", ex);
+ //
+ RaiseOnOperationFailedEvent(ex);
+ }
+ }
- public void AbortOperation()
- {
- if (thread != null)
- {
- if (thread.IsAlive)
- {
- thread.Abort();
- }
- thread.Join();
- }
- }
- }
+ protected virtual Task GetDownloadFileTask(string sourceFile, string tmpFile, CancellationToken ct)
+ {
+ var downloadFileTask = new Task(() =>
+ {
+ if (!File.Exists(tmpFile))
+ {
+ var service = ServiceProviderProxy.GetInstallerWebService();
+
+ RaiseOnProgressChangedEvent(0);
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage);
+
+ Log.WriteStart("Downloading file");
+ Log.WriteInfo(string.Format("Downloading file \"{0}\" to \"{1}\"", sourceFile, tmpFile));
+
+ long downloaded = 0;
+ long fileSize = service.GetFileSize(sourceFile);
+ if (fileSize == 0)
+ {
+ throw new FileNotFoundException("Service returned empty file.", sourceFile);
+ }
+
+ byte[] content;
+
+ while (downloaded < fileSize)
+ {
+ // Throw OperationCancelledException if there is an incoming cancel request
+ ct.ThrowIfCancellationRequested();
+
+ content = service.GetFileChunk(sourceFile, (int)downloaded, ChunkSize);
+ if (content == null)
+ {
+ throw new FileNotFoundException("Service returned NULL file content.", sourceFile);
+ }
+ FileUtils.AppendFileContent(tmpFile, content);
+ downloaded += content.Length;
+ // Update download progress
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage,
+ string.Format(DownloadProgressMessage, downloaded / 1024, fileSize / 1024));
+
+ RaiseOnProgressChangedEvent(Convert.ToInt32((downloaded * 100) / fileSize));
+
+ if (content.Length < ChunkSize)
+ break;
+ }
+
+ RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage, "100%");
+ Log.WriteEnd(string.Format("Downloaded {0} bytes", downloaded));
+ }
+ }, ct);
+
+ return downloadFileTask;
+ }
+
+ private static void InitializeLocalStorage(string dataFolder, string tmpFolder)
+ {
+ if (!Directory.Exists(dataFolder))
+ {
+ Directory.CreateDirectory(dataFolder);
+ Log.WriteInfo("Data directory created");
+ }
+
+ if (Directory.Exists(tmpFolder))
+ {
+ Directory.Delete(tmpFolder, true);
+ }
+
+ if (!Directory.Exists(tmpFolder))
+ {
+ Directory.CreateDirectory(tmpFolder);
+ Log.WriteInfo("Tmp directory created");
+ }
+ }
+
+ private static void GetLocalStorageInfo(out string dataFolder, out string tmpFolder)
+ {
+ dataFolder = FileUtils.GetDataDirectory();
+ tmpFolder = FileUtils.GetTempDirectory();
+ }
+
+ private void UnzipFile(string zipFile, string destFolder)
+ {
+ try
+ {
+ int val = 0;
+ // Negative value means no progress made yet
+ int progress = -1;
+ //
+ Log.WriteStart("Unzipping file");
+ Log.WriteInfo(string.Format("Unzipping file \"{0}\" to the folder \"{1}\"", zipFile, destFolder));
+
+ long zipSize = 0;
+ var zipInfo = ZipFile.Read(zipFile);
+ try
+ {
+ foreach (ZipEntry entry in zipInfo)
+ {
+ if (!entry.IsDirectory)
+ zipSize += entry.UncompressedSize;
+ }
+ }
+ finally
+ {
+ if (zipInfo != null)
+ {
+ zipInfo.Dispose();
+ }
+ }
+
+ long unzipped = 0;
+ //
+ var zip = ZipFile.Read(zipFile);
+ //
+ try
+ {
+ foreach (ZipEntry entry in zip)
+ {
+ //
+ entry.Extract(destFolder, ExtractExistingFileAction.OverwriteSilently);
+ //
+ if (!entry.IsDirectory)
+ unzipped += entry.UncompressedSize;
+
+ if (zipSize != 0)
+ {
+ val = Convert.ToInt32(unzipped * 100 / zipSize);
+ // Skip to raise the progress event change when calculated progress
+ // and the current progress value are even
+ if (val == progress)
+ {
+ continue;
+ }
+ //
+ RaiseOnStatusChangedEvent(
+ PreparingSetupFilesMessage,
+ String.Format(PrepareSetupProgressMessage, val),
+ false);
+ //
+ RaiseOnProgressChangedEvent(val, false);
+ }
+ }
+ // Notify client the operation can be cancelled at this time
+ RaiseOnProgressChangedEvent(100);
+ //
+ Log.WriteEnd("Unzipped file");
+ }
+ finally
+ {
+ if (zip != null)
+ {
+ zip.Dispose();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ if (Utils.IsThreadAbortException(ex))
+ return;
+ //
+ RaiseOnOperationFailedEvent(ex);
+ }
+ }
+
+ ///
+ /// Cleans up temporary file if the download process has been cancelled.
+ ///
+ /// Path to the temporary file to cleanup
+ protected virtual void CancelDownload(string tmpFile)
+ {
+ if (File.Exists(tmpFile))
+ {
+ File.Delete(tmpFile);
+ }
+ }
+
+ public void AbortOperation()
+ {
+ // Make sure we are in business
+ if (cts != null)
+ {
+ cts.Cancel();
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceComponentNotFoundException.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceComponentNotFoundException.cs
new file mode 100644
index 00000000..d0f2ab78
--- /dev/null
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceComponentNotFoundException.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace WebsitePanel.Installer.Core
+{
+ class ServiceComponentNotFoundException : Exception
+ {
+ private string p;
+
+ public ServiceComponentNotFoundException(string p)
+ : base(p)
+ {
+ }
+ }
+}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceProviderProxy.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceProviderProxy.cs
index 26884645..bebbfd30 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceProviderProxy.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/ServiceProviderProxy.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/WebsitePanel.Installer.Core.csproj b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/WebsitePanel.Installer.Core.csproj
index 954d8f1c..c33c09e2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/WebsitePanel.Installer.Core.csproj
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/WebsitePanel.Installer.Core.csproj
@@ -35,6 +35,7 @@
..\..\Lib\Ionic.Zip.Reduced.dll
+
@@ -80,6 +81,7 @@
True
Settings.settings
+
Code
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.cs
index 75c23392..38c72590 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/AppContext.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/AppContext.cs
index 89fbbc7d..c2b4111c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/AppContext.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/AppContext.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ProgressManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ProgressManager.cs
index c03f3e98..b00ec525 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ProgressManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ProgressManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ScopeNode.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ScopeNode.cs
index c0a1f98a..66e2b6d8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ScopeNode.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/ScopeNode.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/User32.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/User32.cs
index ffef6e32..76bf3baf 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/User32.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/User32.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/Utils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/Utils.cs
index d94f9863..12f011c2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/Utils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Common/Utils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.cs
index 2420e91a..d24c5383 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -211,7 +211,7 @@ namespace WebsitePanel.Installer.Controls
{
Log.WriteInfo(string.Format("Updating {0}", componentName));
//download installer
- Loader form = new Loader(this.AppContext, fileName);
+ Loader form = new Loader(fileName, (e) => AppContext.AppForm.ShowError(e));
DialogResult result = form.ShowDialog(this);
if (result == DialogResult.OK)
{
@@ -273,7 +273,7 @@ namespace WebsitePanel.Installer.Controls
{
Log.WriteInfo(string.Format("Uninstalling {0}", componentName));
//download installer
- Loader form = new Loader(this.AppContext, installer, componentCode, release);
+ Loader form = new Loader(installer, componentCode, release, (e) => AppContext.AppForm.ShowError(e));
DialogResult result = form.ShowDialog(this);
if (result == DialogResult.OK)
{
@@ -326,15 +326,15 @@ namespace WebsitePanel.Installer.Controls
string path = element.GetStringSetting("InstallerPath");
string type = element.GetStringSetting("InstallerType");
string componentId = element.ID;
- string componentCode = element.GetStringSetting("ComponentCode");
+ string ccode = element.GetStringSetting("ComponentCode");
string componentName = element.GetStringSetting("ComponentName");
- string release = element.GetStringSetting("Release");
+ string cversion = element.GetStringSetting("Release");
try
{
- Log.WriteInfo(string.Format("Setup {0} {1}", componentName, release));
- //download installer
- Loader form = new Loader(this.AppContext, installer, componentCode, release);
+ Log.WriteInfo(string.Format("Setup {0} {1}", componentName, cversion));
+ //download installer
+ Loader form = new Loader(installer, ccode, cversion, (e) => AppContext.AppForm.ShowError(e));
DialogResult result = form.ShowDialog(this);
if (result == DialogResult.OK)
{
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.cs
index 2cfb8907..218d7520 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -45,273 +45,273 @@ using WebsitePanel.Installer.Configuration;
namespace WebsitePanel.Installer.Controls
{
- ///
- /// Components control
- ///
- internal partial class ComponentsControl : ResultViewControl
- {
- delegate void SetGridDataSourceCallback(object dataSource, string dataMember);
+ ///
+ /// Components control
+ ///
+ internal partial class ComponentsControl : ResultViewControl
+ {
+ delegate void SetGridDataSourceCallback(object dataSource, string dataMember);
- private string componentCode = null;
- private string componentVersion = null;
- private string componentSettingsXml = null;
+ private string componentCode = null;
+ private string componentVersion = null;
+ private string componentSettingsXml = null;
- public ComponentsControl()
- {
- InitializeComponent();
- grdComponents.AutoGenerateColumns = false;
- }
+ public ComponentsControl()
+ {
+ InitializeComponent();
+ grdComponents.AutoGenerateColumns = false;
+ }
- ///
- /// Action on click Install link
- ///
- ///
- ///
- private void OnInstallLinkClick(object sender, DataGridViewCellEventArgs e)
- {
- if (e.ColumnIndex == grdComponents.Columns.IndexOf(colLink))
- {
- DataRowView row = grdComponents.Rows[e.RowIndex].DataBoundItem as DataRowView;
- if (row != null)
- {
- StartInstaller(row);
- StartLoadingComponents();
- }
- }
- }
+ ///
+ /// Action on click Install link
+ ///
+ ///
+ ///
+ private void OnInstallLinkClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.ColumnIndex == grdComponents.Columns.IndexOf(colLink))
+ {
+ DataRowView row = grdComponents.Rows[e.RowIndex].DataBoundItem as DataRowView;
+ if (row != null)
+ {
+ StartInstaller(row);
+ StartLoadingComponents();
+ }
+ }
+ else
+ {
- private void StartInstaller(DataRowView row)
- {
- string applicationName = Utils.GetDbString(row[Global.Parameters.ApplicationName]);
- string componentName = Utils.GetDbString(row[Global.Parameters.ComponentName]);
- string componentCode = Utils.GetDbString(row[Global.Parameters.ComponentCode]);
- string componentDescription = Utils.GetDbString(row[Global.Parameters.ComponentDescription]);
- string component = Utils.GetDbString(row[Global.Parameters.Component]);
- string version = Utils.GetDbString(row[Global.Parameters.Version]);
- string fileName = row[Global.Parameters.FullFilePath].ToString();
- string installerPath = Utils.GetDbString(row[Global.Parameters.InstallerPath]);
- string installerType = Utils.GetDbString(row[Global.Parameters.InstallerType]);
+ }
+ }
- if (CheckForInstalledComponent(componentCode))
- {
- AppContext.AppForm.ShowWarning(Global.Messages.ComponentIsAlreadyInstalled);
- return;
- }
- try
- {
- // download installer
- Loader form = new Loader(this.AppContext, fileName);
- DialogResult result = form.ShowDialog(this);
+ private void StartInstaller(DataRowView row)
+ {
+ string applicationName = Utils.GetDbString(row[Global.Parameters.ApplicationName]);
+ string componentName = Utils.GetDbString(row[Global.Parameters.ComponentName]);
+ string componentCode = Utils.GetDbString(row[Global.Parameters.ComponentCode]);
+ string componentDescription = Utils.GetDbString(row[Global.Parameters.ComponentDescription]);
+ string component = Utils.GetDbString(row[Global.Parameters.Component]);
+ string version = Utils.GetDbString(row[Global.Parameters.Version]);
+ string fileName = row[Global.Parameters.FullFilePath].ToString();
+ string installerPath = Utils.GetDbString(row[Global.Parameters.InstallerPath]);
+ string installerType = Utils.GetDbString(row[Global.Parameters.InstallerType]);
- if (result == DialogResult.OK)
- {
- string tmpFolder = FileUtils.GetTempDirectory();
- string path = Path.Combine(tmpFolder, installerPath);
- Update();
- string method = "Install";
- Log.WriteStart(string.Format("Running installer {0}.{1} from {2}", installerType, method, path));
+ if (CheckForInstalledComponent(componentCode))
+ {
+ AppContext.AppForm.ShowWarning(Global.Messages.ComponentIsAlreadyInstalled);
+ return;
+ }
+ try
+ {
+ // download installer
+ Loader form = new Loader(fileName, (e) => AppContext.AppForm.ShowError(e));
+ DialogResult result = form.ShowDialog(this);
- //prepare installer args
- Hashtable args = new Hashtable();
+ if (result == DialogResult.OK)
+ {
+ string tmpFolder = FileUtils.GetTempDirectory();
+ string path = Path.Combine(tmpFolder, installerPath);
+ Update();
+ string method = "Install";
+ Log.WriteStart(string.Format("Running installer {0}.{1} from {2}", installerType, method, path));
- args[Global.Parameters.ComponentName] = componentName;
- args[Global.Parameters.ApplicationName] = applicationName;
- args[Global.Parameters.ComponentCode] = componentCode;
- args[Global.Parameters.ComponentDescription] = componentDescription;
- args[Global.Parameters.Version] = version;
- args[Global.Parameters.InstallerFolder] = tmpFolder;
- args[Global.Parameters.InstallerPath] = installerPath;
- args[Global.Parameters.InstallerType] = installerType;
- args[Global.Parameters.Installer] = Path.GetFileName(fileName);
- args[Global.Parameters.ShellVersion] = AssemblyLoader.GetShellVersion();
- args[Global.Parameters.BaseDirectory] = FileUtils.GetCurrentDirectory();
- args[Global.Parameters.ShellMode] = Global.VisualInstallerShell;
- args[Global.Parameters.IISVersion] = Global.IISVersion;
- args[Global.Parameters.SetupXml] = this.componentSettingsXml;
- args[Global.Parameters.ParentForm] = FindForm();
+ //prepare installer args
+ Hashtable args = new Hashtable();
- //run installer
- DialogResult res = (DialogResult)AssemblyLoader.Execute(path, installerType, method, new object[] { args });
- Log.WriteInfo(string.Format("Installer returned {0}", res));
- Log.WriteEnd("Installer finished");
- Update();
- if (res == DialogResult.OK)
- {
- AppContext.AppForm.ReloadApplication();
- }
- FileUtils.DeleteTempDirectory();
- }
- }
- catch (Exception ex)
- {
- Log.WriteError("Installer error", ex);
- AppContext.AppForm.ShowError(ex);
- }
- finally
- {
- this.componentSettingsXml = null;
- this.componentCode = null;
- }
+ args[Global.Parameters.ComponentName] = componentName;
+ args[Global.Parameters.ApplicationName] = applicationName;
+ args[Global.Parameters.ComponentCode] = componentCode;
+ args[Global.Parameters.ComponentDescription] = componentDescription;
+ args[Global.Parameters.Version] = version;
+ args[Global.Parameters.InstallerFolder] = tmpFolder;
+ args[Global.Parameters.InstallerPath] = installerPath;
+ args[Global.Parameters.InstallerType] = installerType;
+ args[Global.Parameters.Installer] = Path.GetFileName(fileName);
+ args[Global.Parameters.ShellVersion] = AssemblyLoader.GetShellVersion();
+ args[Global.Parameters.BaseDirectory] = FileUtils.GetCurrentDirectory();
+ args[Global.Parameters.ShellMode] = Global.VisualInstallerShell;
+ args[Global.Parameters.IISVersion] = Global.IISVersion;
+ args[Global.Parameters.SetupXml] = this.componentSettingsXml;
+ args[Global.Parameters.ParentForm] = FindForm();
- }
+ //run installer
+ DialogResult res = (DialogResult)AssemblyLoader.Execute(path, installerType, method, new object[] { args });
+ Log.WriteInfo(string.Format("Installer returned {0}", res));
+ Log.WriteEnd("Installer finished");
+ Update();
+ if (res == DialogResult.OK)
+ {
+ AppContext.AppForm.ReloadApplication();
+ }
+ FileUtils.DeleteTempDirectory();
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError("Installer error", ex);
+ AppContext.AppForm.ShowError(ex);
+ }
+ finally
+ {
+ this.componentSettingsXml = null;
+ this.componentCode = null;
+ }
- private bool CheckForInstalledComponent(string componentCode)
- {
- bool ret = false;
- List installedComponents = new List();
- foreach (ComponentConfigElement componentConfig in AppConfigManager.AppConfiguration.Components)
- {
- string code = componentConfig.Settings["ComponentCode"].Value;
- installedComponents.Add(code);
- if (code == componentCode)
- {
- ret = true;
- break;
- }
- }
- if (componentCode == "standalone")
- {
- if (installedComponents.Contains("server") ||
- installedComponents.Contains("enterprise server") ||
- installedComponents.Contains("portal"))
- ret = true;
- }
- return ret;
- }
+ }
- ///
- /// Displays component description when entering grid row
- ///
- ///
- ///
- private void OnRowEnter(object sender, DataGridViewCellEventArgs e)
- {
- DataRowView row = grdComponents.Rows[e.RowIndex].DataBoundItem as DataRowView;
- if (row != null)
- {
- lblDescription.Text = Utils.GetDbString(row["ComponentDescription"]);
- }
- }
+ private bool CheckForInstalledComponent(string componentCode)
+ {
+ bool ret = false;
+ List installedComponents = new List();
+ foreach (ComponentConfigElement componentConfig in AppConfigManager.AppConfiguration.Components)
+ {
+ string code = componentConfig.Settings["ComponentCode"].Value;
+ installedComponents.Add(code);
+ if (code == componentCode)
+ {
+ ret = true;
+ break;
+ }
+ }
+ if (componentCode == "standalone")
+ {
+ if (installedComponents.Contains("server") ||
+ installedComponents.Contains("enterprise server") ||
+ installedComponents.Contains("portal"))
+ ret = true;
+ }
+ return ret;
+ }
- ///
- /// Start new thread to load components
- ///
- ///
- ///
- private void OnLoadComponentsClick(object sender, EventArgs e)
- {
- StartLoadingComponents();
- }
+ ///
+ /// Displays component description when entering grid row
+ ///
+ ///
+ ///
+ private void OnRowEnter(object sender, DataGridViewCellEventArgs e)
+ {
+ DataRowView row = grdComponents.Rows[e.RowIndex].DataBoundItem as DataRowView;
+ if (row != null)
+ {
+ lblDescription.Text = Utils.GetDbString(row["ComponentDescription"]);
+ }
+ }
- private void StartLoadingComponents()
- {
- //load list of available components in the separate thread
- AppContext.AppForm.StartAsyncProgress("Connecting...", true);
- ThreadStart threadDelegate = new ThreadStart(LoadComponents);
- Thread newThread = new Thread(threadDelegate);
- newThread.Start();
- }
+ ///
+ /// Start new thread to load components
+ ///
+ ///
+ ///
+ private void OnLoadComponentsClick(object sender, EventArgs e)
+ {
+ StartLoadingComponents();
+ }
- ///
- /// Loads list of available components via web service
- ///
- private void LoadComponents()
- {
- try
- {
- Log.WriteStart("Loading list of available components");
- lblDescription.Text = string.Empty;
- //load components via web service
- var webService = ServiceProviderProxy.GetInstallerWebService();
- DataSet dsComponents = webService.GetAvailableComponents();
- //remove already installed components
- foreach (DataRow row in dsComponents.Tables[0].Rows)
- {
- string componentCode = Utils.GetDbString(row["ComponentCode"]);
- if (CheckForInstalledComponent(componentCode))
- {
- row.Delete();
- }
- }
- dsComponents.AcceptChanges();
- Log.WriteEnd("Available components loaded");
- SetGridDataSource(dsComponents, dsComponents.Tables[0].TableName);
- AppContext.AppForm.FinishProgress();
- }
- catch (Exception ex)
- {
- Log.WriteError("Web service error", ex);
- AppContext.AppForm.FinishProgress();
- AppContext.AppForm.ShowServerError();
- }
- }
+ private void StartLoadingComponents()
+ {
+ //load list of available components in the separate thread
+ AppContext.AppForm.StartAsyncProgress("Connecting...", true);
+ ThreadPool.QueueUserWorkItem(o => LoadComponents());
+ }
- ///
- /// Thread safe grid binding.
- ///
- /// Data source
- /// Data member
- private void SetGridDataSource(object dataSource, string dataMember)
- {
- // InvokeRequired required compares the thread ID of the
- // calling thread to the thread ID of the creating thread.
- // If these threads are different, it returns true.
- if (this.grdComponents.InvokeRequired)
- {
- SetGridDataSourceCallback callBack = new SetGridDataSourceCallback(SetGridDataSource);
- this.grdComponents.Invoke(callBack, new object[] { dataSource, dataMember });
- }
- else
- {
- this.grdComponents.DataSource = dataSource;
- this.grdComponents.DataMember = dataMember;
- }
- }
+ ///
+ /// Loads list of available components via web service
+ ///
+ private void LoadComponents()
+ {
+ try
+ {
+ Log.WriteStart("Loading list of available components");
+ lblDescription.Text = string.Empty;
+ //load components via web service
+ var webService = ServiceProviderProxy.GetInstallerWebService();
+ DataSet dsComponents = webService.GetAvailableComponents();
+ //remove already installed components
+ foreach (DataRow row in dsComponents.Tables[0].Rows)
+ {
+ string componentCode = Utils.GetDbString(row["ComponentCode"]);
+ if (CheckForInstalledComponent(componentCode))
+ {
+ row.Delete();
+ }
+ }
+ dsComponents.AcceptChanges();
+ Log.WriteEnd("Available components loaded");
+ SetGridDataSource(dsComponents, dsComponents.Tables[0].TableName);
+ AppContext.AppForm.FinishProgress();
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError("Web service error", ex);
+ AppContext.AppForm.FinishProgress();
+ AppContext.AppForm.ShowServerError();
+ }
+ }
- ///
- /// Installs component during unattended setup
- ///
- ///
- internal void InstallComponent(string componentCode, string componentVersion, string settingsXml)
- {
- //load list of available components in the separate thread
- this.componentCode = componentCode;
- this.componentVersion = componentVersion;
- this.componentSettingsXml = settingsXml;
- AppContext.AppForm.StartAsyncProgress("Connecting...", true);
- ThreadStart threadDelegate = new ThreadStart(Install);
- Thread newThread = new Thread(threadDelegate);
- newThread.Start();
- }
+ ///
+ /// Thread safe grid binding.
+ ///
+ /// Data source
+ /// Data member
+ private void SetGridDataSource(object dataSource, string dataMember)
+ {
+ // InvokeRequired required compares the thread ID of the
+ // calling thread to the thread ID of the creating thread.
+ // If these threads are different, it returns true.
+ if (this.grdComponents.InvokeRequired)
+ {
+ SetGridDataSourceCallback callBack = new SetGridDataSourceCallback(SetGridDataSource);
+ this.grdComponents.Invoke(callBack, new object[] { dataSource, dataMember });
+ }
+ else
+ {
+ this.grdComponents.DataSource = dataSource;
+ this.grdComponents.DataMember = dataMember;
+ }
+ }
- ///
- /// Loads list of available components via web service and install specified component
- /// during unattended setup
- ///
- private void Install()
- {
- LoadComponents();
- foreach (DataGridViewRow gridRow in grdComponents.Rows)
- {
- DataRowView row = gridRow.DataBoundItem as DataRowView;
- if (row != null)
- {
- string code = Utils.GetDbString(row["ComponentCode"]);
- string version = Utils.GetDbString(row["Version"]);
- if (code == componentCode)
- {
- //check component version if specified
- if (!string.IsNullOrEmpty(componentVersion))
- {
- if (version != componentVersion)
- continue;
- }
- StartInstaller(row);
- AppContext.AppForm.ProceedUnattendedSetup();
- break;
- }
- }
- }
- }
- }
+ ///
+ /// Installs component during unattended setup
+ ///
+ ///
+ internal void InstallComponent(string componentCode, string componentVersion, string settingsXml)
+ {
+ //load list of available components in the separate thread
+ this.componentCode = componentCode;
+ this.componentVersion = componentVersion;
+ this.componentSettingsXml = settingsXml;
+ AppContext.AppForm.StartAsyncProgress("Connecting...", true);
+ ThreadPool.QueueUserWorkItem(o => Install());
+ }
+
+ ///
+ /// Loads list of available components via web service and install specified component
+ /// during unattended setup
+ ///
+ private void Install()
+ {
+ LoadComponents();
+ foreach (DataGridViewRow gridRow in grdComponents.Rows)
+ {
+ DataRowView row = gridRow.DataBoundItem as DataRowView;
+ if (row != null)
+ {
+ string code = Utils.GetDbString(row["ComponentCode"]);
+ string version = Utils.GetDbString(row["Version"]);
+ if (code == componentCode)
+ {
+ //check component version if specified
+ if (!string.IsNullOrEmpty(componentVersion))
+ {
+ if (version != componentVersion)
+ continue;
+ }
+ StartInstaller(row);
+ AppContext.AppForm.ProceedUnattendedSetup();
+ break;
+ }
+ }
+ }
+ }
+ }
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.cs
index d9b581b4..97365a3c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.cs
index 81eeab02..8fd6558b 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -39,118 +39,156 @@ using Ionic.Zip;
using WebsitePanel.Installer.Services;
using WebsitePanel.Installer.Common;
+using WebsitePanel.Installer.Core;
namespace WebsitePanel.Installer.Controls
{
- public delegate void OperationProgressDelegate(int percentage);
+ public delegate void OperationProgressDelegate(int percentage);
- ///
- /// Loader form.
- ///
- internal partial class Loader : Form
- {
- private AppContext appContext;
- private Core.Loader appLoader;
+ ///
+ /// Loader form.
+ ///
+ internal partial class Loader : Form
+ {
+ private Core.Loader appLoader;
- public Loader()
- {
- InitializeComponent();
- DialogResult = DialogResult.Cancel;
- }
+ public Loader()
+ {
+ InitializeComponent();
+ DialogResult = DialogResult.Cancel;
+ }
- public Loader(AppContext context, string remoteFile)
- : this()
- {
- this.appContext = context;
- //
- appLoader = new Core.Loader(remoteFile);
- //
- Start();
- }
+ public Loader(string remoteFile, Action callback)
+ : this()
+ {
+ Start(remoteFile, callback);
+ }
- public Loader(AppContext context, string localFile, string componentCode, string version)
- : this()
- {
- this.appContext = context;
- //
- appLoader = new Core.Loader(localFile, componentCode, version);
- //
- Start();
- }
+ public Loader(string localFile, string componentCode, string version, Action callback)
+ : this()
+ {
+ Start(componentCode, version, callback);
+ }
- private void Start()
- {
- //
- appLoader.OperationFailed += new EventHandler>(appLoader_OperationFailed);
- appLoader.ProgressChanged += new EventHandler>(appLoader_ProgressChanged);
- appLoader.StatusChanged += new EventHandler>(appLoader_StatusChanged);
- appLoader.OperationCompleted += new EventHandler(appLoader_OperationCompleted);
- //
- appLoader.LoadAppDistributive();
- }
+ ///
+ /// Resolves URL of the component's distributive and initiates download process.
+ ///
+ /// Component code to resolve
+ /// Component version to resolve
+ private void Start(string componentCode, string version, Action callback)
+ {
+ string remoteFile = Utils.GetDistributiveLocationInfo(componentCode, version);
- void appLoader_OperationCompleted(object sender, EventArgs e)
- {
- DialogResult = DialogResult.OK;
- Close();
- }
+ Start(remoteFile, callback);
+ }
- void appLoader_StatusChanged(object sender, Core.LoaderEventArgs e)
- {
- lblProcess.Text = e.StatusMessage;
- lblValue.Text = e.EventData;
- // Adjust Cancel button availability for an operation being performed
- if (btnCancel.Enabled != e.Cancellable)
- {
- btnCancel.Enabled = e.Cancellable;
- }
- // This check allows to avoid extra form redrawing operations
- if (ControlBox != e.Cancellable)
- {
- ControlBox = e.Cancellable;
- }
- }
+ ///
+ /// Initializes and starts the app distributive download process.
+ ///
+ /// URL of the file to be downloaded
+ private void Start(string remoteFile, Action callback)
+ {
+ appLoader = Core.LoaderFactory.CreateFileLoader(remoteFile);
- void appLoader_ProgressChanged(object sender, Core.LoaderEventArgs e)
- {
- progressBar.Value = e.EventData;
- // Adjust Cancel button availability for an operation being performed
- if (btnCancel.Enabled != e.Cancellable)
- {
- btnCancel.Enabled = e.Cancellable;
- }
- // This check allows to avoid extra form redrawing operations
- if (ControlBox != e.Cancellable)
- {
- ControlBox = e.Cancellable;
- }
- }
+ appLoader.OperationFailed += new EventHandler>(appLoader_OperationFailed);
+ appLoader.OperationFailed += (object sender, Core.LoaderEventArgs e) => {
+ if (callback != null)
+ {
+ try
+ {
+ callback(e.EventData);
+ }
+ catch
+ {
+ // Just swallow the exception as we have no interest in it.
+ }
+ }
+ };
+ appLoader.ProgressChanged += new EventHandler>(appLoader_ProgressChanged);
+ appLoader.StatusChanged += new EventHandler>(appLoader_StatusChanged);
+ appLoader.OperationCompleted += new EventHandler(appLoader_OperationCompleted);
- void appLoader_OperationFailed(object sender, Core.LoaderEventArgs e)
- {
- appContext.AppForm.ShowError(e.EventData);
- //
- DialogResult = DialogResult.Abort;
- Close();
- }
+ appLoader.LoadAppDistributive();
+ }
- private void btnCancel_Click(object sender, EventArgs e)
- {
- Log.WriteInfo("Execution was canceled by user");
- Close();
- }
+ void appLoader_OperationCompleted(object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.OK;
+ Close();
+ }
- private void OnLoaderFormClosing(object sender, FormClosingEventArgs e)
- {
- if (this.DialogResult == DialogResult.Cancel)
- {
- appLoader.AbortOperation();
- }
- // Remove event handlers
- appLoader.OperationFailed -= new EventHandler>(appLoader_OperationFailed);
- appLoader.ProgressChanged -= new EventHandler>(appLoader_ProgressChanged);
- appLoader.StatusChanged -= new EventHandler>(appLoader_StatusChanged);
- appLoader.OperationCompleted -= new EventHandler(appLoader_OperationCompleted);
- }
- }
+ void appLoader_StatusChanged(object sender, Core.LoaderEventArgs e)
+ {
+ lblProcess.Text = e.StatusMessage;
+ lblValue.Text = e.EventData;
+ // Adjust Cancel button availability for an operation being performed
+ if (btnCancel.Enabled != e.Cancellable)
+ {
+ btnCancel.Enabled = e.Cancellable;
+ }
+ // This check allows to avoid extra form redrawing operations
+ if (ControlBox != e.Cancellable)
+ {
+ ControlBox = e.Cancellable;
+ }
+ }
+
+ void appLoader_ProgressChanged(object sender, Core.LoaderEventArgs e)
+ {
+ bool updateControl = (progressBar.Value != e.EventData);
+ progressBar.Value = e.EventData;
+ // Adjust Cancel button availability for an operation being performed
+ if (btnCancel.Enabled != e.Cancellable)
+ {
+ btnCancel.Enabled = e.Cancellable;
+ }
+ // This check allows to avoid extra form redrawing operations
+ if (ControlBox != e.Cancellable)
+ {
+ ControlBox = e.Cancellable;
+ }
+ //
+ if (updateControl)
+ {
+ progressBar.Update();
+ }
+ }
+
+ void appLoader_OperationFailed(object sender, Core.LoaderEventArgs e)
+ {
+ DialogResult = DialogResult.Abort;
+ Close();
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ DetachEventHandlers();
+ Log.WriteInfo("Execution was canceled by user");
+ Close();
+ }
+
+ private void DetachEventHandlers()
+ {
+ // Detach event handlers
+ if (appLoader != null)
+ {
+ appLoader.OperationFailed -= new EventHandler>(appLoader_OperationFailed);
+ appLoader.ProgressChanged -= new EventHandler>(appLoader_ProgressChanged);
+ appLoader.StatusChanged -= new EventHandler>(appLoader_StatusChanged);
+ appLoader.OperationCompleted -= new EventHandler(appLoader_OperationCompleted);
+ }
+ }
+
+ private void OnLoaderFormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (this.DialogResult == DialogResult.Cancel)
+ {
+ if (appLoader != null)
+ {
+ appLoader.AbortOperation();
+ appLoader = null;
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ProgressIcon.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ProgressIcon.cs
index 99bd9de9..214c4884 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ProgressIcon.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ProgressIcon.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ResultViewControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ResultViewControl.cs
index 47bec400..25d47756 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ResultViewControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ResultViewControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.cs
index 242c4b72..a439d813 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.cs
index 6aa328ec..05561608 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.cs
index 7380d425..efc26c9c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.cs
index 436b810f..afe76648 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.cs
index d1f65db9..ef239bd7 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs
index 4843375d..a0bb0800 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Properties/AssemblyInfo.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Properties/AssemblyInfo.cs
index 30bd80b6..87c09ded 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Properties/AssemblyInfo.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe
index 7e9327c6..9105eeef 100644
Binary files a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe and b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe differ
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/BaseActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/BaseActionManager.cs
index be9e41d4..d17a7dcb 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/BaseActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/BaseActionManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
index 917999db..6952cf21 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IInstallAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IInstallAction.cs
index e63e425e..a31b2366 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IInstallAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IInstallAction.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrepareDefaultsAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrepareDefaultsAction.cs
index 66e8950b..2ba5e913 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrepareDefaultsAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrepareDefaultsAction.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrerequisiteAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrerequisiteAction.cs
index 69ae916d..6bf3d610 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrerequisiteAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IPrerequisiteAction.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IUninstallAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IUninstallAction.cs
index c101b090..5b7cc37c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IUninstallAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/IUninstallAction.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
index fc52568c..b65e7355 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs
index daf1b2d7..308ed56c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs
index bec92b99..7d0ccdc3 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/BaseSetup.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/BaseSetup.cs
index cd54c042..e26a25d3 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/BaseSetup.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/BaseSetup.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/AppConfig.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/AppConfig.cs
index 6f703a3a..15b376f6 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/AppConfig.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/AppConfig.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CRC32.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CRC32.cs
index 5a87aab8..cd68aad6 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CRC32.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CRC32.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ConfigurationCheck.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ConfigurationCheck.cs
index 3d6e03e7..2e2b6b0a 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ConfigurationCheck.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ConfigurationCheck.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CopyProcess.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CopyProcess.cs
index a13f6e5b..27b75ec4 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CopyProcess.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/CopyProcess.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ES.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ES.cs
index db6da50d..76c8d659 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ES.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ES.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
index 628baacf..178f47db 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Global.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Global.cs
index 522183d0..22556149 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Global.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Global.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
index 37db0eba..b7dc2fad 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallLog.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallLog.cs
index 21584678..216b68f6 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallLog.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallLog.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Log.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Log.cs
index 3b4191d4..1b1ce56b 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Log.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Log.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/OS.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/OS.cs
index 826b0e96..2284c66f 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/OS.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/OS.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RegistryUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RegistryUtils.cs
index 15c899f0..033031e3 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RegistryUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RegistryUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBack.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBack.cs
index 629df405..17830fe7 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBack.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBack.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBackProcess.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBackProcess.cs
index 123a6493..1d22456d 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBackProcess.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/RollBackProcess.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityEnums.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityEnums.cs
index 3ffa1ff9..9659ee5d 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityEnums.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityEnums.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
index 6e2a328d..e69f9bbb 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ServerItem.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ServerItem.cs
index 2bd8c376..ad4504f5 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ServerItem.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ServerItem.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupActions.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupActions.cs
index 2781ea53..927165b8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupActions.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupActions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
index bd6635fd..43a96776 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlProcess.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlProcess.cs
index a4ad6ad5..6790e3d6 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlProcess.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlProcess.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlServerItem.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlServerItem.cs
index 490986db..370c60c2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlServerItem.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlServerItem.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlUtils.cs
index 927238f3..ce0ca360 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SqlUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Utils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Utils.cs
index 5c59fc1a..3bc41dba 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Utils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/Utils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebException.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebException.cs
index 0c5c9852..0b8b80d2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebException.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebException.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
index a2183100..c3a92a05 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WmiHelper.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WmiHelper.cs
index 6e8612c4..6f68e2ae 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WmiHelper.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WmiHelper.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/XmlUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/XmlUtils.cs
index 431fd032..5e754312 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/XmlUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/XmlUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ZipIndicator.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ZipIndicator.cs
index 6c1bd6ea..bcb40334 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ZipIndicator.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/ZipIndicator.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer.cs
index f7c0309e..98e769dd 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs
index 4d18a9c7..07551895 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs
@@ -6,58 +6,85 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup
{
- ///
- /// Release 1.2.0
- ///
- public class EnterpriseServer120 : EnterpriseServer
- {
- public static new object Install(object obj)
- {
- //
- return EnterpriseServer.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.1
+ ///
+ public class EnterpriseServer121 : EnterpriseServer
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return EnterpriseServer.InstallBase(obj, "1.2.1");
+ }
- public static new DialogResult Uninstall(object obj)
- {
- return EnterpriseServer.Uninstall(obj);
- }
+ public static new DialogResult Uninstall(object obj)
+ {
+ return EnterpriseServer.Uninstall(obj);
+ }
- public static new DialogResult Setup(object obj)
- {
- return EnterpriseServer.Setup(obj);
- }
+ public static new DialogResult Setup(object obj)
+ {
+ return EnterpriseServer.Setup(obj);
+ }
- public static new DialogResult Update(object obj)
- {
- return UpdateBase(obj, "1.2.0", "1.1.2", true, new InstallAction(ActionTypes.SwitchEntServer2AspNet40));
- }
- }
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.2.1", "1.2.0", true);
+ }
+ }
- ///
- /// Release 1.1.0
- ///
- public class EnterpriseServer110 : EnterpriseServer
- {
- public static new object Install(object obj)
- {
- return EnterpriseServer.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.0
+ ///
+ public class EnterpriseServer120 : EnterpriseServer
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return EnterpriseServer.InstallBase(obj, "1.1.0");
+ }
- public static new DialogResult Uninstall(object obj)
- {
- return EnterpriseServer.Uninstall(obj);
- }
+ public static new DialogResult Uninstall(object obj)
+ {
+ return EnterpriseServer.Uninstall(obj);
+ }
- public static new DialogResult Setup(object obj)
- {
- return EnterpriseServer.Setup(obj);
- }
+ public static new DialogResult Setup(object obj)
+ {
+ return EnterpriseServer.Setup(obj);
+ }
- public static new DialogResult Update(object obj)
- {
- return UpdateBase(obj, "1.1.0", "1.0.2", true);
- }
- }
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.2.0", "1.1.2,1.2.0", true, new InstallAction(ActionTypes.SwitchEntServer2AspNet40));
+ }
+ }
+
+ ///
+ /// Release 1.1.0
+ ///
+ public class EnterpriseServer110 : EnterpriseServer
+ {
+ public static new object Install(object obj)
+ {
+ return EnterpriseServer.InstallBase(obj, "1.1.0");
+ }
+
+ public static new DialogResult Uninstall(object obj)
+ {
+ return EnterpriseServer.Uninstall(obj);
+ }
+
+ public static new DialogResult Setup(object obj)
+ {
+ return EnterpriseServer.Setup(obj);
+ }
+
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.1.0", "1.0.2", true);
+ }
+ }
/// Release 1.0.2
///
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Forms/InstallerForm.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Forms/InstallerForm.cs
index 2ebd1cbc..9dc7d0f6 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Forms/InstallerForm.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Forms/InstallerForm.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal.cs
index 71056a9e..cada0de3 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs
index 67ced1c2..01854e9b 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs
@@ -6,58 +6,85 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup
{
- ///
- /// Release 1.2.0
- ///
- public class Portal120 : Portal
- {
- public static new object Install(object obj)
- {
- //
- return Portal.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.1
+ ///
+ public class Portal121 : Portal
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return Portal.InstallBase(obj, "1.2.1");
+ }
- public static new DialogResult Uninstall(object obj)
- {
- return Portal.Uninstall(obj);
- }
+ public static new DialogResult Uninstall(object obj)
+ {
+ return Portal.Uninstall(obj);
+ }
- public static new DialogResult Setup(object obj)
- {
- return Portal.Setup(obj);
- }
+ public static new DialogResult Setup(object obj)
+ {
+ return Portal.Setup(obj);
+ }
- public static new DialogResult Update(object obj)
- {
- return UpdateBase(obj, "1.2.0", "1.1.2", false, new InstallAction(ActionTypes.SwitchWebPortal2AspNet40));
- }
- }
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.2.1", "1.2.0", false);
+ }
+ }
- ///
- /// Release 1.1.0
- ///
- public class Portal110 : Portal
- {
- public static new object Install(object obj)
- {
- return Portal.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.0
+ ///
+ public class Portal120 : Portal
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return Portal.InstallBase(obj, "1.1.0");
+ }
- public static new DialogResult Uninstall(object obj)
- {
- return Portal.Uninstall(obj);
- }
+ public static new DialogResult Uninstall(object obj)
+ {
+ return Portal.Uninstall(obj);
+ }
- public static new DialogResult Setup(object obj)
- {
- return Portal.Setup(obj);
- }
+ public static new DialogResult Setup(object obj)
+ {
+ return Portal.Setup(obj);
+ }
- public static new DialogResult Update(object obj)
- {
- return UpdateBase(obj, "1.1.0", "1.0.2", false, new InstallAction(ActionTypes.AddCustomErrorsPage));
- }
- }
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.2.0", "1.1.2,1.2.0", false, new InstallAction(ActionTypes.SwitchWebPortal2AspNet40));
+ }
+ }
+
+ ///
+ /// Release 1.1.0
+ ///
+ public class Portal110 : Portal
+ {
+ public static new object Install(object obj)
+ {
+ return Portal.InstallBase(obj, "1.1.0");
+ }
+
+ public static new DialogResult Uninstall(object obj)
+ {
+ return Portal.Uninstall(obj);
+ }
+
+ public static new DialogResult Setup(object obj)
+ {
+ return Portal.Setup(obj);
+ }
+
+ public static new DialogResult Update(object obj)
+ {
+ return UpdateBase(obj, "1.1.0", "1.0.2", false, new InstallAction(ActionTypes.AddCustomErrorsPage));
+ }
+ }
/// Release 1.0.2
///
public class Portal102 : Portal101
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Properties/AssemblyInfo.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Properties/AssemblyInfo.cs
index ec7abd88..9df67ee8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Properties/AssemblyInfo.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server.cs
index 9c81d81a..77ec0446 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs
index ad241ee1..bd63cb57 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs
@@ -6,78 +6,105 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup
{
- ///
- /// Release 1.2.0
- ///
- public class Server120 : Server
- {
- public static new object Install(object obj)
- {
- //
- return Server.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.1
+ ///
+ public class Server121 : Server
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return Server.InstallBase(obj, "1.2.1");
+ }
- public static new object Uninstall(object obj)
- {
- return Server.Uninstall(obj);
- }
+ public static new object Uninstall(object obj)
+ {
+ return Server.Uninstall(obj);
+ }
- public static new object Setup(object obj)
- {
- return Server.Setup(obj);
- }
+ public static new object Setup(object obj)
+ {
+ return Server.Setup(obj);
+ }
- public static new object Update(object obj)
- {
- return Server.UpdateBase(obj, "1.2.0", "1.1.2", false, new InstallAction(ActionTypes.SwitchServer2AspNet40));
- }
- }
+ public static new object Update(object obj)
+ {
+ return Server.UpdateBase(obj, "1.2.1", "1.2.0", false);
+ }
+ }
- ///
- /// Release 1.1.0
- ///
- public class Server110 : Server
- {
- public static new object Install(object obj)
- {
- return Server.InstallBase(obj, "1.1.0");
- }
+ ///
+ /// Release 1.2.0
+ ///
+ public class Server120 : Server
+ {
+ public static new object Install(object obj)
+ {
+ //
+ return Server.InstallBase(obj, "1.1.0");
+ }
- public static new object Uninstall(object obj)
- {
- return Server.Uninstall(obj);
- }
+ public static new object Uninstall(object obj)
+ {
+ return Server.Uninstall(obj);
+ }
- public static new object Setup(object obj)
- {
- return Server.Setup(obj);
- }
+ public static new object Setup(object obj)
+ {
+ return Server.Setup(obj);
+ }
- public static new object Update(object obj)
- {
- return UpdateBase(obj, "1.1.0", "1.0.2", false);
- }
- }
+ public static new object Update(object obj)
+ {
+ return Server.UpdateBase(obj, "1.2.0", "1.1.2,1.2.0", false, new InstallAction(ActionTypes.SwitchServer2AspNet40));
+ }
+ }
+
+ ///
+ /// Release 1.1.0
+ ///
+ public class Server110 : Server
+ {
+ public static new object Install(object obj)
+ {
+ return Server.InstallBase(obj, "1.1.0");
+ }
+
+ public static new object Uninstall(object obj)
+ {
+ return Server.Uninstall(obj);
+ }
+
+ public static new object Setup(object obj)
+ {
+ return Server.Setup(obj);
+ }
+
+ public static new object Update(object obj)
+ {
+ return UpdateBase(obj, "1.1.0", "1.0.2", false);
+ }
+ }
/// Release 1.0.2
///
public class Server102 : Server101
{
- public static new object Install(object obj)
+ public static new object Install(object obj)
{
return Server101.InstallBase(obj, "1.0.0");
}
- public static new object Uninstall(object obj)
+ public static new object Uninstall(object obj)
{
return Server101.Uninstall(obj);
}
- public static new object Setup(object obj)
+ public static new object Setup(object obj)
{
return Server101.Setup(obj);
}
- public static new object Update(object obj)
+ public static new object Update(object obj)
{
return UpdateBase(obj, "1.0.0", "1.0.1", false);
}
@@ -88,22 +115,22 @@ namespace WebsitePanel.Setup
///
public class Server101 : Server10
{
- public static new object Install(object obj)
+ public static new object Install(object obj)
{
return Server10.InstallBase(obj, "1.0.0");
}
- public static new object Uninstall(object obj)
+ public static new object Uninstall(object obj)
{
return Server10.Uninstall(obj);
}
- public static new object Setup(object obj)
+ public static new object Setup(object obj)
{
return Server10.Setup(obj);
}
- public static new object Update(object obj)
+ public static new object Update(object obj)
{
return UpdateBase(obj, "1.0.0", "1.0", false);
}
@@ -114,12 +141,12 @@ namespace WebsitePanel.Setup
///
public class Server10 : Server
{
- public static new object Install(object obj)
+ public static new object Install(object obj)
{
return Server.InstallBase(obj, "1.0.0");
}
- public static new object Uninstall(object obj)
+ public static new object Uninstall(object obj)
{
return Server.Uninstall(obj);
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup.cs
index 0d6c62b9..df83029b 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs
index 801c6862..116f45c2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs
@@ -5,34 +5,45 @@ using System.Windows.Forms;
namespace WebsitePanel.Setup
{
- ///
- /// Release 1.2.0
- ///
- public class StandaloneServerSetup120 : StandaloneServerSetup
- {
- public static new object Install(object obj)
- {
- return StandaloneServerSetup.InstallBase(obj, "1.2.0");
- }
- }
+ ///
+ /// Release 1.2.1
+ ///
+ public class StandaloneServerSetup121 : StandaloneServerSetup
+ {
+ public static new object Install(object obj)
+ {
+ return StandaloneServerSetup.InstallBase(obj, "1.2.1");
+ }
+ }
- ///
- /// Release 1.1.0
- ///
- public class StandaloneServerSetup110 : StandaloneServerSetup
- {
- public static new object Install(object obj)
- {
- return StandaloneServerSetup.InstallBase(obj, "1.1.0");
- }
- }
+ ///
+ /// Release 1.2.0
+ ///
+ public class StandaloneServerSetup120 : StandaloneServerSetup
+ {
+ public static new object Install(object obj)
+ {
+ return StandaloneServerSetup.InstallBase(obj, "1.2.0");
+ }
+ }
+
+ ///
+ /// Release 1.1.0
+ ///
+ public class StandaloneServerSetup110 : StandaloneServerSetup
+ {
+ public static new object Install(object obj)
+ {
+ return StandaloneServerSetup.InstallBase(obj, "1.1.0");
+ }
+ }
///
/// Release 1.0.2
///
public class StandaloneServerSetup102 : StandaloneServerSetup101
{
- public static new object Install(object obj)
+ public static new object Install(object obj)
{
return StandaloneServerSetup.InstallBase(obj, "1.0.0");
}
@@ -43,7 +54,7 @@ namespace WebsitePanel.Setup
///
public class StandaloneServerSetup101 : StandaloneServerSetup
{
- public static new object Install(object obj)
+ public static new object Install(object obj)
{
return StandaloneServerSetup.InstallBase(obj, "1.0.0");
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/AspNetVersion.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/AspNetVersion.cs
index 9c71f3ec..0b5219bd 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/AspNetVersion.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/AspNetVersion.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerBinding.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerBinding.cs
index 63960d28..0992eb5f 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerBinding.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerBinding.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerState.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerState.cs
index 6bcf079a..cfdba0fc 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerState.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/ServerState.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebExtensionStatus.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebExtensionStatus.cs
index e71aab05..df954b1b 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebExtensionStatus.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebExtensionStatus.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebSiteItem.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebSiteItem.cs
index 9eccab46..fb92ed4c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebSiteItem.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebSiteItem.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebVirtualDirectoryItem.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebVirtualDirectoryItem.cs
index 35d017ad..cfc867df 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebVirtualDirectoryItem.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Web/WebVirtualDirectoryItem.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Windows/SystemUserItem.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Windows/SystemUserItem.cs
index 832d20b8..17ba54c8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Windows/SystemUserItem.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Windows/SystemUserItem.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/BannerWizardPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/BannerWizardPage.cs
index 71d2134d..bcbf5840 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/BannerWizardPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/BannerWizardPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs
index 470bda6c..7cb94dc0 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfirmUninstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfirmUninstallPage.cs
index 6f096dbc..5aa40da0 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfirmUninstallPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfirmUninstallPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/DatabasePage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/DatabasePage.cs
index 63070ad3..134c9653 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/DatabasePage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/DatabasePage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs
index 45447e4f..f101d6da 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -1901,52 +1901,52 @@ namespace WebsitePanel.Setup
}
}
- private void UpdateWebConfigNamespaces()
- {
- try
- {
- // find all .config files in the installation directory
- string[] configFiles = Directory.GetFiles(Wizard.SetupVariables.InstallationFolder,
- "*.config", SearchOption.TopDirectoryOnly);
+ private void UpdateWebConfigNamespaces()
+ {
+ try
+ {
+ // find all .config files in the installation directory
+ string[] configFiles = Directory.GetFiles(Wizard.SetupVariables.InstallationFolder,
+ "*.config", SearchOption.TopDirectoryOnly);
- if (configFiles != null && configFiles.Length > 0)
- {
- foreach (string path in configFiles)
- {
- try
- {
- Log.WriteStart(String.Format("Updating '{0}' file", path));
+ if (configFiles != null && configFiles.Length > 0)
+ {
+ foreach (string path in configFiles)
+ {
+ try
+ {
+ Log.WriteStart(String.Format("Updating '{0}' file", path));
- // load configuration file in memory
- string content = File.ReadAllText(path);
+ // load configuration file in memory
+ string content = File.ReadAllText(path);
- // replace DotNetPark. to empty strings
- content = Regex.Replace(content, "dotnetpark\\.", "", RegexOptions.IgnoreCase);
+ // replace DotNetPark. to empty strings
+ content = Regex.Replace(content, "dotnetpark\\.", "", RegexOptions.IgnoreCase);
- // save updated config
- File.WriteAllText(path, content);
+ // save updated config
+ File.WriteAllText(path, content);
- Log.WriteEnd(String.Format("Updated '{0}' file", path));
- InstallLog.AppendLine(String.Format("- Updated {0} file", path));
- }
- catch (Exception ex)
- {
- if (Utils.IsThreadAbortException(ex))
- return;
- Log.WriteError(String.Format("Error updating '{0}' file", path), ex);
- throw;
- }
- }
- }
- }
- catch (Exception ex)
- {
- if (Utils.IsThreadAbortException(ex))
- return;
- Log.WriteError("Error listing *.config files", ex);
- throw;
- }
- }
+ Log.WriteEnd(String.Format("Updated '{0}' file", path));
+ InstallLog.AppendLine(String.Format("- Updated {0} file", path));
+ }
+ catch (Exception ex)
+ {
+ if (Utils.IsThreadAbortException(ex))
+ return;
+ Log.WriteError(String.Format("Error updating '{0}' file", path), ex);
+ throw;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ if (Utils.IsThreadAbortException(ex))
+ return;
+ Log.WriteError("Error listing *.config files", ex);
+ throw;
+ }
+ }
private void UpdateEnterpriseServerUrl()
{
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage2.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage2.cs
index f2789427..5c02bb78 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage2.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage2.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/FinishPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/FinishPage.cs
index a53215e6..527b56f1 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/FinishPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/FinishPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/InstallFolderPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/InstallFolderPage.cs
index bd38503d..77cfe1bf 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/InstallFolderPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/InstallFolderPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/IntroductionPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/IntroductionPage.cs
index 6de25944..68fe4caa 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/IntroductionPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/IntroductionPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/LicenseAgreementPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/LicenseAgreementPage.cs
index 8eaa8591..27ad0ab9 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/LicenseAgreementPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/LicenseAgreementPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/MarginWizardPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/MarginWizardPage.cs
index 7e89dff8..9a2edf7c 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/MarginWizardPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/MarginWizardPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/RollBackPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/RollBackPage.cs
index 26d38101..8020d4f1 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/RollBackPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/RollBackPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SQLServersPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SQLServersPage.cs
index b38208af..0ccb270d 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SQLServersPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SQLServersPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerAdminPasswordPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerAdminPasswordPage.cs
index 142093be..aebd2543 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerAdminPasswordPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerAdminPasswordPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerPasswordPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerPasswordPage.cs
index 880da961..c3651972 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerPasswordPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServerPasswordPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServiceAddressPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServiceAddressPage.cs
index 1ceeae6d..5368c13a 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServiceAddressPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ServiceAddressPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SetupCompletePage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SetupCompletePage.cs
index 4a9c47ca..aed42e44 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SetupCompletePage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/SetupCompletePage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UninstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UninstallPage.cs
index c06e12cc..5df6124e 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UninstallPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UninstallPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UrlPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UrlPage.cs
index 0c204399..12681cb2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UrlPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UrlPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UserAccountPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UserAccountPage.cs
index 80a233c6..c1a85f1f 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UserAccountPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/UserAccountPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WebPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WebPage.cs
index b9ee9ee8..0f78c132 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WebPage.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WebPage.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/Wizard.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/Wizard.cs
index 26df6e0d..def9ab39 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/Wizard.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/Wizard.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WizardPageBase.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WizardPageBase.cs
index 4c4cfec9..aa694969 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WizardPageBase.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/WizardPageBase.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Program.cs b/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Program.cs
index f1614bf0..76fbefd8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Program.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Program.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Properties/AssemblyInfo.cs b/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Properties/AssemblyInfo.cs
index 96bfd346..a0e938a7 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Properties/AssemblyInfo.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.SilentInstaller/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/FileUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/FileUtils.cs
index 8d88fae8..5d1e0fc2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/FileUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/FileUtils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/User32.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/User32.cs
index 833e1873..8a747e45 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/User32.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/User32.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/Utils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/Utils.cs
index 87b5114f..8fc29beb 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/Utils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Common/Utils.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Program.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Program.cs
index 584a20bb..b5feff89 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Program.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Program.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Properties/AssemblyInfo.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Properties/AssemblyInfo.cs
index e2f0900a..c421e830 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Properties/AssemblyInfo.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/UpdaterForm.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/UpdaterForm.cs
index 5afe47a3..3ffae895 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Updater/UpdaterForm.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Updater/UpdaterForm.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, Outercurve Foundation.
+// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
diff --git a/WebsitePanel.WebSite/LICENSE.txt b/WebsitePanel.WebSite/LICENSE.txt
new file mode 100644
index 00000000..2a05f072
--- /dev/null
+++ b/WebsitePanel.WebSite/LICENSE.txt
@@ -0,0 +1,27 @@
+Copyright (c) 2010, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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 newline at end of file
diff --git a/WebsitePanel.WebSite/Readme.htm b/WebsitePanel.WebSite/Readme.htm
new file mode 100644
index 00000000..26d63d99
--- /dev/null
+++ b/WebsitePanel.WebSite/Readme.htm
@@ -0,0 +1,56 @@
+
+
+
+ WebsitePanel Web Site - Readme
+
+
+
+
+ WebsitePanel Web Site - Readme
+
+ WebsitePanel Web Site hosts a web service used by WebsitePanel Installer
+ for:
+
+ getting the information about available WebsitePanel components and their latest
+ releases
+ getting update information for particular release
+ downloading WebsitePanel component distributives
+
+
+ The service stores the information about WebsitePanel components and their
+ releases in "Data\ProductReleasesFeed.xml" XML file. This XML file could be
+ downloaded by any external 3rd-party application.
+
+ WebsitePanel distributive installation and update files are stored in "Files"
+ folder. Those files could be freely downloaded by any external client provided
+ they know their exact URLs.
+
+
+ License
+
+ WebsitePanel Web Site is released under BSD license. Please see LICENSE.txt file in the
+ root folder of this project.
+
+
+ Project Structure
+
+ The project has the following folders structure:
+
+ \Trunk - project version currently in development
+ \Sources - project source codes.
+
+
+ \Releases - contains all project releases
+ \Branches - contains project branches for proof-of-concepts,
+ new development, bug fixing, etc.
+ LICENSE.txt - project license
+ Readme.htm - the file you are reading right now
+ ReleaseNotes.htm - project release notes
+
+
+ Build How-To
+
+ Open WebsitePanel.WebSite solution in Visual Studio 2008 and build it.
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/ReleaseNotes.htm b/WebsitePanel.WebSite/ReleaseNotes.htm
new file mode 100644
index 00000000..6e5a2cba
--- /dev/null
+++ b/WebsitePanel.WebSite/ReleaseNotes.htm
@@ -0,0 +1,17 @@
+
+
+
+ WebsitePanel Web Site - Release Notes
+
+
+
+
+ WebsitePanel Web Site - Release Notes
+
+ April 16, 2010 - v1.0
+
+ Initial release of WebsitePanel Web Site under BSD license.
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite.sln b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite.sln
new file mode 100644
index 00000000..04267156
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite.sln
@@ -0,0 +1,26 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9409302A-156B-44AF-B0B7-45D2AF13B6EE}"
+ ProjectSection(SolutionItems) = preProject
+ ..\..\LICENSE.txt = ..\..\LICENSE.txt
+ ..\..\Readme.htm = ..\..\Readme.htm
+ ..\..\ReleaseNotes.htm = ..\..\ReleaseNotes.htm
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.WebSite", "WebsitePanel.WebSite\WebsitePanel.WebSite.csproj", "{168FBFB5-D770-43DE-82F0-089D0F1FD4D6}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {168FBFB5-D770-43DE-82F0-089D0F1FD4D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {168FBFB5-D770-43DE-82F0-089D0F1FD4D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {168FBFB5-D770-43DE-82F0-089D0F1FD4D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {168FBFB5-D770-43DE-82F0-089D0F1FD4D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx
new file mode 100644
index 00000000..16c42ad0
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx
@@ -0,0 +1,11 @@
+<%@ Page Title="WebsitePanel - Contact Us" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ContactUs.aspx.cs" Inherits="WebsitePanel.WebSite.ContactUs" %>
+
+
+
+ Contact Us
+
+ WebsitePanel project is owned and maintained by SMB SAAS Systems Inc.
+ privately-held company located in Richmond, BC, Canada.
+ For general inquiries please contact: info@websitepanel.net
+ Do not send support requests to the e-mail above, use online forums please.
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.cs
new file mode 100644
index 00000000..ec3de6e8
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class ContactUs : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.designer.cs
new file mode 100644
index 00000000..bacf153a
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/ContactUs.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class ContactUs {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/msi-icon.gif b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/msi-icon.gif
new file mode 100644
index 00000000..e53333c5
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/msi-icon.gif differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/page_bg.jpg b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/page_bg.jpg
new file mode 100644
index 00000000..4f567472
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/page_bg.jpg differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/pdf-icon.png b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/pdf-icon.png
new file mode 100644
index 00000000..340c26fc
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/pdf-icon.png differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_logo.png b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_logo.png
new file mode 100644
index 00000000..61c27507
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_logo.png differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_screenshot.png b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_screenshot.png
new file mode 100644
index 00000000..a40a3e58
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/wsp_screenshot.png differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/zip-icon.png b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/zip-icon.png
new file mode 100644
index 00000000..037dad2d
Binary files /dev/null and b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Images/zip-icon.png differ
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Styles/Default.css b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Styles/Default.css
new file mode 100644
index 00000000..c55ca01a
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Content/Styles/Default.css
@@ -0,0 +1,141 @@
+BODY
+{
+ font-family: Arial,sans-serif,Tahoma,Verdana,Helvetica,Helvetica-Narrow;
+ font-size: 0.9em;
+ color: #333333;
+ line-height: 1.166;
+ margin: 0px;
+ padding: 0px;
+ background: #ffffff url('../images/page_bg.jpg') repeat-x top left;
+}
+
+#PageOutline
+{
+ width: 950px;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 20px;
+}
+#PageContainer
+{
+ width: 920px;
+ padding: 10px 10px 10px 20px;
+ background-color: #FFFFFF;
+ float: right;
+}
+
+#Header
+{
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+#SideBar
+{
+ padding: 15px;
+ float: right;
+ width: 270px;
+ background-color: #f8f8f8;
+}
+
+#Content
+{
+ margin-right: 320px;
+}
+
+.Clear
+{
+ clear: both;
+}
+
+#Footer
+{
+ font-size: 8pt;
+ padding-top: 10px;
+ text-align: center;
+}
+#Footer A
+{
+ color: #000000;
+}
+H1
+{
+ font-size: 1.8em;
+ font-weight: normal;
+ color: #336699;
+}
+H2
+{
+ font-size: 1.1em;
+ color: #336699;
+}
+
+#SideBar H2
+{
+ margin-top: 0px;
+}
+
+A
+{
+ color: #4b79aa;
+}
+LI
+{
+ padding-bottom: 4px;
+}
+INPUT.Button
+{
+ font-size: 1.2em;
+ padding: 5px;
+}
+.NewFeature
+{
+ color: #ff0000;
+}
+.Red
+{
+ color: #ff0000;
+}
+.ProductOption
+{
+ font-size: 1.3em;
+ font-weight: bold;
+}
+.Form
+{
+ background-color: #f1f7fc;
+ padding: 10px 20px 10px 20px;
+}
+.FormFooter
+{
+ text-align: center;
+ margin-top: 10px;
+}
+.Tips LI
+{
+ padding-bottom: 20px;
+}
+
+.Download
+{
+ padding: 10px 10px 10px 30px;
+ border: 1px dashed #f0f0f0;
+ background-color: #f9f9f9;
+ background-repeat: no-repeat;
+ background-position: 8px center;
+}
+
+.Download.msi
+{
+ background-image: url('../images/msi-icon.gif');
+}
+
+.Download.pdf
+{
+ background-image: url('../images/pdf-icon.png');
+}
+
+.Download.zip
+{
+ background-image: url('../images/zip-icon.png');
+}
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx
new file mode 100644
index 00000000..a6db4a31
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx
@@ -0,0 +1,31 @@
+<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SideBar.ascx.cs" Inherits="WebsitePanel.WebSite.Controls.SideBar" %>
+
+WebsitePanel
+
+
+Support Options
+
+
+Get Involved
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.cs
new file mode 100644
index 00000000..8a084035
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite.Controls
+{
+ public partial class SideBar : System.Web.UI.UserControl
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.designer.cs
new file mode 100644
index 00000000..07e57472
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Controls/SideBar.ascx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite.Controls {
+
+
+ public partial class SideBar {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed-dev.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed-dev.xml
new file mode 100644
index 00000000..e3157eb1
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed-dev.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ Express setup for standalone server configuration. It installs all components on the same server and configures WebsitePanel using recommended settings.
+
+
+
+ 101
+ ~/Files/WebsitePanel-StandaloneServerSetup-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer10
+
+
+
+
+
+
+
+ WebsitePanel Portal is a user interface to the control panel which allows managing user accounts, hosting spaces, web sites, FTP accounts, files, etc.
+
+
+ 201
+ ~/Files/WebsitePanel-Portal-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.Portal10
+
+
+
+
+
+
+
+ Enterprise Server is the core of WebsitePanel system. It includes all business logic of the application. Enterprise Server should have access to Server and be accessible from Portal applications.
+
+
+ 301
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.zip
+
+ setup\setup.dll
+ WerbsitePanel.Setup.EnterpriseServer10
+
+
+
+
+
+
+
+ WebsitePanel Server is a set of services running on the remote server to be controlled. Server application should be reachable from Enterprise Server one.
+
+
+ 401
+ ~/Files/WebsitePanel-Server-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.Server10
+
+
+
+
+
+
+
+ Installer Core Files
+
+
+ 501
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Beta.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Beta.xml
new file mode 100644
index 00000000..99a382c6
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Beta.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ Express setup for standalone server configuration. It installs all components on the same server and configures WebsitePanel using recommended settings.
+
+
+ 105
+ ~/Files/Beta/WebsitePanel-StandaloneServerSetup-1.1.1.1.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup111
+
+
+
+
+
+
+ WebsitePanel Portal is a user interface to the control panel which allows managing user accounts, hosting spaces, web sites, FTP accounts, files, etc.
+
+
+ 205
+ ~/Files/Beta/WebsitePanel-Portal-1.1.1.1.zip
+ ~/Files/Beta/WebsitePanel-Portal-1.1.1.1-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal111
+
+
+ 206
+ ~/Files/1.1.0/release/WebsitePanel-Portal-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-Portal-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal110
+
+
+
+
+
+
+ Enterprise Server is the core of WebsitePanel system. It includes all business logic of the application. Enterprise Server should have access to Server and be accessible from Portal applications.
+
+
+ 305
+ ~/Files/Beta/WebsitePanel-EnterpriseServer-1.1.1.1.zip
+ ~/Files/Beta/WebsitePanel-EnterpriseServer-1.1.1.1-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer111
+
+
+ 306
+ ~/Files/1.1.0/release/WebsitePanel-EnterpriseServer-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-EnterpriseServer-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer110
+
+
+
+
+
+
+ WebsitePanel Server is a set of services running on the remote server to be controlled. Server application should be reachable from Enterprise Server one.
+
+
+ 405
+ ~/Files/Beta/WebsitePanel-Server-1.1.1.1.zip
+ ~/Files/Beta/WebsitePanel-Server-1.1.1.1-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server111
+
+
+ 406
+ ~/Files/1.1.0/release/WebsitePanel-Server-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-Server-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server110
+
+
+
+
+
+
+ Installer Core Files
+
+
+
+ 501
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Staging.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Staging.xml
new file mode 100644
index 00000000..babe177c
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.Staging.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ Express setup for standalone server configuration. It installs all components on the same server and configures WebsitePanel using recommended settings.
+
+
+
+ 103
+ ~/Files/WebsitePanel-StandaloneServerSetup-1.1.0.9.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup102
+
+
+
+
+
+
+ WebsitePanel Portal is a user interface to the control panel which allows managing user accounts, hosting spaces, web sites, FTP accounts, files, etc.
+
+
+
+ 203
+ ~/Files/WebsitePanel-Portal-1.1.0.9.zip
+ ~/Files/WebsitePanel-Portal-1.1.0.9-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal102
+
+
+
+
+
+
+ Enterprise Server is the core of WebsitePanel system. It includes all business logic of the application. Enterprise Server should have access to Server and be accessible from Portal applications.
+
+
+
+ 303
+ ~/Files/WebsitePanel-EnterpriseServer-1.1.0.9.zip
+ ~/Files/WebsitePanel-EnterpriseServer-1.1.0.9-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer102
+
+
+
+
+
+
+ WebsitePanel Server is a set of services running on the remote server to be controlled. Server application should be reachable from Enterprise Server one.
+
+
+
+ 403
+ ~/Files/WebsitePanel-Server-1.1.0.9.zip
+ ~/Files/WebsitePanel-Server-1.1.0.9-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server102
+
+
+
+
+
+
+ Installer Core Files
+
+
+ 502
+
+ ~/Files/1.1.0/release/WebsitePanel-Installer-1.1.0-Update.zip
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.xml
new file mode 100644
index 00000000..6c22b6d0
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Data/ProductReleasesFeed.xml
@@ -0,0 +1,164 @@
+
+
+
+
+ Express setup for standalone server configuration. It installs all components on the same server and configures WebsitePanel using recommended settings.
+
+
+ 106
+ ~/Files/1.1.0/release/WebsitePanel-StandaloneServerSetup-1.1.0.10.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup110
+
+
+ 103
+ ~/Files/WebsitePanel-StandaloneServerSetup-1.0.2.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup102
+
+
+ 102
+ ~/Files/WebsitePanel-StandaloneServerSetup-1.0.1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup101
+
+
+ 101
+ ~/Files/WebsitePanel-StandaloneServerSetup-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.StandaloneServerSetup10
+
+
+
+
+
+
+ WebsitePanel Portal is a user interface to the control panel which allows managing user accounts, hosting spaces, web sites, FTP accounts, files, etc.
+
+
+ 206
+ ~/Files/1.1.0/release/WebsitePanel-Portal-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-Portal-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal110
+
+
+ 203
+ ~/Files/WebsitePanel-Portal-1.0.2.0.zip
+ ~/Files/WebsitePanel-Portal-1.0.2.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal102
+
+
+ 202
+ ~/Files/WebsitePanel-Portal-1.0.1.0.zip
+ ~/Files/WebsitePanel-Portal-1.0.1.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Portal101
+
+
+ 201
+ ~/Files/WebsitePanel-Portal-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.Portal10
+
+
+
+
+
+
+ Enterprise Server is the core of WebsitePanel system. It includes all business logic of the application. Enterprise Server should have access to Server and be accessible from Portal applications.
+
+
+ 306
+ ~/Files/1.1.0/release/WebsitePanel-EnterpriseServer-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-EnterpriseServer-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer110
+
+
+ 303
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.2.0.zip
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.2.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer102
+
+
+ 302
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.1.0.zip
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.1.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer101
+
+
+ 301
+ ~/Files/WebsitePanel-EnterpriseServer-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.EnterpriseServer10
+
+
+
+
+
+
+ WebsitePanel Server is a set of services running on the remote server to be controlled. Server application should be reachable from Enterprise Server one.
+
+
+ 406
+ ~/Files/1.1.0/release/WebsitePanel-Server-1.1.0.10.zip
+ ~/Files/1.1.0/release/WebsitePanel-Server-1.1.0.10-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server110
+
+
+ 403
+ ~/Files/WebsitePanel-Server-1.0.2.0.zip
+ ~/Files/WebsitePanel-Server-1.0.2.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server102
+
+
+ 402
+ ~/Files/WebsitePanel-Server-1.0.1.0.zip
+ ~/Files/WebsitePanel-Server-1.0.1.0-Update.zip
+ setup\setup.dll
+ WebsitePanel.Setup.Server101
+
+
+ 401
+ ~/Files/WebsitePanel-Server-1.0.zip
+
+ setup\setup.dll
+ WebsitePanel.Setup.Server10
+
+
+
+
+
+
+ Installer Core Files
+
+
+ 502
+
+ ~/Files/1.1.0/release/WebsitePanel-Installer-1.1.0-Update.zip
+
+
+
+
+ 501
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx
new file mode 100644
index 00000000..ac230d88
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx
@@ -0,0 +1,39 @@
+<%@ Page Title="WebsitePanel - The control panel for Windows hosting" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebsitePanel.WebSite.Default" %>
+
+
+
+
+ Welcome to WebsitePanel project
+
+
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers,
+ it has a robust, scalable and secure architecture.
+
+
+
+
+ With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+
+
+ WebsitePanel highlights:
+
+ It's an open source project under BSD license
+ Built exclusively for Windows platform
+ True multi-server architecture
+ Huge list of 3rd party software
+ Tight integration with Microsoft Web App Gallery
+ Easy to install and use
+ Great community support
+ Supported by Microsoft
+
+
+ WebsitePanel is an ideal solution for:
+
+ Developers managing their own or customer servers and web sites.
+ Providers offering Windows hosting services.
+ Individuals managing their dedicated or virtual Windows servers.
+
+
+ Download WebsitePanel and take the most from your Windows server!
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.cs
new file mode 100644
index 00000000..3302197b
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class Default : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.designer.cs
new file mode 100644
index 00000000..1ebd86ed
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Default.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class Default {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx
new file mode 100644
index 00000000..0a1e22fa
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx
@@ -0,0 +1,14 @@
+<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Documentation.aspx.cs" Inherits="WebsitePanel.WebSite.Documentation" %>
+
+
+
+ Documentation
+
+ Essential Guides
+ User the following guide to install and configure WebsitePanel. It's primarily for users installing WebsitePanel in a standalone mode:
+ WebsitePanel Installation Guide (~3 MB)
+
+ Modules
+ WebsitePanel Exchange 2010 SP1 Hosting Mode Module Guide (~300 KB)
+ Guidance for migration to Exchange 2010 SP1 Hosting Mode (~770 KB)
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.cs
new file mode 100644
index 00000000..903f7d5e
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class Documentation : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.designer.cs
new file mode 100644
index 00000000..ab5ac4aa
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Documentation.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class Documentation {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx
new file mode 100644
index 00000000..1c41b23d
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx
@@ -0,0 +1,28 @@
+<%@ Page Title="WebsitePanel - Downloads" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Downloads.aspx.cs" Inherits="WebsitePanel.WebSite.Downloads" %>
+
+
+
+ Downloads
+
+ WebsitePanel Installer
+
+ WebsitePanel Installer is used for initial installation of WebsitePanel components and for their further upgrades.
+ WebsitePanel Installer does not include WebsitePanel distributives - they will
+ be downloaded during the installation or upgrade process. Use link below to
+ download the installer:
+ WebsitePanel Installer (~1 MB)
+
+ Tools
+
+ WebsitePanel Localization Toolkit helps users to build multi-lingual WebsitePanel Portal sites:
+ WebsitePanel Localization Toolkit 1.0 (~1 MB)
+
+ Language Packs
+ Danish Language Pack for WebsitePanel 1.0.1 (Original author: Jeppe Richardt; updated for WebsitePanel by Klaus E. Frederiksen)
+
+ German Language Pack for WebsitePanel 1.0.2 (Author: Mike Schwarz)
+
+ Templates
+ Mail templates for WebsitePanel
+
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.cs
new file mode 100644
index 00000000..663ff58e
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class Downloads : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.designer.cs
new file mode 100644
index 00000000..3633f372
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Downloads.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class Downloads {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Error.htm b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Error.htm
new file mode 100644
index 00000000..3e806714
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Error.htm
@@ -0,0 +1,18 @@
+
+
+
+ WebsitePanel Error
+
+
+
+
+ Error
+
+ Sorry, an error occurred while processing your request. Please try again later.
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx
new file mode 100644
index 00000000..c24eaf8f
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx
@@ -0,0 +1,23 @@
+<%@ Page Title="WebsitePanel - License" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="License.aspx.cs" Inherits="WebsitePanel.WebSite.License" %>
+
+
+
+
+Project License
+
+Copyright (c) 2010, SMB SAAS 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.
+
+ Neither the name of the SMB SAAS Systems Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+
+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.
+
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.cs
new file mode 100644
index 00000000..62d8bafb
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class License : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.designer.cs
new file mode 100644
index 00000000..106aba95
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/License.aspx.designer.cs
@@ -0,0 +1,16 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.4927
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class License {
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Properties/AssemblyInfo.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..ec4d606d
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("WebsitePanel.WebSite")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("SMB SAAS Systems Inc.")]
+[assembly: AssemblyProduct("WebsitePanel Web Site")]
+[assembly: AssemblyCopyright("Copyright © 2010 SMB SAAS Systems Inc.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3d5900ae-111a-45be-96b3-d9e4606ca793")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx
new file mode 100644
index 00000000..717cb789
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="C#" CodeBehind="InstallerService-Beta.asmx.cs" Class="WebsitePanel.WebSite.Services.InstallerService_Beta" %>
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx.cs
new file mode 100644
index 00000000..6c3fc995
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Beta.asmx.cs
@@ -0,0 +1,53 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Services;
+using System.Data;
+
+namespace WebsitePanel.WebSite.Services
+{
+ ///
+ /// Summary description for InstallerService_Beta
+ ///
+ [WebService(Namespace = "http://websitepanel.net/services")]
+ [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
+ [System.ComponentModel.ToolboxItem(false)]
+ // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
+ // [System.Web.Script.Services.ScriptService]
+ public class InstallerService_Beta : InstallerServiceBase
+ {
+ public InstallerService_Beta()
+ {
+ RELEASES_FEED_PATH = "~/Data/ProductReleasesFeed.Beta.xml";
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx
new file mode 100644
index 00000000..92b4beab
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="C#" CodeBehind="InstallerService-Staging.asmx.cs" Class="WebsitePanel.WebSite.Services.InstallerService_Staging" %>
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx.cs
new file mode 100644
index 00000000..a5bb35b1
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService-Staging.asmx.cs
@@ -0,0 +1,53 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Services;
+using System.Data;
+
+namespace WebsitePanel.WebSite.Services
+{
+ ///
+ /// Summary description for InstallerService_Beta
+ ///
+ [WebService(Namespace = "http://websitepanel.net/services")]
+ [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
+ [System.ComponentModel.ToolboxItem(false)]
+ // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
+ // [System.Web.Script.Services.ScriptService]
+ public class InstallerService_Staging : InstallerServiceBase
+ {
+ public InstallerService_Staging()
+ {
+ RELEASES_FEED_PATH = "~/Data/ProductReleasesFeed.Staging.xml";
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx
new file mode 100644
index 00000000..2f37510d
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="C#" CodeBehind="InstallerService.asmx.cs" Class="WebsitePanel.WebSite.Services.InstallerService" %>
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx.cs
new file mode 100644
index 00000000..9ef8e693
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerService.asmx.cs
@@ -0,0 +1,53 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Services;
+using System.Data;
+
+namespace WebsitePanel.WebSite.Services
+{
+ ///
+ /// Summary description for InstallerService
+ ///
+ [WebService(Namespace = "http://websitepanel.net/services")]
+ [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
+ [System.ComponentModel.ToolboxItem(false)]
+ // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
+ // [System.Web.Script.Services.ScriptService]
+ public class InstallerService : InstallerServiceBase
+ {
+ public InstallerService()
+ {
+ RELEASES_FEED_PATH = "~/Data/ProductReleasesFeed.xml";
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerServiceBase.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerServiceBase.cs
new file mode 100644
index 00000000..442aaf8a
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Services/InstallerServiceBase.cs
@@ -0,0 +1,315 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.IO;
+using System.Web.Services;
+using System.Data;
+using System.Xml.Linq;
+using System.Diagnostics;
+
+namespace WebsitePanel.WebSite.Services
+{
+ public class InstallerServiceBase
+ {
+ protected string RELEASES_FEED_PATH = "~/Data/ProductReleasesFeed.xml";
+
+ #region WebMethods
+
+ [WebMethod]
+ public DataSet GetReleaseFileInfo(string componentCode, string version)
+ {
+ // get XML doc
+ XDocument xml = GetReleasesFeed();
+
+ // get current release
+ var release = (from r in xml.Descendants("release")
+ where r.Parent.Parent.Attribute("code").Value == componentCode
+ && r.Attribute("version").Value == version
+ select r).FirstOrDefault();
+
+ if (release == null)
+ return null; // requested release was not found
+
+ DataSet ds = new DataSet();
+ DataTable dt = ds.Tables.Add();
+ dt.Columns.Add("ReleaseFileID", typeof(int));
+ dt.Columns.Add("FullFilePath", typeof(string));
+ dt.Columns.Add("UpgradeFilePath", typeof(string));
+ dt.Columns.Add("InstallerPath", typeof(string));
+ dt.Columns.Add("InstallerType", typeof(string));
+
+ dt.Rows.Add(
+ Int32.Parse(release.Element("releaseFileID").Value),
+ release.Element("fullFilePath").Value,
+ release.Element("upgradeFilePath").Value,
+ release.Element("installerPath").Value,
+ release.Element("installerType").Value);
+
+ ds.AcceptChanges(); // save
+ return ds;
+ }
+
+ [WebMethod]
+ public byte[] GetFileChunk(string fileName, int offset, int size)
+ {
+ string path = HttpContext.Current.Server.MapPath(fileName);
+ return GetFileBinaryContent(path, offset, size);
+ }
+
+ [WebMethod]
+ public long GetFileSize(string fileName)
+ {
+ string path = HttpContext.Current.Server.MapPath(fileName);
+ long ret = 0;
+ if (File.Exists(path))
+ {
+ FileInfo fi = new FileInfo(path);
+ ret = fi.Length;
+ }
+ return ret;
+ }
+
+ [WebMethod]
+ public DataSet GetAvailableComponents()
+ {
+ return GetAvailableComponents(false);
+ }
+
+ [WebMethod]
+ public DataSet GetLatestComponentUpdate(string componentCode)
+ {
+ return GetLatestComponentUpdate(componentCode, false);
+ }
+
+ [WebMethod]
+ public DataSet GetComponentUpdate(string componentCode, string release)
+ {
+ return GetComponentUpdate(componentCode, release, false);
+ }
+
+ #endregion
+
+ public DataSet GetLatestComponentUpdate(string componentCode, bool includeBeta)
+ {
+ // get XML doc
+ XDocument xml = GetReleasesFeed();
+
+ // get all active component releases
+ var releases = from release in xml.Descendants("release")
+ where release.Parent.Parent.Attribute("code").Value == componentCode
+ && release.Element("upgradeFilePath") != null
+ && release.Element("upgradeFilePath").Value != ""
+ // This line has been commented because the function is used only by WebsitePanel Installer
+ // itself. However, it may cause an incovenience if used inappropriately.
+ // The Installer's releases are hidden (not available) and should not be displayed in the list of available components.
+ //&& Boolean.Parse(release.Attribute("available").Value)
+ && (includeBeta || !includeBeta && !Boolean.Parse(release.Attribute("beta").Value))
+ select release;
+
+ DataSet ds = new DataSet();
+ DataTable dt = ds.Tables.Add();
+ dt.Columns.Add("ReleaseFileID", typeof(int));
+ dt.Columns.Add("Version", typeof(string));
+ dt.Columns.Add("Beta", typeof(bool));
+ dt.Columns.Add("FullFilePath", typeof(string));
+ dt.Columns.Add("UpgradeFilePath", typeof(string));
+ dt.Columns.Add("InstallerPath", typeof(string));
+ dt.Columns.Add("InstallerType", typeof(string));
+ //
+ var r = releases.FirstOrDefault();
+ //
+ if (r != null)
+ {
+ dt.Rows.Add(
+ Int32.Parse(r.Element("releaseFileID").Value),
+ r.Attribute("version").Value,
+ Boolean.Parse(r.Attribute("beta").Value),
+ r.Element("fullFilePath").Value,
+ r.Element("upgradeFilePath").Value,
+ r.Element("installerPath").Value,
+ r.Element("installerType").Value);
+ }
+
+ ds.AcceptChanges(); // save
+ return ds;
+ }
+
+ public DataSet GetAvailableComponents(bool includeBeta)
+ {
+ XDocument xml = GetReleasesFeed();
+
+ // select all available components
+ var components = from component in xml.Descendants("component")
+ select component;
+
+ // build dataset structure
+ DataSet ds = new DataSet();
+ DataTable dt = ds.Tables.Add();
+ dt.Columns.Add("ReleaseFileID", typeof(int));
+ dt.Columns.Add("ApplicationName", typeof(string));
+ dt.Columns.Add("Component", typeof(string));
+ dt.Columns.Add("Version", typeof(string));
+ dt.Columns.Add("Beta", typeof(bool));
+ dt.Columns.Add("ComponentDescription", typeof(string));
+ dt.Columns.Add("ComponentCode", typeof(string));
+ dt.Columns.Add("ComponentName", typeof(string));
+ dt.Columns.Add("FullFilePath", typeof(string));
+ dt.Columns.Add("InstallerPath", typeof(string));
+ dt.Columns.Add("InstallerType", typeof(string));
+
+ // check each component for the latest available release
+ foreach (var component in components)
+ {
+ var releases = from r in component.Descendants("release")
+ where Boolean.Parse(r.Attribute("available").Value)
+ && (includeBeta || !includeBeta && !Boolean.Parse(r.Attribute("beta").Value))
+ select r;
+
+ var release = releases.FirstOrDefault();
+ if (release == null)
+ continue; // component does not have active releases
+
+ // add line to data set
+ dt.Rows.Add(
+ Int32.Parse(release.Element("releaseFileID").Value),
+ component.Attribute("application").Value,
+ component.Attribute("application").Value + " " + component.Attribute("name").Value,
+ release.Attribute("version").Value,
+ Boolean.Parse(release.Attribute("beta").Value),
+ component.Element("description").Value,
+ component.Attribute("code").Value,
+ component.Attribute("name").Value,
+ release.Element("fullFilePath").Value,
+ release.Element("installerPath").Value,
+ release.Element("installerType").Value);
+ }
+
+ ds.AcceptChanges(); // save
+ return ds;
+ }
+
+ public DataSet GetComponentUpdate(string componentCode, string release, bool includeBeta)
+ {
+ // get XML doc
+ XDocument xml = GetReleasesFeed();
+
+ // get current release
+ var currentRelease = (from r in xml.Descendants("release")
+ where r.Parent.Parent.Attribute("code").Value == componentCode
+ && r.Attribute("version").Value == release
+ select r).FirstOrDefault();
+
+ if(currentRelease == null)
+ return null; // requested release was not found
+
+ // get next available update
+ var update = (from r in currentRelease.Parent.Descendants("release")
+ where r.IsBefore(currentRelease)
+ && r.Element("upgradeFilePath") != null
+ && r.Element("upgradeFilePath").Value != ""
+ && Boolean.Parse(r.Attribute("available").Value)
+ && (includeBeta || !includeBeta && !Boolean.Parse(r.Attribute("beta").Value))
+ select r).LastOrDefault();
+
+ DataSet ds = new DataSet();
+ DataTable dt = ds.Tables.Add();
+ dt.Columns.Add("ReleaseFileID", typeof(int));
+ dt.Columns.Add("Version", typeof(string));
+ dt.Columns.Add("Beta", typeof(bool));
+ dt.Columns.Add("FullFilePath", typeof(string));
+ dt.Columns.Add("UpgradeFilePath", typeof(string));
+ dt.Columns.Add("InstallerPath", typeof(string));
+ dt.Columns.Add("InstallerType", typeof(string));
+
+ if (update != null)
+ {
+ dt.Rows.Add(
+ Int32.Parse(update.Element("releaseFileID").Value),
+ update.Attribute("version").Value,
+ Boolean.Parse(update.Attribute("beta").Value),
+ update.Element("fullFilePath").Value,
+ update.Element("upgradeFilePath").Value,
+ update.Element("installerPath").Value,
+ update.Element("installerType").Value);
+ }
+
+ ds.AcceptChanges(); // save
+ return ds;
+ }
+
+ private byte[] GetFileBinaryContent(string path)
+ {
+ if (!File.Exists(path))
+ return null;
+
+ FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
+ if (stream == null)
+ return null;
+
+ long length = stream.Length;
+ byte[] content = new byte[length];
+ stream.Read(content, 0, (int)length);
+ stream.Close();
+ return content;
+ }
+
+ private byte[] GetFileBinaryContent(string path, int offset, int size)
+ {
+ if (!File.Exists(path))
+ return null;
+
+ FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
+ if (stream == null)
+ return null;
+
+ long length = stream.Length;
+ int count = size;
+ if (offset + size - length > 0)
+ {
+ count = (int)(length - offset);
+ }
+ byte[] content = new byte[count];
+ if (count > 0)
+ {
+ stream.Seek(offset, SeekOrigin.Begin);
+ stream.Read(content, 0, count);
+ stream.Close();
+ }
+ return content;
+ }
+
+ private XDocument GetReleasesFeed()
+ {
+ return XDocument.Load(HttpContext.Current.Server.MapPath(RELEASES_FEED_PATH));
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master
new file mode 100644
index 00000000..cd28f360
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master
@@ -0,0 +1,51 @@
+<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebsitePanel.WebSite.Site" %>
+<%@ Register src="Controls/SideBar.ascx" tagname="SideBar" tagprefix="wsp" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.cs
new file mode 100644
index 00000000..0748d616
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class Site : System.Web.UI.MasterPage
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.designer.cs
new file mode 100644
index 00000000..285c1991
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Site.Master.designer.cs
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.4927
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class Site {
+
+ ///
+ /// head control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.ContentPlaceHolder head;
+
+ ///
+ /// AspForm control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm AspForm;
+
+ ///
+ /// SideBarContent control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::WebsitePanel.WebSite.Controls.SideBar SideBarContent;
+
+ ///
+ /// ContentColumn control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentColumn;
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Web.config b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Web.config
new file mode 100644
index 00000000..0b6886f0
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/Web.config
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/2.0/WebsitePanelFeed.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/2.0/WebsitePanelFeed.xml
new file mode 100644
index 00000000..35b25f04
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/2.0/WebsitePanelFeed.xml
@@ -0,0 +1,286 @@
+
+
+
+ 1.0.1
+ 2011-01-12T15:09:00Z
+ WebsitePanel 1.1.0
+
+
+ SMB SAAS Systems
+ http://www.websitepanel.net
+
+ http://www.websitepanel.net/WebPI/2.0/WebsitePanelFeed.xml
+
+
+ WebsitePanel
+ WebsitePanel 1.1.0
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ Control Panels
+
+ 1.1.0
+
+ http://www.websitepanel.net/content/images/wsp_screenshot.png
+
+
+ SMB SAAS Systems
+ http://www.websitepanel.net/Contact-Us
+
+ 2010-12-30T17:40:00Z
+
+
+
+
+
+ %ProgramFiles%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+ %ProgramFiles(x86)%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+
+
+
+
+ NETFramework20SP1
+
+
+ ASPNET
+
+
+ SQLExpress
+
+
+
+
+
+
+
+ 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.
+ http://www.websitepanel.net/License
+ Terms of Use
+
+
+
+
+
+ 1
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ 1059
+ http://www.websitepanel.net/Files/1.1.0/release/WebsitePanelInstaller11.msi
+ 0F6EAFE073590A9BFC190C72113B4B73A3A375F7
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+
+
+
+ 2
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ 1059
+ http://www.websitepanel.net/Files/1.1.0/release/WebsitePanelInstaller11.msi
+ 0F6EAFE073590A9BFC190C72113B4B73A3A375F7
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles(x86)%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SampleTab
+ My Server Tools
+
+
+ BusinessAutomation
+ Business Automation
+ Install sample product
+ MyServerToolsFamilyGrouping
+
+ WebsitePanel
+
+
+
+
+
+
+
+
+ MyServerToolsFamilyGrouping
+
+ productFamily
+
+ - Control Panels
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/3.0/WebsitePanelFeed.xml b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/3.0/WebsitePanelFeed.xml
new file mode 100644
index 00000000..c971c190
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebPI/3.0/WebsitePanelFeed.xml
@@ -0,0 +1,268 @@
+
+
+
+ 1.0.1
+ 2011-01-12T15:09:00Z
+ WebsitePanel 1.1.0
+
+
+ SMB SAAS Systems
+ http://www.websitepanel.net
+
+ http://www.websitepanel.net/WebPI/3.0/WebsitePanelFeed.xml
+
+
+ WebsitePanel
+ WebsitePanel 1.1.0
+ 1.1.0
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ http://www.websitepanel.net/web/webpi/wsp
+ 2010-12-30T17:40:00Z
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ 2010-12-30T17:40:00Z
+
+
+ http://www.websitepanel.net/content/images/wsp_screenshot.png
+
+
+ SMB SAAS Systems
+ http://www.websitepanel.net/Contact-Us
+
+
+
+ Server
+ ProductSpotlight
+
+
+
+
+
+
+ %ProgramFiles%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+ %ProgramFiles(x86)%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+
+
+
+
+
+
+ NETFramework20SP1
+
+
+ ASPNET
+
+
+ SQLExpress
+
+
+
+
+
+
+
+ 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.
+ http://www.websitepanel.net/License
+ Terms of Use
+
+
+
+
+
+ 1
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ 1059
+ http://www.websitepanel.net/Files/1.1.0/release/WebsitePanelInstaller11.msi
+ 0F6EAFE073590A9BFC190C72113B4B73A3A375F7
+
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+ http://social.msdn.microsoft.com/Forums/en-US/category/websitepanel
+
+
+
+ 2
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ 1059
+ http://www.websitepanel.net/Files/1.1.0/release/WebsitePanelInstaller11.msi
+
+ 0F6EAFE073590A9BFC190C72113B4B73A3A375F7
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles(x86)%\SMB SAAS Systems\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+ http://social.msdn.microsoft.com/Forums/en-US/category/websitepanel
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebsitePanel.WebSite.csproj b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebsitePanel.WebSite.csproj
new file mode 100644
index 00000000..53a912de
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WebsitePanel.WebSite.csproj
@@ -0,0 +1,202 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {168FBFB5-D770-43DE-82F0-089D0F1FD4D6}
+ {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ WebsitePanel.WebSite
+ WebsitePanel.WebSite
+ v3.5
+
+
+ 3.5
+
+
+
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+ none
+ true
+ bin\
+ TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+
+
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+ ContactUs.aspx
+ ASPXCodeBehind
+
+
+ ContactUs.aspx
+
+
+ SideBar.ascx
+ ASPXCodeBehind
+
+
+ SideBar.ascx
+
+
+ Default.aspx
+ ASPXCodeBehind
+
+
+ Default.aspx
+
+
+ Documentation.aspx
+ ASPXCodeBehind
+
+
+ Documentation.aspx
+
+
+ Downloads.aspx
+ ASPXCodeBehind
+
+
+ Downloads.aspx
+
+
+ License.aspx
+ ASPXCodeBehind
+
+
+ License.aspx
+
+
+
+ InstallerService-Staging.asmx
+
+
+ InstallerService-Beta.asmx
+
+
+ InstallerService.asmx
+
+
+
+ Site.Master
+ ASPXCodeBehind
+
+
+ Site.Master
+
+
+ WorksWith.aspx
+ ASPXCodeBehind
+
+
+ WorksWith.aspx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ True
+ 55696
+ /
+
+
+ False
+ False
+
+
+ False
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx
new file mode 100644
index 00000000..9fff2c1f
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx
@@ -0,0 +1,86 @@
+<%@ Page Title="WebsitePanel - 3rd Party Software" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WorksWith.aspx.cs" Inherits="WebsitePanel.WebSite.WorksWith" %>
+
+
+
+ 3rd Party Software
+ WebsitePanel works with a huge list of 3rd party products. Please note that support for the software systems managed by WebsitePanel is provided by the publisher or manufacturer of those software systems. For example support for SmarterMail is provided by SmarterTools. Likewise support for Microsoft products such as IIS is provided by Microsoft support under the standard product support channels.
+
+ Operating Systems
+
+ Windows Server 2008 R2 any edition, 64 bits
+ Windows Server 2008 any edition, 32 and 64 bits
+ Windows Server 2003 R2 any edition, 32 and 64 bits
+ Windows Server 2003 any edition, 32 and 64 bits
+
+
+ Web Servers
+
+ IIS 7.5
+ IIS 7.0
+ IIS 6.0
+ ColdFusion 7/8/9
+
+
+ FTP Servers
+
+ MS FTP 7.5
+ MS FTP 7.0
+ MS FTP 6.0
+ Gene6 FTP Server
+ Serv-U FTP Server 6.x
+ FileZilla FTP Server
+
+
+ Mail Servers
+
+ SmarterMail 2.x - 7.x
+ MailEnable 2.x - 4.x
+ Merak Mail Server 8.x - 10.x
+ MDaemon 9.x - 10.x
+ hMailServer 4.x
+ ArgoMail Server 1.x
+ Ability Mail Server 2.x
+
+
+ Database Engines
+
+ Microsoft SQL Server 2008 R2 of any edition
+ Microsoft SQL Server 2000/2005/2008 of any edition
+ Microsoft SQL Server 7.0 of any edition
+ MySQL Server of 4.0.x, 4.1.x and 5.x versions
+ Microsoft Access 2000
+
+
+ DNS Servers
+
+ Microsoft DNS Server (bundled with Windows Server)
+ Simple DNS Plus 4.x-5.x
+ ISC BIND DNS Server
+ Nettica DNS Service
+
+
+ Statistics Servers
+
+ SmarterStats 3.x - 6.x
+ AWStats Statistics (free software)
+
+
+ Collaboration
+
+ Microsoft Exchange Server 2010 SP1 installed with /hosting switch
+ Microsoft Exchange Server 2007 and 2010
+ Please refer to this post for support status update on Exchange 2007 and 2010.
+ BlackBerry Enterprise Server
+ Windows SharePoint Services 3.0
+ SharePoint Foundation 2010
+ Office Communication Server 2007
+ Microsoft Dynamics CRM 4.0
+
+
+ Virtualization
+
+
+
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.cs
new file mode 100644
index 00000000..1351dbfc
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.cs
@@ -0,0 +1,45 @@
+/* Copyright (c) 2011, SMB SAAS 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.
+
+- Neither the name of the SMB SAAS Systems Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace WebsitePanel.WebSite
+{
+ public partial class WorksWith : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.designer.cs b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.designer.cs
new file mode 100644
index 00000000..252dbc73
--- /dev/null
+++ b/WebsitePanel.WebSite/Sources/WebsitePanel.WebSite/WorksWith.aspx.designer.cs
@@ -0,0 +1,15 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.WebSite {
+
+
+ public partial class WorksWith {
+ }
+}
diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index 1aab0f99..a9f7a9e1 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -12,3 +12,30 @@ BEGIN
END
GO
+-- registering MySQL 5.5 provider
+IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'MySQL Server 5.5')
+BEGIN
+ -- provider
+ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (301, 11, N'MySQL', N'MySQL Server 5.5', N'WebsitePanel.Providers.Database.MySqlServer55, WebsitePanel.Providers.Database.MySQL', N'MySQL', NULL)
+ -- properties
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (301, N'ExternalAddress', N'localhost')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (301, N'InstallFolder', N'%PROGRAMFILES%\MySQL\MySQL Server 5.5')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (301, N'InternalAddress', N'localhost,3306')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (301, N'RootLogin', N'root')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (301, N'RootPassword', N'')
+END
+GO
+
+-- registering SmarterMail 9.x provider
+IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterMail 9.x')
+BEGIN
+ -- provider
+ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (65, 4, N'SmarterMail', N'SmarterMail 9.x', N'WebsitePanel.Providers.Mail.SmarterMail9, WebsitePanel.Providers.Mail.SmarterMail9', N'SmarterMail60', NULL)
+ -- properties
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (65, N'AdminPassword', N'')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (65, N'AdminUsername', N'admin')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (65, N'DomainsPath', N'%SYSTEMDRIVE%\SmarterMail')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (65, N'ServerIPAddress', N'127.0.0.1;127.0.0.1')
+ INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (65, N'ServiceUrl', N'http://localhost:9998/services/')
+END
+GO
\ No newline at end of file
diff --git a/WebsitePanel/Lib/AjaxControlToolkit.dll b/WebsitePanel/Lib/AjaxControlToolkit.dll
index e36dee57..abc098c4 100644
Binary files a/WebsitePanel/Lib/AjaxControlToolkit.dll and b/WebsitePanel/Lib/AjaxControlToolkit.dll differ
diff --git a/WebsitePanel/Lib/References/SimpleDNS/SDNSAPI.dll b/WebsitePanel/Lib/References/SimpleDNS/SDNSAPI.dll
new file mode 100644
index 00000000..26ddc0ae
Binary files /dev/null and b/WebsitePanel/Lib/References/SimpleDNS/SDNSAPI.dll differ
diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs
index daaec7f4..6b205aaa 100644
--- a/WebsitePanel/Sources/VersionInfo.cs
+++ b/WebsitePanel/Sources/VersionInfo.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.235
+// Runtime Version:4.0.30319.239
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -15,8 +15,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Outercurve Foundation")]
[assembly: AssemblyCopyright("Copyright © 2011 Outercurve Foundation.")]
-[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.2.0.38")]
-[assembly: AssemblyInformationalVersion("1.2.0")]
+[assembly: AssemblyVersion("1.2.1.0")]
+[assembly: AssemblyFileVersion("1.2.1.0")]
+[assembly: AssemblyInformationalVersion("1.2.1")]
diff --git a/WebsitePanel/Sources/VersionInfo.vb b/WebsitePanel/Sources/VersionInfo.vb
index 4060692e..2b17d8a4 100644
--- a/WebsitePanel/Sources/VersionInfo.vb
+++ b/WebsitePanel/Sources/VersionInfo.vb
@@ -1,7 +1,7 @@
'------------------------------------------------------------------------------
'
' This code was generated by a tool.
-' Runtime Version:4.0.30319.235
+' Runtime Version:4.0.30319.239
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
@@ -17,7 +17,7 @@ Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
+ Assembly: AssemblyVersion("1.2.1.0"), _
+ Assembly: AssemblyFileVersion("1.2.1.0"), _
+ Assembly: AssemblyInformationalVersion("1.2.1")>
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln
index f49e563a..fb708ef8 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln
@@ -29,8 +29,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Products.Hosti
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Products.HostingPlan", "WebsitePanel.Products.HostingPlan\WebsitePanel.Products.HostingPlan.csproj", "{65FEDD1B-379C-413D-84D8-20E6C29C645D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Plugins.Directi", "WebsitePanel.Registrars.Directi\WebsitePanel.Plugins.Directi.csproj", "{823D6FA5-F84F-4E50-9091-040C256955A5}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Plugins.Enom", "WebsitePanel.Registrars.Enom\WebsitePanel.Plugins.Enom.csproj", "{39A6F585-4A27-4AAA-A43F-858FC32ADF98}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Common.Utils", "WebsitePanel.Common.Utils\WebsitePanel.Common.Utils.csproj", "{53D22D35-4013-415F-BA09-F67A0DBBB0C1}"
@@ -81,10 +79,6 @@ Global
{338F816B-BEB4-4F18-9EA1-2EFD35DBA65B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65FEDD1B-379C-413D-84D8-20E6C29C645D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65FEDD1B-379C-413D-84D8-20E6C29C645D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {823D6FA5-F84F-4E50-9091-040C256955A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {823D6FA5-F84F-4E50-9091-040C256955A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {823D6FA5-F84F-4E50-9091-040C256955A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {823D6FA5-F84F-4E50-9091-040C256955A5}.Release|Any CPU.Build.0 = Release|Any CPU
{39A6F585-4A27-4AAA-A43F-858FC32ADF98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39A6F585-4A27-4AAA-A43F-858FC32ADF98}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39A6F585-4A27-4AAA-A43F-858FC32ADF98}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config
index ba8e3e88..3af7ac75 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config
@@ -5,11 +5,11 @@
-
+
-
+
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs
index 50d9eea9..3560648f 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs
@@ -47,7 +47,6 @@ namespace WebsitePanel.Providers.Web
private string siteId;
private string siteIPAddress;
private int siteIPAddressId;
- private string logsPath;
private string dataPath;
private ServerBinding[] bindings;
private bool frontPageAvailable;
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
index 0ad1b2b1..df882803 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
@@ -17,7 +17,7 @@
3.5
- v4.0
+ v3.5
publish\
true
Disk
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/WebsitePanel.Providers.DNS.SimpleDNS50.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/WebsitePanel.Providers.DNS.SimpleDNS50.csproj
index 7a329d37..8466a88d 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/WebsitePanel.Providers.DNS.SimpleDNS50.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/WebsitePanel.Providers.DNS.SimpleDNS50.csproj
@@ -56,7 +56,7 @@
- ..\..\..\..\..\WebsitePanel.bak\WebsitePanel\Branches\1.2.0\Lib\References\SimpleDNS\SDNSAPI.dll
+ ..\..\Lib\References\SimpleDNS\SDNSAPI.dll
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/MySqlServer55.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/MySqlServer55.cs
index 13599499..277cb676 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/MySqlServer55.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/MySqlServer55.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2010, SMB SAAS Systems Inc.
+// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@@ -11,7 +11,7 @@
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
-// - Neither the name of the SMB SAAS Systems Inc. nor the names of its
+// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.ExchangeHostedEdition/WebsitePanel.Providers.ExchangeHostedEdition.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.ExchangeHostedEdition/WebsitePanel.Providers.ExchangeHostedEdition.csproj
index b769f2bc..61fe1489 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.ExchangeHostedEdition/WebsitePanel.Providers.ExchangeHostedEdition.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.ExchangeHostedEdition/WebsitePanel.Providers.ExchangeHostedEdition.csproj
@@ -10,7 +10,7 @@
Properties
WebsitePanel.Providers.ExchangeHostedEdition
WebsitePanel.Providers.ExchangeHostedEdition
- v4.0
+ v3.5
512
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/WebsitePanel.Providers.HostedSolution.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/WebsitePanel.Providers.HostedSolution.csproj
index dbdd2a0d..7d5b2014 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/WebsitePanel.Providers.HostedSolution.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/WebsitePanel.Providers.HostedSolution.csproj
@@ -80,31 +80,31 @@
False
- ..\..\Bin\Microsoft.Exchange.Common.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Common.dll
False
- ..\..\Bin\Microsoft.Exchange.Data.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Data.dll
False
- ..\..\Bin\Microsoft.Exchange.Data.Directory.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Data.Directory.dll
False
- ..\..\Bin\Microsoft.Exchange.Data.Storage.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Data.Storage.dll
False
- ..\..\Bin\Microsoft.Exchange.Diagnostics.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Diagnostics.dll
False
- ..\..\Bin\Microsoft.Exchange.Extensibility.Internal.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Extensibility.Internal.dll
False
- ..\..\Bin\Microsoft.Exchange.Net.dll
+ ..\..\Lib\References\Microsoft\Microsoft.Exchange.Net.dll
..\..\Lib\References\Microsoft\Microsoft.SharePoint.dll
@@ -123,14 +123,6 @@
-
- False
- ..\..\..\bin\WebsitePanel.Providers.Base.dll
-
-
- False
- ..\..\..\bin\WebsitePanel.Server.Utils.dll
-
@@ -173,6 +165,16 @@
true
+
+
+ {684C932A-6C75-46AC-A327-F3689D89EB42}
+ WebsitePanel.Providers.Base
+
+
+ {E91E52F3-9555-4D00-B577-2B1DBDD87CA7}
+ WebsitePanel.Server.Utils
+
+
-
+
@@ -63,7 +63,7 @@
-
+
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
index 0dce2d8d..904a5b5b 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
@@ -16,7 +16,7 @@
3.5
- v4.0
+ v3.5
false
@@ -54,7 +54,6 @@
-
@@ -203,14 +202,6 @@
{684C932A-6C75-46AC-A327-F3689D89EB42}
WebsitePanel.Providers.Base
-
- {64BEEB10-7F9F-4860-B2FF-84CDA02766B3}
- WebsitePanel.Providers.VirtualizationForPC.HyperVForPC
-
-
- {9BE0317D-E42E-4FF6-9A87-8C801F046EA1}
- WebsitePanel.Providers.Web.IIs60
-
{E91E52F3-9555-4D00-B577-2B1DBDD87CA7}
WebsitePanel.Server.Utils
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css
index c6c00584..bc199205 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css
@@ -51,7 +51,7 @@
/* EDIT */
.EditContainer
{
- width: 720px;
+ width: 100%;
margin-left: auto;
margin-right: auto;
margin-top: 20px;
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs
index d9150ee9..48652477 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/Code/PortalUtils.cs
@@ -50,40 +50,40 @@ using WebsitePanel.WebPortal;
namespace WebsitePanel.Portal
{
- public class PortalUtils
- {
- public const string SharedResourcesFile = "SharedResources.ascx.resx";
+ public class PortalUtils
+ {
+ public const string SharedResourcesFile = "SharedResources.ascx.resx";
public const string CONFIG_FOLDER = "~/App_Data/";
- public const string SUPPORTED_THEMES_FILE = "SupportedThemes.config";
- public const string SUPPORTED_LOCALES_FILE = "SupportedLocales.config";
+ public const string SUPPORTED_THEMES_FILE = "SupportedThemes.config";
+ public const string SUPPORTED_LOCALES_FILE = "SupportedLocales.config";
public const string USER_ID_PARAM = "UserID";
public const string SPACE_ID_PARAM = "SpaceID";
public const string SEARCH_QUERY_PARAM = "Query";
- public static string CultureCookieName
- {
- get { return PortalConfiguration.SiteSettings["CultureCookieName"]; }
- }
+ public static string CultureCookieName
+ {
+ get { return PortalConfiguration.SiteSettings["CultureCookieName"]; }
+ }
- public static string ThemeCookieName
- {
- get { return PortalConfiguration.SiteSettings["ThemeCookieName"]; }
- }
+ public static string ThemeCookieName
+ {
+ get { return PortalConfiguration.SiteSettings["ThemeCookieName"]; }
+ }
- public static System.Globalization.CultureInfo CurrentCulture
- {
- get { return GetCurrentCulture(); }
- }
+ public static System.Globalization.CultureInfo CurrentCulture
+ {
+ get { return GetCurrentCulture(); }
+ }
- public static System.Globalization.CultureInfo CurrentUICulture
- {
- get { return GetCurrentCulture(); }
- }
+ public static System.Globalization.CultureInfo CurrentUICulture
+ {
+ get { return GetCurrentCulture(); }
+ }
- public static string CurrentTheme
- {
- get { return GetCurrentTheme(); }
- }
+ public static string CurrentTheme
+ {
+ get { return GetCurrentTheme(); }
+ }
internal static string GetCurrentTheme()
{
@@ -131,51 +131,51 @@ namespace WebsitePanel.Portal
return String.IsNullOrEmpty(theme) ? "Default" : theme;
}
- public static void SetCurrentTheme(string theme)
- {
- // theme
- if (!String.IsNullOrEmpty(theme))
- {
- HttpCookie cookieTheme = new HttpCookie(ThemeCookieName, theme);
- cookieTheme.Expires = DateTime.Now.AddMonths(2);
- HttpContext.Current.Response.Cookies.Add(cookieTheme);
- }
- }
+ public static void SetCurrentTheme(string theme)
+ {
+ // theme
+ if (!String.IsNullOrEmpty(theme))
+ {
+ HttpCookie cookieTheme = new HttpCookie(ThemeCookieName, theme);
+ cookieTheme.Expires = DateTime.Now.AddMonths(2);
+ HttpContext.Current.Response.Cookies.Add(cookieTheme);
+ }
+ }
- internal static System.Globalization.CultureInfo GetCurrentCulture()
- {
- System.Globalization.CultureInfo ci = (System.Globalization.CultureInfo)
- HttpContext.Current.Items[CultureCookieName];
+ internal static System.Globalization.CultureInfo GetCurrentCulture()
+ {
+ System.Globalization.CultureInfo ci = (System.Globalization.CultureInfo)
+ HttpContext.Current.Items[CultureCookieName];
- if (ci == null)
- {
- HttpCookie localeCrumb = HttpContext.Current.Request.Cookies[CultureCookieName];
- if (localeCrumb != null)
- {
- ci = System.Globalization.CultureInfo.CreateSpecificCulture(localeCrumb.Value);
+ if (ci == null)
+ {
+ HttpCookie localeCrumb = HttpContext.Current.Request.Cookies[CultureCookieName];
+ if (localeCrumb != null)
+ {
+ ci = System.Globalization.CultureInfo.CreateSpecificCulture(localeCrumb.Value);
- if (ci != null)
- {
- HttpContext.Current.Items[CultureCookieName] = ci;
- return ci;
- }
- }
- }
- else
- return ci;
+ if (ci != null)
+ {
+ HttpContext.Current.Items[CultureCookieName] = ci;
+ return ci;
+ }
+ }
+ }
+ else
+ return ci;
- return System.Threading.Thread.CurrentThread.CurrentCulture;
- }
+ return System.Threading.Thread.CurrentThread.CurrentCulture;
+ }
- public static string AdminEmail
- {
- get { return PortalConfiguration.SiteSettings["AdminEmail"]; }
- }
+ public static string AdminEmail
+ {
+ get { return PortalConfiguration.SiteSettings["AdminEmail"]; }
+ }
- public static string FromEmail
- {
- get { return PortalConfiguration.SiteSettings["FromEmail"]; }
- }
+ public static string FromEmail
+ {
+ get { return PortalConfiguration.SiteSettings["FromEmail"]; }
+ }
public static void SendMail(string from, string to, string bcc, string subject, string body)
{
@@ -214,87 +214,87 @@ namespace WebsitePanel.Portal
}
}
- public static void UserSignOut()
- {
- FormsAuthentication.SignOut();
+ public static void UserSignOut()
+ {
+ FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect(LoginRedirectUrl);
- }
+ }
- public static MenuItem GetSpaceMenuItem(string menuItemKey)
- {
- MenuItem item = new MenuItem();
- item.Value = menuItemKey;
+ public static MenuItem GetSpaceMenuItem(string menuItemKey)
+ {
+ MenuItem item = new MenuItem();
+ item.Value = menuItemKey;
- menuItemKey = String.Concat("Space", menuItemKey);
+ menuItemKey = String.Concat("Space", menuItemKey);
- PortalPage page = PortalConfiguration.Site.Pages[menuItemKey];
+ PortalPage page = PortalConfiguration.Site.Pages[menuItemKey];
- if (page != null)
+ if (page != null)
item.NavigateUrl = DefaultPage.GetPageUrl(menuItemKey);
- return item;
- }
+ return item;
+ }
- private static FormsAuthenticationTicket AuthTicket
- {
- get
- {
- FormsAuthenticationTicket authTicket = (FormsAuthenticationTicket)HttpContext.Current.Items[FormsAuthentication.FormsCookieName];
+ private static FormsAuthenticationTicket AuthTicket
+ {
+ get
+ {
+ FormsAuthenticationTicket authTicket = (FormsAuthenticationTicket)HttpContext.Current.Items[FormsAuthentication.FormsCookieName];
- if (authTicket == null)
- {
- // original code
- HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
- // workaround for cases when AuthTicket is required before round-trip
- if (authCookie == null || String.IsNullOrEmpty(authCookie.Value))
- authCookie = HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName];
- //
- if (authCookie != null)
- {
- authTicket = FormsAuthentication.Decrypt(authCookie.Value);
- HttpContext.Current.Items[FormsAuthentication.FormsCookieName] = authTicket;
- }
- }
+ if (authTicket == null)
+ {
+ // original code
+ HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
+ // workaround for cases when AuthTicket is required before round-trip
+ if (authCookie == null || String.IsNullOrEmpty(authCookie.Value))
+ authCookie = HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName];
+ //
+ if (authCookie != null)
+ {
+ authTicket = FormsAuthentication.Decrypt(authCookie.Value);
+ HttpContext.Current.Items[FormsAuthentication.FormsCookieName] = authTicket;
+ }
+ }
- return authTicket;
- }
- }
+ return authTicket;
+ }
+ }
- private static void SetAuthTicket(FormsAuthenticationTicket ticket, bool persistent)
- {
- // issue authentication cookie
- HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
- authCookie.Domain = FormsAuthentication.CookieDomain;
- authCookie.Secure = FormsAuthentication.RequireSSL;
- authCookie.Path = FormsAuthentication.FormsCookiePath;
- authCookie.Value = FormsAuthentication.Encrypt(ticket);
+ private static void SetAuthTicket(FormsAuthenticationTicket ticket, bool persistent)
+ {
+ // issue authentication cookie
+ HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
+ authCookie.Domain = FormsAuthentication.CookieDomain;
+ authCookie.Secure = FormsAuthentication.RequireSSL;
+ authCookie.Path = FormsAuthentication.FormsCookiePath;
+ authCookie.Value = FormsAuthentication.Encrypt(ticket);
- if (persistent)
- authCookie.Expires = DateTime.Now.AddMonths(1);
+ if (persistent)
+ authCookie.Expires = DateTime.Now.AddMonths(1);
- HttpContext.Current.Response.Cookies.Add(authCookie);
- }
+ HttpContext.Current.Response.Cookies.Add(authCookie);
+ }
- public static string ApplicationPath
- {
- get
- {
- if (HttpContext.Current.Request.ApplicationPath == "/")
- return "";
- else
- return HttpContext.Current.Request.ApplicationPath;
- }
- }
+ public static string ApplicationPath
+ {
+ get
+ {
+ if (HttpContext.Current.Request.ApplicationPath == "/")
+ return "";
+ else
+ return HttpContext.Current.Request.ApplicationPath;
+ }
+ }
- public static string GetSharedLocalizedString(string moduleName, string resourceKey)
- {
- string className = SharedResourcesFile.Replace(".resx", "");
+ public static string GetSharedLocalizedString(string moduleName, string resourceKey)
+ {
+ string className = SharedResourcesFile.Replace(".resx", "");
- if (!String.IsNullOrEmpty(moduleName))
- className = String.Concat(moduleName, "_", className);
-
- return (string)HttpContext.GetGlobalResourceObject(className, resourceKey);
- }
+ if (!String.IsNullOrEmpty(moduleName))
+ className = String.Concat(moduleName, "_", className);
+
+ return (string)HttpContext.GetGlobalResourceObject(className, resourceKey);
+ }
public static string GetCurrentPageId()
{
@@ -311,40 +311,40 @@ namespace WebsitePanel.Portal
return DefaultPage.GetLocalizedPageName(pageId);
}
- public static int AuthenticateUser(string username, string password, string ipAddress,
- bool rememberLogin, string preferredLocale, string theme)
- {
- esAuthentication authService = new esAuthentication();
- ConfigureEnterpriseServerProxy(authService, false);
+ public static int AuthenticateUser(string username, string password, string ipAddress,
+ bool rememberLogin, string preferredLocale, string theme)
+ {
+ esAuthentication authService = new esAuthentication();
+ ConfigureEnterpriseServerProxy(authService, false);
- try
- {
- int authResult = authService.AuthenticateUser(username, password, ipAddress);
+ try
+ {
+ int authResult = authService.AuthenticateUser(username, password, ipAddress);
- if (authResult < 0)
- {
- return authResult;
- }
- else
- {
- UserInfo user = authService.GetUserByUsernamePassword(username, password, ipAddress);
- if (user != null)
- {
- // issue authentication ticket
- FormsAuthenticationTicket ticket = CreateAuthTicket(user.Username, user.Password, user.Role, rememberLogin);
- SetAuthTicket(ticket, rememberLogin);
+ if (authResult < 0)
+ {
+ return authResult;
+ }
+ else
+ {
+ UserInfo user = authService.GetUserByUsernamePassword(username, password, ipAddress);
+ if (user != null)
+ {
+ // issue authentication ticket
+ FormsAuthenticationTicket ticket = CreateAuthTicket(user.Username, user.Password, user.Role, rememberLogin);
+ SetAuthTicket(ticket, rememberLogin);
- CompleteUserLogin(username, rememberLogin, preferredLocale, theme);
- }
+ CompleteUserLogin(username, rememberLogin, preferredLocale, theme);
+ }
- return 0;
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ return 0;
+ }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
private static int GetAuthenticationFormsTimeout()
{
@@ -381,18 +381,18 @@ namespace WebsitePanel.Portal
);
}
- public static int ChangeUserPassword(int userId, string newPassword)
- {
- // load user account
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService, true);
+ public static int ChangeUserPassword(int userId, string newPassword)
+ {
+ // load user account
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService, true);
try
- {
- UserInfo user = usersService.GetUserById(userId);
+ {
+ UserInfo user = usersService.GetUserById(userId);
- // change WebsitePanel account password
- int result = usersService.ChangeUserPassword(userId, newPassword);
+ // change WebsitePanel account password
+ int result = usersService.ChangeUserPassword(userId, newPassword);
if (result < 0)
return result;
@@ -400,15 +400,15 @@ namespace WebsitePanel.Portal
if (String.Compare(user.Username, AuthTicket.Name, true) == 0)
{
FormsAuthenticationTicket ticket = CreateAuthTicket(user.Username, newPassword, user.Role, AuthTicket.IsPersistent);
- SetAuthTicket(ticket, AuthTicket.IsPersistent);
+ SetAuthTicket(ticket, AuthTicket.IsPersistent);
}
return result;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
public static int UpdateUserAccount(UserInfo user)
{
@@ -416,138 +416,138 @@ namespace WebsitePanel.Portal
}
public static int UpdateUserAccount(string taskId, UserInfo user)
- {
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService, true);
+ {
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService, true);
- try
- {
- // update user in WebsitePanel
- return usersService.UpdateUserTask(taskId, user);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ try
+ {
+ // update user in WebsitePanel
+ return usersService.UpdateUserTask(taskId, user);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
- public static int AddUserAccount(List log, UserInfo user, bool sendLetter)
- {
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService, true);
+ public static int AddUserAccount(List log, UserInfo user, bool sendLetter)
+ {
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService, true);
- try
- {
- // add user to WebsitePanel server
+ try
+ {
+ // add user to WebsitePanel server
return usersService.AddUser(user, sendLetter);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
- public static int DeleteUserAccount(int userId)
- {
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService, true);
+ public static int DeleteUserAccount(int userId)
+ {
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService, true);
- try
- {
- // add user to WebsitePanel server
- return usersService.DeleteUser(userId);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ try
+ {
+ // add user to WebsitePanel server
+ return usersService.DeleteUser(userId);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
- public static int ChangeUserStatus(int userId, UserStatus status)
- {
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService, true);
+ public static int ChangeUserStatus(int userId, UserStatus status)
+ {
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService, true);
- try
- {
- // add user to WebsitePanel server
- return usersService.ChangeUserStatus(userId, status);
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
+ try
+ {
+ // add user to WebsitePanel server
+ return usersService.ChangeUserStatus(userId, status);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
- public static UserInfo GetCurrentUser()
- {
- UserInfo user = null;
+ public static UserInfo GetCurrentUser()
+ {
+ UserInfo user = null;
- if (AuthTicket != null)
- {
- esUsers usersService = new esUsers();
- ConfigureEnterpriseServerProxy(usersService);
+ if (AuthTicket != null)
+ {
+ esUsers usersService = new esUsers();
+ ConfigureEnterpriseServerProxy(usersService);
- user = usersService.GetUserByUsername(AuthTicket.Name);
- }
+ user = usersService.GetUserByUsername(AuthTicket.Name);
+ }
- return user;
- }
+ return user;
+ }
- private static void CompleteUserLogin(string username, bool rememberLogin,
- string preferredLocale, string theme)
- {
- // store last successful username in the cookie
- HttpCookie cookie = new HttpCookie("WebsitePanelLogin", username);
- cookie.Expires = DateTime.Now.AddDays(7);
- HttpContext.Current.Response.Cookies.Add(cookie);
+ private static void CompleteUserLogin(string username, bool rememberLogin,
+ string preferredLocale, string theme)
+ {
+ // store last successful username in the cookie
+ HttpCookie cookie = new HttpCookie("WebsitePanelLogin", username);
+ cookie.Expires = DateTime.Now.AddDays(7);
+ HttpContext.Current.Response.Cookies.Add(cookie);
- // set language
- SetCurrentLanguage(preferredLocale);
+ // set language
+ SetCurrentLanguage(preferredLocale);
- // set theme
- SetCurrentTheme(theme);
+ // set theme
+ SetCurrentTheme(theme);
- // remember me
- if (rememberLogin)
- HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddMonths(1);
- }
+ // remember me
+ if (rememberLogin)
+ HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddMonths(1);
+ }
- public static void SetCurrentLanguage(string preferredLocale)
- {
- if (!String.IsNullOrEmpty(preferredLocale))
- {
- HttpCookie localeCrumb = new HttpCookie(CultureCookieName, preferredLocale);
- localeCrumb.Expires = DateTime.Now.AddMonths(2);
- HttpContext.Current.Response.Cookies.Add(localeCrumb);
- }
- }
+ public static void SetCurrentLanguage(string preferredLocale)
+ {
+ if (!String.IsNullOrEmpty(preferredLocale))
+ {
+ HttpCookie localeCrumb = new HttpCookie(CultureCookieName, preferredLocale);
+ localeCrumb.Expires = DateTime.Now.AddMonths(2);
+ HttpContext.Current.Response.Cookies.Add(localeCrumb);
+ }
+ }
- public static void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy)
- {
- ConfigureEnterpriseServerProxy(proxy, true);
- }
+ public static void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy)
+ {
+ ConfigureEnterpriseServerProxy(proxy, true);
+ }
- public static void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy, bool applyPolicy)
- {
- // load ES properties
- string serverUrl = PortalConfiguration.SiteSettings["EnterpriseServer"];
+ public static void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy, bool applyPolicy)
+ {
+ // load ES properties
+ string serverUrl = PortalConfiguration.SiteSettings["EnterpriseServer"];
- EnterpriseServerProxyConfigurator cnfg = new EnterpriseServerProxyConfigurator();
- cnfg.EnterpriseServerUrl = serverUrl;
+ EnterpriseServerProxyConfigurator cnfg = new EnterpriseServerProxyConfigurator();
+ cnfg.EnterpriseServerUrl = serverUrl;
- // create assertion
- if (applyPolicy)
- {
- if (AuthTicket != null)
- {
- cnfg.Username = AuthTicket.Name;
- cnfg.Password = AuthTicket.UserData.Substring(0, AuthTicket.UserData.IndexOf(Environment.NewLine));
- }
- }
+ // create assertion
+ if (applyPolicy)
+ {
+ if (AuthTicket != null)
+ {
+ cnfg.Username = AuthTicket.Name;
+ cnfg.Password = AuthTicket.UserData.Substring(0, AuthTicket.UserData.IndexOf(Environment.NewLine));
+ }
+ }
- cnfg.Configure(proxy);
- }
+ cnfg.Configure(proxy);
+ }
public static XmlNode GetModuleContentNode(WebPortalControlBase module)
{
@@ -560,15 +560,15 @@ namespace WebsitePanel.Portal
return module.Module.SelectNodes("MenuItem");
}
- public static string FormatIconImageUrl(string url)
- {
- return url;
- }
+ public static string FormatIconImageUrl(string url)
+ {
+ return url;
+ }
- public static string FormatIconLinkUrl(object url)
- {
- return DefaultPage.GetPageUrl(url.ToString());
- }
+ public static string FormatIconLinkUrl(object url)
+ {
+ return DefaultPage.GetPageUrl(url.ToString());
+ }
public static string GetThemedImage(string imageUrl)
{
@@ -582,76 +582,76 @@ namespace WebsitePanel.Portal
return page.ResolveUrl("~/App_Themes/" + page.Theme + "/" + iconUrl);
}
- public static void LoadStatesDropDownList(DropDownList list, string countryCode)
- {
+ public static void LoadStatesDropDownList(DropDownList list, string countryCode)
+ {
string xmlFilePath = HttpContext.Current.Server.MapPath(CONFIG_FOLDER + "CountryStates.config");
- list.Items.Clear();
- if (File.Exists(xmlFilePath))
- {
- try
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load(xmlFilePath);
+ list.Items.Clear();
+ if (File.Exists(xmlFilePath))
+ {
+ try
+ {
+ XmlDocument xmlDoc = new XmlDocument();
+ xmlDoc.Load(xmlFilePath);
- List items = new List();
+ List items = new List();
- XmlNodeList xmlNodes = xmlDoc.SelectNodes("//State[@countryCode='" + countryCode + "']");
- foreach (XmlElement xmlNode in xmlNodes)
- {
- string nodeName = xmlNode.GetAttribute("name");
- string nodeKey = xmlNode.GetAttribute("key");
+ XmlNodeList xmlNodes = xmlDoc.SelectNodes("//State[@countryCode='" + countryCode + "']");
+ foreach (XmlElement xmlNode in xmlNodes)
+ {
+ string nodeName = xmlNode.GetAttribute("name");
+ string nodeKey = xmlNode.GetAttribute("key");
- items.Add(new ListItem(nodeName, nodeKey));
- }
+ items.Add(new ListItem(nodeName, nodeKey));
+ }
- list.Items.AddRange(items.ToArray());
- }
- catch
- {
- }
- }
- }
+ list.Items.AddRange(items.ToArray());
+ }
+ catch
+ {
+ }
+ }
+ }
- public static void LoadCountriesDropDownList(DropDownList list, string countryToSelect)
- {
+ public static void LoadCountriesDropDownList(DropDownList list, string countryToSelect)
+ {
string countriesPath = HttpContext.Current.Server.MapPath(CONFIG_FOLDER + "Countries.config");
-
- if (File.Exists(countriesPath))
- {
- try
- {
- XmlDocument xmlCountriesDoc = new XmlDocument();
- xmlCountriesDoc.Load(countriesPath);
+
+ if (File.Exists(countriesPath))
+ {
+ try
+ {
+ XmlDocument xmlCountriesDoc = new XmlDocument();
+ xmlCountriesDoc.Load(countriesPath);
- List items = new List();
+ List items = new List();
- XmlNodeList xmlCountries = xmlCountriesDoc.SelectNodes("//Country");
- foreach (XmlElement xmlCountry in xmlCountries)
- {
- string countryName = xmlCountry.GetAttribute("name");
- string countryKey = xmlCountry.GetAttribute("key");
+ XmlNodeList xmlCountries = xmlCountriesDoc.SelectNodes("//Country");
+ foreach (XmlElement xmlCountry in xmlCountries)
+ {
+ string countryName = xmlCountry.GetAttribute("name");
+ string countryKey = xmlCountry.GetAttribute("key");
- if (String.Compare(countryKey, countryToSelect) == 0)
- {
- ListItem li = new ListItem(countryName, countryKey);
- li.Selected = true;
- items.Add(li);
- }
- else
- items.Add(new ListItem(countryName, countryKey));
- }
+ if (String.Compare(countryKey, countryToSelect) == 0)
+ {
+ ListItem li = new ListItem(countryName, countryKey);
+ li.Selected = true;
+ items.Add(li);
+ }
+ else
+ items.Add(new ListItem(countryName, countryKey));
+ }
- list.Items.AddRange(items.ToArray());
- }
- catch
- {
- }
- }
- }
+ list.Items.AddRange(items.ToArray());
+ }
+ catch
+ {
+ }
+ }
+ }
- public static void LoadCultureDropDownList(DropDownList list)
- {
+ public static void LoadCultureDropDownList(DropDownList list)
+ {
string localesPath = HttpContext.Current.Server.MapPath(CONFIG_FOLDER + "SupportedLocales.config");
if (File.Exists(localesPath))
@@ -696,39 +696,39 @@ namespace WebsitePanel.Portal
{
}
}
- }
+ }
- public static void LoadThemesDropDownList(DropDownList list)
- {
- string localesPath = HttpContext.Current.Server.MapPath(CONFIG_FOLDER + "SupportedThemes.config");
+ public static void LoadThemesDropDownList(DropDownList list)
+ {
+ string localesPath = HttpContext.Current.Server.MapPath(CONFIG_FOLDER + "SupportedThemes.config");
- if (File.Exists(localesPath))
- {
- string themeToSelect = CurrentTheme;
+ if (File.Exists(localesPath))
+ {
+ string themeToSelect = CurrentTheme;
- try
- {
- XmlDocument doc = new XmlDocument();
- doc.Load(localesPath);
+ try
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.Load(localesPath);
- XmlNodeList xmlThemes = doc.SelectNodes("//Theme");
- for (int i = 0; i < xmlThemes.Count; i++)
- {
- XmlElement xmlTheme = (XmlElement)xmlThemes[i];
- string themeName = xmlTheme.GetAttribute("name");
- string themeTitle = xmlTheme.GetAttribute("title");
+ XmlNodeList xmlThemes = doc.SelectNodes("//Theme");
+ for (int i = 0; i < xmlThemes.Count; i++)
+ {
+ XmlElement xmlTheme = (XmlElement)xmlThemes[i];
+ string themeName = xmlTheme.GetAttribute("name");
+ string themeTitle = xmlTheme.GetAttribute("title");
- list.Items.Add(new ListItem(themeTitle, themeName));
+ list.Items.Add(new ListItem(themeTitle, themeName));
- if (String.Compare(themeName, themeToSelect) == 0)
- list.Items[i].Selected = true;
- }
- }
- catch
- {
- }
- }
- }
+ if (String.Compare(themeName, themeToSelect) == 0)
+ list.Items[i].Selected = true;
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
#region Navigation Routines
public static string LoginRedirectUrl
@@ -805,23 +805,23 @@ namespace WebsitePanel.Portal
urlBuilder.Add(String.Concat(keyName, "=", keyValue));
// load additional params
- if (additionalParams != null)
- {
+ if (additionalParams != null)
+ {
string controlId = null;
string moduleDefinitionId = null;
//
- foreach (string paramStr in additionalParams)
- {
- if (paramStr.StartsWith("ctl=", StringComparison.InvariantCultureIgnoreCase))
- {
- // ensure page exists and avoid unnecessary exceptions throw
- if (PortalConfiguration.Site.Pages.ContainsKey(pageId))
- {
- string[] pair = paramStr.Split('=');
+ foreach (string paramStr in additionalParams)
+ {
+ if (paramStr.StartsWith("ctl=", StringComparison.InvariantCultureIgnoreCase))
+ {
+ // ensure page exists and avoid unnecessary exceptions throw
+ if (PortalConfiguration.Site.Pages.ContainsKey(pageId))
+ {
+ string[] pair = paramStr.Split('=');
controlId = pair[1];
}
- }
+ }
else if (paramStr.StartsWith("moduleDefId=", StringComparison.InvariantCultureIgnoreCase))
{
// ensure page exists and avoid unnecessary exceptions throw
@@ -832,8 +832,8 @@ namespace WebsitePanel.Portal
}
continue;
}
- urlBuilder.Add(paramStr);
- }
+ urlBuilder.Add(paramStr);
+ }
if (!String.IsNullOrEmpty(moduleDefinitionId) && !String.IsNullOrEmpty(controlId))
{
// 1. Read module controls first information first
@@ -864,7 +864,7 @@ namespace WebsitePanel.Portal
}
}
}
- }
+ }
End:
if (urlBuilder.Count > 0)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs
index 2270d1b1..17abd1ae 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs
@@ -47,7 +47,7 @@ namespace WebsitePanel.Portal
///
- /// Builds list of items from supplied group string.
- ///
- /// Group string.
- /// List of items.
- public static List> ParseGroup(string group)
- {
- List> items = new List>();
- string[] vals = group.Split(';');
- foreach (string v in vals)
- {
- string itemValue = v;
- string itemText = v;
+ ///
+ /// Builds list of items from supplied group string.
+ ///
+ /// Group string.
+ /// List of items.
+ public static List> ParseGroup(string group)
+ {
+ List> items = new List>();
+ string[] vals = group.Split(';');
+ foreach (string v in vals)
+ {
+ string itemValue = v;
+ string itemText = v;
- int eqIdx = v.IndexOf("=");
- if (eqIdx != -1)
- {
- itemValue = v.Substring(0, eqIdx);
- itemText = v.Substring(eqIdx + 1);
- }
+ int eqIdx = v.IndexOf("=");
+ if (eqIdx != -1)
+ {
+ itemValue = v.Substring(0, eqIdx);
+ itemText = v.Substring(eqIdx + 1);
+ }
- items.Add(new KeyValuePair(itemText, itemValue));
- }
- return items;
- }
+ items.Add(new KeyValuePair(itemText, itemValue));
+ }
+ return items;
+ }
public static void SelectListItem(ListControl ctrl, object value)
@@ -215,13 +256,13 @@ namespace WebsitePanel.Portal
}
}
- public static string EllipsisString(string str, int maxLen)
- {
- if (String.IsNullOrEmpty(str) || str.Length <= maxLen)
- return str;
+ public static string EllipsisString(string str, int maxLen)
+ {
+ if (String.IsNullOrEmpty(str) || str.Length <= maxLen)
+ return str;
- return str.Substring(0, maxLen) + "...";
- }
+ return str.Substring(0, maxLen) + "...";
+ }
public static string GetRandomString(int length)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx
index 05795c25..9475179a 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx
@@ -121,7 +121,7 @@
<p>When you grant <b>Full Access</b> permission to a user, that user can open this mailbox and access all of its content.</p> <br><p>When you grant <b>Send As</b> permission to a user, that user can send messages as this mailbox. </p><br><p>We do not recommend to use this setting together “Send on behalf” (“Send as”) – it may work unpredictable.</p>
- Grand this permission to:
+ Grant this permission to:
Send As
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx
index c6559626..4902c97d 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx
@@ -35,7 +35,7 @@
function HighlightRow(chkB)
{
var xState=chkB.checked;
- var row = chkB.parentElement.parentElement;
+ var row = chkB.parentNode.parentNode;
if(xState)
{
row.setAttribute("temp_class", row.className);
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HyperVForPrivateCloud_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HyperVForPrivateCloud_Settings.ascx.cs
index cc52f05f..738e7e2b 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HyperVForPrivateCloud_Settings.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HyperVForPrivateCloud_Settings.ascx.cs
@@ -68,7 +68,7 @@ namespace WebsitePanel.Portal.ProviderControls
hosts = ES.Services.VPSPC.GetClusters(PanelRequest.ServiceId);
}
}
- catch (Exception ex)
+ catch
{
hosts = null;
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcCreateServer.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcCreateServer.ascx.cs
index 35b7f7bf..6dde4925 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcCreateServer.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcCreateServer.ascx.cs
@@ -130,7 +130,7 @@ namespace WebsitePanel.Portal.VPSForPC
btn.Enabled = false;
}
- messageBox.ShowErrorMessage("VPS_ERROR_CREATE", new Exception("no templates"));
+ messageBox.ShowErrorMessage("VPS_ERROR_CREATE", new Exception("no templates", ex));
}
// summary letter e-mail
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcFastCreateServer.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcFastCreateServer.ascx.cs
index 25ab4a19..9a875029 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcFastCreateServer.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VdcFastCreateServer.ascx.cs
@@ -85,7 +85,7 @@ namespace WebsitePanel.Portal.VPSForPC
listOperatingSystems.Enabled = false;
txtVmName.Enabled = false;
btnCreate.Enabled = false;
- messageBox.ShowErrorMessage("VPS_ERROR_CREATE", new Exception("no VM"));
+ messageBox.ShowErrorMessage("VPS_ERROR_CREATE", new Exception("no VM", ex));
}
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VpsDetailsConfiguration.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VpsDetailsConfiguration.ascx.cs
index c8f4abea..c8f2bf6d 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VpsDetailsConfiguration.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPSForPC/VpsDetailsConfiguration.ascx.cs
@@ -67,12 +67,7 @@ namespace WebsitePanel.Portal.VPSForPC
}
catch (Exception ex)
{
- vm = null;
- }
-
- if (vm == null)
- {
- messageBox.ShowErrorMessage("VPS_LOAD_VM_META_ITEM");
+ messageBox.ShowErrorMessage("VPS_LOAD_VM_META_ITEM", ex);
return;
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconApeControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconApeControl.ascx.cs
index 1a1ff8e5..b3381dc8 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconApeControl.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconApeControl.ascx.cs
@@ -66,44 +66,47 @@ namespace WebsitePanel.Portal
{
if (IsHeliconApeInstalled)
{
- WebSite site = null;
- try
+ if (!IsPostBack)
{
- site = ES.Services.WebServers.GetWebSite(PanelRequest.ItemID);
- }
- catch (Exception ex)
- {
- HostModule.ShowErrorMessage("WEB_GET_SITE", ex);
- return;
- }
+ WebSite site = null;
+ try
+ {
+ site = ES.Services.WebServers.GetWebSite(PanelRequest.ItemID);
+ }
+ catch (Exception ex)
+ {
+ HostModule.ShowErrorMessage("WEB_GET_SITE", ex);
+ return;
+ }
- if (site == null)
- RedirectToBrowsePage();
+ if (site == null)
+ RedirectToBrowsePage();
- BindHeliconApe(site);
+ BindHeliconApe(site);
+ }
}
}
- public void BindHeliconApe(WebSite site)
+ public void BindHeliconApe(WebSite site)
{
// save initial state
IsHeliconApeInstalled = site.HeliconApeInstalled;
IsHeliconApeEnabled = site.HeliconApeEnabled;
IsSecuredFoldersInstalled = site.SecuredFoldersInstalled;
- // Render a warning message about the automatic site's settings change
- if (!IsHeliconApeEnabled && site.IIs7)
- {
- // Ensure the message is displayed only when neccessary
- if (site.EnableWindowsAuthentication || !site.AspNetInstalled.EndsWith("I") || site.SecuredFoldersInstalled)
- {
- // TODO: show warning, do not force to enable integrated pool
+ // Render a warning message about the automatic site's settings change
+ if (!IsHeliconApeEnabled && site.IIs7)
+ {
+ // Ensure the message is displayed only when neccessary
+ if (site.EnableWindowsAuthentication || !site.AspNetInstalled.EndsWith("I") || site.SecuredFoldersInstalled)
+ {
+ // TODO: show warning, do not force to enable integrated pool
string warningStr = GetLocalizedString("EnableFoldersIIs7Warning.Text");
- // Render a warning only if specified
- if (!String.IsNullOrEmpty(warningStr))
+ // Render a warning only if specified
+ if (!String.IsNullOrEmpty(warningStr))
btnToggleHeliconApe.OnClientClick = String.Format("return confirm('{0}')", warningStr);
- }
- }
+ }
+ }
// toggle
ToggleControls();
}
@@ -112,7 +115,7 @@ namespace WebsitePanel.Portal
{
if (IsHeliconApeInstalled)
{
- // toggle button
+ // toggle button
btnToggleHeliconApe.Text = GetLocalizedString(
IsHeliconApeEnabled ? "DisableHeliconApe.Text" : "EnableHeliconApe.Text");
@@ -130,9 +133,9 @@ namespace WebsitePanel.Portal
}
else
{
- // Display the module not installed message for informational purposes.
- panelHeliconApeIsNotInstalledMessage.Visible = true;
- //
+ // Display the module not installed message for informational purposes.
+ panelHeliconApeIsNotInstalledMessage.Visible = true;
+ //
btnToggleHeliconApe.Visible = false;
HeliconApeFoldersPanel.Visible = false;
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs
index f642d00d..a5e71f64 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs
@@ -107,15 +107,23 @@ namespace WebsitePanel.Portal
}
}
- private void BindListOfAvailableSslDomains(ServerBinding[] siteBindings, SSLCertificate[] siteCertificates)
+ private void BindListOfAvailableSslDomains(ServerBinding[] siteBindings, SSLCertificate[] siteCertificates, string websiteName = "")
{
- lstDomains.Items.Clear();
- //
- foreach (ServerBinding binding in siteBindings)
- {
- //
- lstDomains.Items.Add(new ListItem(binding.Host, binding.Host));
- }
+ lstDomains.Items.Clear();
+ //
+ foreach (ServerBinding binding in siteBindings)
+ {
+ //
+ if (binding.IP.ToString().Length > 0 && binding.Host.Length == 0)
+ {
+ lstDomains.Items.Add(new ListItem(websiteName, websiteName));
+ lstDomains.Items.Add(new ListItem(String.Format("www.{0}", websiteName), String.Format("www.{0}", websiteName)));
+ }
+ else
+ {
+ lstDomains.Items.Add(new ListItem(binding.Host, binding.Host));
+ }
+ }
}
public void BindWebItem(WebVirtualDirectory item)
@@ -137,7 +145,7 @@ namespace WebsitePanel.Portal
SSLNotInstalled.Visible = true;
//
- BindListOfAvailableSslDomains(webSite.Bindings, certificates);
+ BindListOfAvailableSslDomains(webSite.Bindings, certificates, webSite.Name);
if (certificates.Length > 0)
{
@@ -560,7 +568,7 @@ namespace WebsitePanel.Portal
SSLNotInstalled.Visible = true;
//
- BindListOfAvailableSslDomains(item.Bindings, certificates);
+ BindListOfAvailableSslDomains(item.Bindings, certificates, item.Name);
if (certificates.Length > 0)
{
diff --git a/WebsitePanel/build-debug.bat b/WebsitePanel/build-debug.bat
index c2008116..8291a305 100644
--- a/WebsitePanel/build-debug.bat
+++ b/WebsitePanel/build-debug.bat
@@ -1 +1 @@
-%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Build /property:BuildConfiguration=Debug /v:d /fileLogger
\ No newline at end of file
+%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Build /property:BuildConfiguration=Debug /v:n /fileLogger
\ No newline at end of file
diff --git a/WebsitePanel/build-release.bat b/WebsitePanel/build-release.bat
index 7e115978..e76ab1fd 100644
--- a/WebsitePanel/build-release.bat
+++ b/WebsitePanel/build-release.bat
@@ -1 +1 @@
-%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Build /property:BuildConfiguration=Release /v:d /fileLogger
\ No newline at end of file
+%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Build /property:BuildConfiguration=Release /v:n /fileLogger
\ No newline at end of file
diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml
index 3582414f..4ca4ad45 100644
--- a/WebsitePanel/build.xml
+++ b/WebsitePanel/build.xml
@@ -1,10 +1,10 @@
-
+
- 1.2.0.0
- 1.2.0.38
- 1.2.0
- 2011-07-13
+ 1.2.1.0
+ 1.2.1.2
+ 1.2.1
+ 2012-01-19
Release
..
$(RootFolder)\WebsitePanel
@@ -15,12 +15,12 @@
$(TrunkFolder)\Build\$(BuildConfiguration)
$(TrunkFolder)\Deploy\$(BuildConfiguration)
- C:\Projects\Sourceforge\WebsitePanel\Releases\1.1.2\Build\$(BuildConfiguration)
+ C:\Projects\WebsitePanel-1.2.0-distr\$(BuildConfiguration)
$(TrunkFolder)\Tools\Diff.exe
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -S (local)\SQLEXPRESS -E
- "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe"
+ "C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe"
WebsitePanel_build
server=(local)\SQLEXPRESS;database=$(DataBaseName);Integrated Security=true;
diff --git a/WebsitePanel/deploy-debug.bat b/WebsitePanel/deploy-debug.bat
index a91516db..49fb2b46 100644
--- a/WebsitePanel/deploy-debug.bat
+++ b/WebsitePanel/deploy-debug.bat
@@ -1 +1 @@
-%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /property:BuildConfiguration=Debug /v:d /fileLogger
+%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /property:BuildConfiguration=Debug /v:n /fileLogger
diff --git a/WebsitePanel/deploy-release.bat b/WebsitePanel/deploy-release.bat
index 9289dc9c..d52b2609 100644
--- a/WebsitePanel/deploy-release.bat
+++ b/WebsitePanel/deploy-release.bat
@@ -1 +1 @@
-%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /property:BuildConfiguration=Release /v:d /fileLogger
+%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /property:BuildConfiguration=Release /v:n /fileLogger