Initial project's source code check-in.
This commit is contained in:
commit
b03b0b373f
4573 changed files with 981205 additions and 0 deletions
12
.hgignore
Normal file
12
.hgignore
Normal file
|
@ -0,0 +1,12 @@
|
|||
syntax: glob
|
||||
*.suo
|
||||
obj
|
||||
bin/Debug
|
||||
bin/Release
|
||||
MySql.Data.dll
|
||||
SDNSAPI.dll
|
||||
bin
|
||||
*.vshost.*
|
||||
*.pdb
|
||||
*.vs10x
|
||||
*.user
|
0
CREDITS.txt
Normal file
0
CREDITS.txt
Normal file
27
LICENSE.txt
Normal file
27
LICENSE.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
Copyright (c) 2011, Outercurve Foundation.
|
||||
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 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.
|
||||
|
||||
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.
|
BIN
WebsitePanel.HyperV.Utils/Lib/Microsoft.Storage.Vds.dll
Normal file
BIN
WebsitePanel.HyperV.Utils/Lib/Microsoft.Storage.Vds.dll
Normal file
Binary file not shown.
64
WebsitePanel.HyperV.Utils/Readme.htm
Normal file
64
WebsitePanel.HyperV.Utils/Readme.htm
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>WebsitePanel Hyper-V Utils - Readme</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>
|
||||
WebsitePanel Hyper-V Utils - Readme</h1>
|
||||
<p>
|
||||
WebsitePanel Hyper-V Utils is a simple command-line utility to perform the
|
||||
following operations:</p>
|
||||
<ul>
|
||||
<li>Mount VHD</li>
|
||||
<li>Unmount VHD</li>
|
||||
</ul>
|
||||
|
||||
<h2>
|
||||
License</h2>
|
||||
<p>
|
||||
WebsitePanel Hyper-V Utils is released under BSD license. Please see LICENSE.txt file in the
|
||||
root folder of this project.</p>
|
||||
|
||||
<h2>
|
||||
Project Structure</h2>
|
||||
<p>
|
||||
The project has the following folders structure:</p>
|
||||
<ul>
|
||||
<li><strong>\Trunk</strong> - project version currently in development<ul>
|
||||
<li><strong>\Sources</strong> - project source codes. Each solution project is
|
||||
placed in its own sub-folder. All solution files are placed in the root of this
|
||||
folder.<ul>
|
||||
<li>Solution1.sln</li>
|
||||
<li>Solution2.sln</li>
|
||||
<li>ProjectName.build - MS Build file for the entire project</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>\Lib</strong> - all referenced 3rd-party assemblies required to build
|
||||
the solution are placed in this folder.</li>
|
||||
<li><strong>\Docs</strong> - project documentation<ul>
|
||||
<li><strong>\Developer</strong> - technical documentation (specs, diagrams, POCs,
|
||||
etc.) for developers working on the project</li>
|
||||
<li><strong>\User</strong> - user-related documentation (user guides, how-tows,
|
||||
etc.) for end-users using the product</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>\Build</strong> - optional folder containing solution assemblies that
|
||||
are referenced from other projects</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>\Releases</strong> - contains all project releases</li>
|
||||
<li><strong>\Branches</strong> - contains project branches for proof-of-concepts,
|
||||
new development, bug fixing, etc.</li>
|
||||
<li><strong>LICENSE.txt</strong> - project license</li>
|
||||
<li><strong>Readme.htm</strong> - the file you are reading right now</li>
|
||||
<li><strong>ReleaseNotes.htm</strong> - project release notes</li>
|
||||
</ul>
|
||||
<h2>
|
||||
Build How-To</h2>
|
||||
<p>
|
||||
Open WebsitePanel.HyperV.Utils.sln solution in Visual Studio 2010 and build it.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
26
WebsitePanel.HyperV.Utils/ReleaseNotes.htm
Normal file
26
WebsitePanel.HyperV.Utils/ReleaseNotes.htm
Normal file
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>WebsitePanel Hyper-V Utils - Release Notes</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>WebsitePanel Hyper-V Utils - Release Notes</h1>
|
||||
<p>
|
||||
<strong>March 15, 2011 - v1.2</strong></p>
|
||||
<ul>
|
||||
<li>Migrated the project to .NET Framework 4.0.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<strong>April 16, 2010 - v1.0</strong></p>
|
||||
<ul>
|
||||
<li>Initial release of WebsitePanel Hyper-V Utils under BSD license.</li>
|
||||
<li>Added diagnostics messages during VHD mounting.</li>
|
||||
<li>MountVHD displays index for mounted disk that could be used in DiskPart utility.</li>
|
||||
<li>MountVHD function now uses VDS.</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
20
WebsitePanel.HyperV.Utils/Sources/VersionInfo.cs
Normal file
20
WebsitePanel.HyperV.Utils/Sources/VersionInfo.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.225
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
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.34")]
|
||||
[assembly: AssemblyInformationalVersion("1.2.0")]
|
|
@ -0,0 +1,27 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{58249F88-194C-4F6C-872D-94AA37B62E6D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\..\LICENSE.txt = ..\..\LICENSE.txt
|
||||
..\..\Readme.htm = ..\..\Readme.htm
|
||||
..\..\ReleaseNotes.htm = ..\..\ReleaseNotes.htm
|
||||
VersionInfo.cs = VersionInfo.cs
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.HyperV.Utils", "WebsitePanel.HyperV.Utils\WebsitePanel.HyperV.Utils.csproj", "{824FB237-2208-4BD7-9F61-413DC2A32827}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{824FB237-2208-4BD7-9F61-413DC2A32827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{824FB237-2208-4BD7-9F61-413DC2A32827}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{824FB237-2208-4BD7-9F61-413DC2A32827}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{824FB237-2208-4BD7-9F61-413DC2A32827}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Management;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
public class ConcreteJob
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public ConcreteJobState JobState { get; set; }
|
||||
public string Caption { get; set; }
|
||||
public string Description { get; set; }
|
||||
public DateTime ElapsedTime { get; set; }
|
||||
public DateTime StartTime { get; set; }
|
||||
public int ErrorCode { get; set; }
|
||||
public string ErrorDescription { get; set; }
|
||||
public int PercentComplete { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
public enum ConcreteJobState
|
||||
{
|
||||
New = 2,
|
||||
Starting = 3,
|
||||
Running = 4,
|
||||
Suspended = 5,
|
||||
ShuttingDown = 6,
|
||||
Completed = 7,
|
||||
Terminated = 8,
|
||||
Killed = 9,
|
||||
Exception = 10
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
public class JobResult
|
||||
{
|
||||
public ConcreteJob Job { get; set; }
|
||||
public ReturnCode ReturnValue { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,445 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Reflection;
|
||||
using System.Management;
|
||||
|
||||
using Vds = Microsoft.Storage.Vds;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
class Program
|
||||
{
|
||||
// command line parameters
|
||||
private const string ns = @"root\virtualization";
|
||||
private static Wmi wmi = null;
|
||||
private static string computer = null;
|
||||
private static string command = null;
|
||||
private static Dictionary<string, string> Parameters = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// display welcome screen
|
||||
DisplayWelcome();
|
||||
|
||||
// parse parameters
|
||||
if (!ParseParameters(args))
|
||||
{
|
||||
DisplayUsage();
|
||||
return;
|
||||
}
|
||||
|
||||
// connect WMI
|
||||
wmi = new Wmi(computer, ns);
|
||||
|
||||
try
|
||||
{
|
||||
// run command
|
||||
if (String.Equals(command, "MountVHD", StringComparison.CurrentCultureIgnoreCase))
|
||||
MountVHD();
|
||||
else if (String.Equals(command, "UnmountVHD", StringComparison.CurrentCultureIgnoreCase))
|
||||
UnmountVHD();
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Unknown command: " + command);
|
||||
DisplayUsage();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("\nError: " + ex.Message);
|
||||
if (ex.InnerException != null)
|
||||
Console.WriteLine("System message: " + ex.InnerException.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static void MountVHD()
|
||||
{
|
||||
// check parameters
|
||||
AssertParameter("path");
|
||||
string vhdPath = Parameters["path"];
|
||||
|
||||
ManagementObject objImgSvc = GetImageManagementService();
|
||||
|
||||
Console.WriteLine("Mount VHD: " + vhdPath);
|
||||
|
||||
// get method params
|
||||
ManagementBaseObject inParams = objImgSvc.GetMethodParameters("Mount");
|
||||
inParams["Path"] = vhdPath;
|
||||
|
||||
ManagementBaseObject outParams = (ManagementBaseObject)objImgSvc.InvokeMethod("Mount", inParams, null);
|
||||
JobResult result = CreateJobResultFromWmiMethodResults(outParams);
|
||||
|
||||
// load storage job
|
||||
if (result.ReturnValue != ReturnCode.JobStarted
|
||||
|| result.Job.JobState == ConcreteJobState.Exception)
|
||||
{
|
||||
throw new Exception("Mount job failed to start with the following message: " + result.Job.ErrorDescription);
|
||||
}
|
||||
|
||||
ManagementObject objJob = wmi.GetWmiObject("msvm_StorageJob", "InstanceID = '{0}'", result.Job.Id);
|
||||
|
||||
if (JobCompleted(result.Job))
|
||||
{
|
||||
// load output data
|
||||
ManagementObject objImage = wmi.GetRelatedWmiObject(objJob, "Msvm_MountedStorageImage");
|
||||
|
||||
int pathId = Convert.ToInt32(objImage["PathId"]);
|
||||
int portNumber = Convert.ToInt32(objImage["PortNumber"]);
|
||||
int targetId = Convert.ToInt32(objImage["TargetId"]);
|
||||
int lun = Convert.ToInt32(objImage["Lun"]);
|
||||
|
||||
string diskAddress = String.Format("Port{0}Path{1}Target{2}Lun{3}", portNumber, pathId, targetId, lun);
|
||||
|
||||
// find mounted disk using VDS
|
||||
Vds.Advanced.AdvancedDisk advancedDisk = null;
|
||||
Vds.Pack diskPack = null;
|
||||
|
||||
// first attempt
|
||||
System.Threading.Thread.Sleep(3000);
|
||||
Console.WriteLine("Querying mounted disk...");
|
||||
FindVdsDisk(diskAddress, out advancedDisk, out diskPack);
|
||||
|
||||
// second attempt
|
||||
if (advancedDisk == null)
|
||||
{
|
||||
System.Threading.Thread.Sleep(20000);
|
||||
Console.WriteLine("Querying mounted disk - second attempt...");
|
||||
FindVdsDisk(diskAddress, out advancedDisk, out diskPack);
|
||||
}
|
||||
|
||||
if (advancedDisk == null)
|
||||
throw new Exception("Could not find mounted disk");
|
||||
|
||||
List<string> volumes = new List<string>();
|
||||
|
||||
Console.WriteLine("Disk flags: " + advancedDisk.Flags);
|
||||
|
||||
// clear READONLY
|
||||
if ((advancedDisk.Flags & Vds.DiskFlags.ReadOnly) == Vds.DiskFlags.ReadOnly)
|
||||
{
|
||||
Console.Write("Clearing disk Read-Only flag...");
|
||||
advancedDisk.ClearFlags(Vds.DiskFlags.ReadOnly);
|
||||
|
||||
while ((advancedDisk.Flags & Vds.DiskFlags.ReadOnly) == Vds.DiskFlags.ReadOnly)
|
||||
{
|
||||
System.Threading.Thread.Sleep(100);
|
||||
advancedDisk.Refresh();
|
||||
}
|
||||
Console.WriteLine("Done");
|
||||
}
|
||||
|
||||
// bring disk ONLINE
|
||||
if (advancedDisk.Status == Vds.DiskStatus.Offline)
|
||||
{
|
||||
Console.Write("Bringing disk online...");
|
||||
advancedDisk.Online();
|
||||
|
||||
while (advancedDisk.Status == Vds.DiskStatus.Offline)
|
||||
{
|
||||
System.Threading.Thread.Sleep(100);
|
||||
advancedDisk.Refresh();
|
||||
}
|
||||
|
||||
Console.WriteLine("Done");
|
||||
}
|
||||
|
||||
// determine disk index for DiskPart
|
||||
Wmi cimv2 = new Wmi(computer, "root\\CIMV2");
|
||||
ManagementObject objDisk = cimv2.GetWmiObject("win32_diskdrive",
|
||||
"Model='Msft Virtual Disk SCSI Disk Device' and ScsiTargetID={0} and ScsiLogicalUnit={1} and scsiPort={2}",
|
||||
targetId, lun, portNumber);
|
||||
|
||||
if (objDisk != null)
|
||||
{
|
||||
Console.WriteLine("DiskPart disk index: " + Convert.ToInt32(objDisk["Index"]));
|
||||
}
|
||||
|
||||
// find volume
|
||||
diskPack.Refresh();
|
||||
foreach (Vds.Volume volume in diskPack.Volumes)
|
||||
{
|
||||
volumes.Add(volume.DriveLetter.ToString());
|
||||
}
|
||||
|
||||
if (volumes.Count == 0 && objDisk != null)
|
||||
{
|
||||
// find volumes using WMI
|
||||
foreach (ManagementObject objPartition in objDisk.GetRelated("Win32_DiskPartition"))
|
||||
{
|
||||
foreach (ManagementObject objVolume in objPartition.GetRelated("Win32_LogicalDisk"))
|
||||
{
|
||||
volumes.Add(objVolume["Name"].ToString().TrimEnd(':'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (string volume in volumes)
|
||||
{
|
||||
Console.WriteLine("Volume found: " + volume);
|
||||
}
|
||||
|
||||
//// find disk index
|
||||
//Wmi win32 = new Wmi(computer, @"root\cimv2");
|
||||
|
||||
//System.Threading.Thread.Sleep(1000); // small pause
|
||||
|
||||
//ManagementObject objDisk = win32.GetWmiObject("win32_DiskDrive",
|
||||
// "Model='Msft Virtual Disk SCSI Disk Device' and ScsiTargetID={0} and ScsiLogicalUnit={1} and ScsiPort={2}",
|
||||
// targetId, lun, portNumber);
|
||||
|
||||
//int diskIndex = Convert.ToInt32(objDisk["Index"]);
|
||||
|
||||
Console.WriteLine("\nDisk has been mounted.\n");
|
||||
//Console.WriteLine("Disk index: " + advancedDisk.);
|
||||
}
|
||||
}
|
||||
|
||||
private static void FindVdsDisk(string diskAddress, out Vds.Advanced.AdvancedDisk advancedDisk, out Vds.Pack diskPack)
|
||||
{
|
||||
advancedDisk = null;
|
||||
diskPack = null;
|
||||
|
||||
Vds.ServiceLoader serviceLoader = new Vds.ServiceLoader();
|
||||
Vds.Service vds = serviceLoader.LoadService(computer);
|
||||
vds.WaitForServiceReady();
|
||||
|
||||
foreach (Vds.Disk disk in vds.UnallocatedDisks)
|
||||
{
|
||||
if (disk.DiskAddress == diskAddress)
|
||||
{
|
||||
advancedDisk = (Vds.Advanced.AdvancedDisk)disk;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (advancedDisk == null)
|
||||
{
|
||||
vds.HardwareProvider = false;
|
||||
vds.SoftwareProvider = true;
|
||||
|
||||
foreach (Vds.SoftwareProvider provider in vds.Providers)
|
||||
foreach (Vds.Pack pack in provider.Packs)
|
||||
foreach (Vds.Disk disk in pack.Disks)
|
||||
if (disk.DiskAddress == diskAddress)
|
||||
{
|
||||
diskPack = pack;
|
||||
advancedDisk = (Vds.Advanced.AdvancedDisk)disk;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void UnmountVHD()
|
||||
{
|
||||
// check parameters
|
||||
AssertParameter("path");
|
||||
string vhdPath = Parameters["path"];
|
||||
|
||||
Console.WriteLine("Unmount VHD: " + vhdPath);
|
||||
|
||||
ManagementObject objImgSvc = GetImageManagementService();
|
||||
|
||||
// get method params
|
||||
ManagementBaseObject inParams = objImgSvc.GetMethodParameters("Unmount");
|
||||
inParams["Path"] = vhdPath;
|
||||
|
||||
ManagementBaseObject outParams = (ManagementBaseObject)objImgSvc.InvokeMethod("Unmount", inParams, null);
|
||||
ReturnCode result = (ReturnCode)Convert.ToInt32(outParams["ReturnValue"]);
|
||||
if (result != ReturnCode.OK)
|
||||
{
|
||||
throw new Exception("Unmount task failed with the \"" + result + "\" code");
|
||||
}
|
||||
|
||||
Console.WriteLine("\nDisk has been unmounted.");
|
||||
}
|
||||
|
||||
#region Jobs
|
||||
private static bool JobCompleted(ConcreteJob job)
|
||||
{
|
||||
bool jobCompleted = true;
|
||||
|
||||
while (job.JobState == ConcreteJobState.Starting ||
|
||||
job.JobState == ConcreteJobState.Running)
|
||||
{
|
||||
System.Threading.Thread.Sleep(200);
|
||||
job = GetJob(job.Id);
|
||||
}
|
||||
|
||||
if (job.JobState != ConcreteJobState.Completed)
|
||||
{
|
||||
jobCompleted = false;
|
||||
}
|
||||
|
||||
return jobCompleted;
|
||||
}
|
||||
|
||||
public static ConcreteJob GetJob(string jobId)
|
||||
{
|
||||
ManagementObject objJob = GetJobWmiObject(jobId);
|
||||
return CreateJobFromWmiObject(objJob);
|
||||
}
|
||||
|
||||
private static ConcreteJob CreateJobFromWmiMethodResults(ManagementBaseObject outParams)
|
||||
{
|
||||
ManagementBaseObject objJob = wmi.GetWmiObjectByPath((string)outParams["Job"]);
|
||||
if (objJob == null || objJob.Properties.Count == 0)
|
||||
return null;
|
||||
|
||||
return CreateJobFromWmiObject(objJob);
|
||||
}
|
||||
|
||||
private static JobResult CreateJobResultFromWmiMethodResults(ManagementBaseObject outParams)
|
||||
{
|
||||
JobResult result = new JobResult();
|
||||
|
||||
// return value
|
||||
result.ReturnValue = (ReturnCode)Convert.ToInt32(outParams["ReturnValue"]);
|
||||
|
||||
// job
|
||||
ManagementBaseObject objJob = wmi.GetWmiObjectByPath((string)outParams["Job"]);
|
||||
if (objJob != null && objJob.Properties.Count > 0)
|
||||
{
|
||||
result.Job = CreateJobFromWmiObject(objJob);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ManagementObject GetJobWmiObject(string id)
|
||||
{
|
||||
return wmi.GetWmiObject("CIM_ConcreteJob", "InstanceID = '{0}'", id);
|
||||
}
|
||||
|
||||
private static ConcreteJob CreateJobFromWmiObject(ManagementBaseObject objJob)
|
||||
{
|
||||
if (objJob == null || objJob.Properties.Count == 0)
|
||||
return null;
|
||||
|
||||
ConcreteJob job = new ConcreteJob();
|
||||
job.Id = (string)objJob["InstanceID"];
|
||||
job.JobState = (ConcreteJobState)Convert.ToInt32(objJob["JobState"]);
|
||||
job.Caption = (string)objJob["Caption"];
|
||||
job.Description = (string)objJob["Description"];
|
||||
job.ElapsedTime = wmi.ToDateTime((string)objJob["ElapsedTime"]);
|
||||
job.StartTime = wmi.ToDateTime((string)objJob["StartTime"]);
|
||||
job.ErrorCode = Convert.ToInt32(objJob["ErrorCode"]);
|
||||
job.ErrorDescription = (string)objJob["ErrorDescription"];
|
||||
job.PercentComplete = Convert.ToInt32(objJob["PercentComplete"]);
|
||||
return job;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Managers
|
||||
private static ManagementObject GetVirtualSystemManagementService()
|
||||
{
|
||||
return wmi.GetWmiObject("msvm_VirtualSystemManagementService");
|
||||
}
|
||||
|
||||
private static ManagementObject GetVirtualSwitchManagementService()
|
||||
{
|
||||
return wmi.GetWmiObject("msvm_VirtualSwitchManagementService");
|
||||
}
|
||||
|
||||
private static ManagementObject GetImageManagementService()
|
||||
{
|
||||
return wmi.GetWmiObject("msvm_ImageManagementService");
|
||||
}
|
||||
#endregion
|
||||
|
||||
private static void DisplayWelcome()
|
||||
{
|
||||
string ver = Assembly.GetExecutingAssembly().GetName().Version.ToString(2);
|
||||
Console.WriteLine("VmUtils - utility to work with Hyper-V virtual resources. Version " + ver);
|
||||
Console.WriteLine("Copyright (C) 2011 by Outercurve Foundation. All rights reserved.\n");
|
||||
}
|
||||
|
||||
private static bool ParseParameters(string[] args)
|
||||
{
|
||||
if (args == null || args.Length == 0)
|
||||
return false;
|
||||
|
||||
// command
|
||||
command = args[0];
|
||||
|
||||
for (int i = 1; i < args.Length; i++)
|
||||
{
|
||||
if (!args[i].StartsWith("-"))
|
||||
return false; // wrong parameter format
|
||||
|
||||
string name = args[i].Substring(1);
|
||||
|
||||
if (i == (args.Length - 1))
|
||||
return false; // no parameter value
|
||||
|
||||
string val = args[i + 1];
|
||||
i++;
|
||||
|
||||
// add parameter to the hash
|
||||
Parameters.Add(name, val);
|
||||
|
||||
if (String.Equals(name, "computer", StringComparison.CurrentCultureIgnoreCase))
|
||||
computer = val;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void AssertParameter(string name)
|
||||
{
|
||||
if (!Parameters.ContainsKey(name))
|
||||
{
|
||||
throw new Exception(String.Format("Command \"{0}\" expect \"{1}\" parameter which was not supplied.", command, name));
|
||||
}
|
||||
}
|
||||
|
||||
private static void DisplayUsage()
|
||||
{
|
||||
Console.WriteLine("\nUSAGE:");
|
||||
Console.WriteLine(" vmutils <command> [-parameter1 value1 -parameter2 value2 ...]\n");
|
||||
|
||||
Console.WriteLine("EXAMPLE:");
|
||||
Console.WriteLine(" vmtuils MountVHD -path \"c:\\templates\\Windows 2008.vhd\" -computer HYPERV01\n");
|
||||
|
||||
Console.WriteLine("SUPPORTED COMMANDS:");
|
||||
Console.WriteLine(" MountVHD - mounts VHD.");
|
||||
Console.WriteLine(" Parameters:");
|
||||
Console.WriteLine(" -path - path to VHD file.");
|
||||
Console.WriteLine(" -computer - (optional) remote computer with Hyper-V role installed.");
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine(" UnmountVHD - unmounts VHD.");
|
||||
Console.WriteLine(" Parameters:");
|
||||
Console.WriteLine(" -path - path to VHD file.");
|
||||
Console.WriteLine(" -computer - (optional) remote computer with Hyper-V role installed.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
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("Hyper-V Utilities")]
|
||||
[assembly: AssemblyDescription("Utility to work with Hyper-V virtual resources.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("VmUtils")]
|
||||
[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("c72a836b-0d6e-482f-afba-8c03964d9933")]
|
|
@ -0,0 +1,51 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
public enum ReturnCode
|
||||
{
|
||||
OK = 0,
|
||||
JobStarted = 4096,
|
||||
Failed = 32768,
|
||||
AccessDenied = 32769,
|
||||
NotSupported = 32770,
|
||||
Unknown = 32771,
|
||||
Timeout = 32772,
|
||||
InvalidParameter = 32773,
|
||||
SystemIsInUse = 32774,
|
||||
InvalidStateForThisOperation = 32775,
|
||||
IncorrectDataType = 32776,
|
||||
SystemIsNotAvailable = 32777,
|
||||
OutOfMemory = 32778
|
||||
}
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{824FB237-2208-4BD7-9F61-413DC2A32827}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WebsitePanel.HyperV.Utils</RootNamespace>
|
||||
<AssemblyName>WebsitePanel.HyperV.Utils</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<StartupObject>WebsitePanel.HyperV.Utils.Program</StartupObject>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Storage.Vds, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\Lib\Microsoft.Storage.Vds.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\VersionInfo.cs">
|
||||
<Link>VersionInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="ConcreteJob.cs" />
|
||||
<Compile Include="ConcreteJobState.cs" />
|
||||
<Compile Include="JobResult.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ResultCode.cs" />
|
||||
<Compile Include="Wmi.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,306 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Management;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace WebsitePanel.HyperV.Utils
|
||||
{
|
||||
internal class Wmi
|
||||
{
|
||||
string nameSpace = null;
|
||||
string computerName = null;
|
||||
ManagementScope scope = null;
|
||||
|
||||
public Wmi(string nameSpace)
|
||||
: this(nameSpace, null)
|
||||
{
|
||||
}
|
||||
|
||||
public Wmi(string computerName, string nameSpace)
|
||||
{
|
||||
this.nameSpace = nameSpace;
|
||||
this.computerName = computerName;
|
||||
}
|
||||
|
||||
internal ManagementObjectCollection ExecuteWmiQuery(string query, params object[] args)
|
||||
{
|
||||
if (args != null && args.Length > 0)
|
||||
query = String.Format(query, args);
|
||||
|
||||
ManagementObjectSearcher searcher = new ManagementObjectSearcher(GetScope(),
|
||||
new ObjectQuery(query));
|
||||
return searcher.Get();
|
||||
}
|
||||
|
||||
internal ManagementObject GetWmiObject(string className, string filter, params object[] args)
|
||||
{
|
||||
ManagementObjectCollection col = GetWmiObjects(className, filter, args);
|
||||
ManagementObjectCollection.ManagementObjectEnumerator enumerator = col.GetEnumerator();
|
||||
return enumerator.MoveNext() ? (ManagementObject)enumerator.Current : null;
|
||||
}
|
||||
|
||||
internal ManagementObject GetWmiObject(string className)
|
||||
{
|
||||
return GetWmiObject(className, null);
|
||||
}
|
||||
|
||||
internal ManagementObjectCollection GetWmiObjects(string className, string filter, params object[] args)
|
||||
{
|
||||
string query = "select * from " + className;
|
||||
if (!String.IsNullOrEmpty(filter))
|
||||
query += " where " + filter;
|
||||
return ExecuteWmiQuery(query, args);
|
||||
}
|
||||
|
||||
internal ManagementObjectCollection GetWmiObjects(string className)
|
||||
{
|
||||
return GetWmiObjects(className, null);
|
||||
}
|
||||
|
||||
internal ManagementObject GetWmiObjectByPath(string path)
|
||||
{
|
||||
return new ManagementObject(GetScope(), new ManagementPath(path), null);
|
||||
}
|
||||
|
||||
internal ManagementClass GetWmiClass(string className)
|
||||
{
|
||||
return new ManagementClass(GetScope(), new ManagementPath(className), null);
|
||||
}
|
||||
|
||||
internal ManagementObject GetRelatedWmiObject(ManagementObject obj, string className)
|
||||
{
|
||||
ManagementObjectCollection col = obj.GetRelated(className);
|
||||
ManagementObjectCollection.ManagementObjectEnumerator enumerator = col.GetEnumerator();
|
||||
enumerator.MoveNext();
|
||||
return (ManagementObject)enumerator.Current;
|
||||
}
|
||||
|
||||
internal void Dump(ManagementBaseObject obj)
|
||||
{
|
||||
#if DEBUG
|
||||
foreach (PropertyData prop in obj.Properties)
|
||||
{
|
||||
string typeName = prop.Value == null ? "null" : prop.Value.GetType().ToString();
|
||||
Debug.WriteLine(prop.Name + ": " + prop.Value + " (" + typeName + ")");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Converts a given datetime in DMTF format to System.DateTime object.
|
||||
internal System.DateTime ToDateTime(string dmtfDate)
|
||||
{
|
||||
System.DateTime initializer = System.DateTime.MinValue;
|
||||
int year = initializer.Year;
|
||||
int month = initializer.Month;
|
||||
int day = initializer.Day;
|
||||
int hour = initializer.Hour;
|
||||
int minute = initializer.Minute;
|
||||
int second = initializer.Second;
|
||||
long ticks = 0;
|
||||
string dmtf = dmtfDate;
|
||||
System.DateTime datetime = System.DateTime.MinValue;
|
||||
string tempString = string.Empty;
|
||||
if (String.IsNullOrEmpty(dmtf))
|
||||
{
|
||||
return DateTime.MinValue;
|
||||
}
|
||||
else if ((dmtf.Length != 25))
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException();
|
||||
}
|
||||
try
|
||||
{
|
||||
tempString = dmtf.Substring(0, 4);
|
||||
if (("****" != tempString))
|
||||
{
|
||||
year = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(4, 2);
|
||||
if (("**" != tempString))
|
||||
{
|
||||
month = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(6, 2);
|
||||
if (("**" != tempString))
|
||||
{
|
||||
day = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(8, 2);
|
||||
if (("**" != tempString))
|
||||
{
|
||||
hour = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(10, 2);
|
||||
if (("**" != tempString))
|
||||
{
|
||||
minute = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(12, 2);
|
||||
if (("**" != tempString))
|
||||
{
|
||||
second = int.Parse(tempString);
|
||||
}
|
||||
tempString = dmtf.Substring(15, 6);
|
||||
if (("******" != tempString))
|
||||
{
|
||||
ticks = (long.Parse(tempString) * ((long)((System.TimeSpan.TicksPerMillisecond / 1000))));
|
||||
}
|
||||
if (((((((((year < 0)
|
||||
|| (month < 0))
|
||||
|| (day < 0))
|
||||
|| (hour < 0))
|
||||
|| (minute < 0))
|
||||
|| (minute < 0))
|
||||
|| (second < 0))
|
||||
|| (ticks < 0)))
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException(null, e.Message);
|
||||
}
|
||||
|
||||
if (year == 0
|
||||
&& month == 0
|
||||
&& day == 0
|
||||
&& hour == 0
|
||||
&& minute == 0
|
||||
&& second == 0
|
||||
&& ticks == 0)
|
||||
return DateTime.MinValue;
|
||||
|
||||
datetime = new System.DateTime(year, month, day, hour, minute, second, 0);
|
||||
datetime = datetime.AddTicks(ticks);
|
||||
System.TimeSpan tickOffset = System.TimeZone.CurrentTimeZone.GetUtcOffset(datetime);
|
||||
int UTCOffset = 0;
|
||||
int OffsetToBeAdjusted = 0;
|
||||
long OffsetMins = ((long)((tickOffset.Ticks / System.TimeSpan.TicksPerMinute)));
|
||||
tempString = dmtf.Substring(22, 3);
|
||||
if ((tempString != "******"))
|
||||
{
|
||||
tempString = dmtf.Substring(21, 4);
|
||||
try
|
||||
{
|
||||
UTCOffset = int.Parse(tempString);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException(null, e.Message);
|
||||
}
|
||||
OffsetToBeAdjusted = ((int)((OffsetMins - UTCOffset)));
|
||||
datetime = datetime.AddMinutes(((double)(OffsetToBeAdjusted)));
|
||||
}
|
||||
return datetime;
|
||||
}
|
||||
|
||||
// Converts a given System.DateTime object to DMTF datetime format.
|
||||
internal string ToDmtfDateTime(System.DateTime date)
|
||||
{
|
||||
string utcString = string.Empty;
|
||||
System.TimeSpan tickOffset = System.TimeZone.CurrentTimeZone.GetUtcOffset(date);
|
||||
long OffsetMins = ((long)((tickOffset.Ticks / System.TimeSpan.TicksPerMinute)));
|
||||
if ((System.Math.Abs(OffsetMins) > 999))
|
||||
{
|
||||
date = date.ToUniversalTime();
|
||||
utcString = "+000";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((tickOffset.Ticks >= 0))
|
||||
{
|
||||
utcString = string.Concat("+", ((System.Int64)((tickOffset.Ticks / System.TimeSpan.TicksPerMinute))).ToString().PadLeft(3, '0'));
|
||||
}
|
||||
else
|
||||
{
|
||||
string strTemp = ((System.Int64)(OffsetMins)).ToString();
|
||||
utcString = string.Concat("-", strTemp.Substring(1, (strTemp.Length - 1)).PadLeft(3, '0'));
|
||||
}
|
||||
}
|
||||
string dmtfDateTime = ((System.Int32)(date.Year)).ToString().PadLeft(4, '0');
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ((System.Int32)(date.Month)).ToString().PadLeft(2, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ((System.Int32)(date.Day)).ToString().PadLeft(2, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ((System.Int32)(date.Hour)).ToString().PadLeft(2, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ((System.Int32)(date.Minute)).ToString().PadLeft(2, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ((System.Int32)(date.Second)).ToString().PadLeft(2, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, ".");
|
||||
System.DateTime dtTemp = new System.DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, 0);
|
||||
long microsec = ((long)((((date.Ticks - dtTemp.Ticks)
|
||||
* 1000)
|
||||
/ System.TimeSpan.TicksPerMillisecond)));
|
||||
string strMicrosec = ((System.Int64)(microsec)).ToString();
|
||||
if ((strMicrosec.Length > 6))
|
||||
{
|
||||
strMicrosec = strMicrosec.Substring(0, 6);
|
||||
}
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, strMicrosec.PadLeft(6, '0'));
|
||||
dmtfDateTime = string.Concat(dmtfDateTime, utcString);
|
||||
return dmtfDateTime;
|
||||
}
|
||||
|
||||
public ManagementScope GetScope()
|
||||
{
|
||||
if (scope != null)
|
||||
return scope;
|
||||
|
||||
// create new scope
|
||||
if (String.IsNullOrEmpty(computerName))
|
||||
{
|
||||
// local
|
||||
scope = new ManagementScope(nameSpace);
|
||||
}
|
||||
else
|
||||
{
|
||||
// remote
|
||||
ConnectionOptions options = new ConnectionOptions();
|
||||
|
||||
string path = String.Format(@"\\{0}\{1}", computerName, nameSpace);
|
||||
scope = new ManagementScope(path, options);
|
||||
}
|
||||
|
||||
// connect
|
||||
try
|
||||
{
|
||||
scope.Connect();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
string computer = "";
|
||||
if (!String.IsNullOrEmpty(computerName))
|
||||
computer = " on computer \"" + computerName + "\"";
|
||||
throw new Exception("Hyper-V service could not be connected" + computer, ex);
|
||||
}
|
||||
return scope;
|
||||
}
|
||||
}
|
||||
}
|
BIN
WebsitePanel.Installer/Lib/Ionic.Zip.Reduced.dll
Normal file
BIN
WebsitePanel.Installer/Lib/Ionic.Zip.Reduced.dll
Normal file
Binary file not shown.
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Administration.dll
Normal file
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Administration.dll
Normal file
Binary file not shown.
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Management.dll
Normal file
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Management.dll
Normal file
Binary file not shown.
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Services3.dll
Normal file
BIN
WebsitePanel.Installer/Lib/Microsoft.Web.Services3.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
WebsitePanel.Installer/Lib/WebsitePanel.Providers.Base.dll
Normal file
BIN
WebsitePanel.Installer/Lib/WebsitePanel.Providers.Base.dll
Normal file
Binary file not shown.
45
WebsitePanel.Installer/Readme.htm
Normal file
45
WebsitePanel.Installer/Readme.htm
Normal file
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>WebsitePanel Installer - Readme</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
WebsitePanel Installer - Readme</h1>
|
||||
<p>
|
||||
WebsitePanel Installer is a Windows-based application to install and update WebsitePanel
|
||||
components.</p>
|
||||
<h2>
|
||||
License</h2>
|
||||
<p>
|
||||
WebsitePanel Installer is released under BSD license. Please see LICENSE.txt file
|
||||
in the root folder of this project.</p>
|
||||
<h2>
|
||||
Project Structure</h2>
|
||||
<p>
|
||||
The project has the following folders structure:</p>
|
||||
<ul>
|
||||
<li><strong>\Trunk</strong> - project version currently in development<ul>
|
||||
<li><strong>\Sources</strong> - project source codes.</li>
|
||||
<li><strong>\Lib</strong> - all referenced 3rd-party assemblies required to build the
|
||||
solution are placed in this folder.</li>
|
||||
<li><strong>\Docs</strong> - project documentation</li>
|
||||
</ul>
|
||||
</li>
|
||||
<ul>
|
||||
<li><strong>\Build</strong> - optional folder containing solution assemblies that are
|
||||
referenced from other projects</li>
|
||||
</ul>
|
||||
<li><strong>\Releases</strong> - contains all project releases</li>
|
||||
<li><strong>\Branches</strong> - contains project branches for proof-of-concepts, new
|
||||
development, bug fixing, etc.</li>
|
||||
<li><strong>LICENSE.txt</strong> - project license</li>
|
||||
<li><strong>Readme.htm</strong> - the file you are reading right now</li>
|
||||
<li><strong>ReleaseNotes.htm</strong> - project release notes</li>
|
||||
</ul>
|
||||
<h2>
|
||||
Build How-To</h2>
|
||||
<p>
|
||||
Open WebsitePanel.Installer.sln solution in Visual Studio 2010 and build it.</p>
|
||||
</body>
|
||||
</html>
|
20
WebsitePanel.Installer/ReleaseNotes.htm
Normal file
20
WebsitePanel.Installer/ReleaseNotes.htm
Normal file
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>WebsitePanel Installer - Release Notes</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
WebsitePanel Installer - Release Notes</h1>
|
||||
<p>
|
||||
<strong>March 15, 2011 - v1.2</strong></p>
|
||||
<ul>
|
||||
<li>Migrated project to .NET Framework 4.0</li>
|
||||
</ul>
|
||||
<p>
|
||||
<strong>April 16, 2010 - v1.0</strong></p>
|
||||
<ul>
|
||||
<li>Initial release of WebsitePanel Installer under BSD license.</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
10
WebsitePanel.Installer/Resources/CompileUpdater.bat
Normal file
10
WebsitePanel.Installer/Resources/CompileUpdater.bat
Normal file
|
@ -0,0 +1,10 @@
|
|||
@ECHO OFF
|
||||
set basedir=
|
||||
IF %1.==. GOTO NoArg
|
||||
set basedir=%1
|
||||
:NoArg
|
||||
set sourcedir=%basedir%WebsitePanel.Updater\bin
|
||||
set targetdir=%basedir%WebsitePanel.Installer
|
||||
|
||||
"%basedir%ILMerge.exe" "%sourcedir%\WebsitePanel.Updater.exe" "%sourcedir%\..\Lib\Ionic.Zip.Reduced.dll" /out:%targetdir%\Updater.exe
|
||||
del %targetdir%\Updater.pdb
|
6
WebsitePanel.Installer/Resources/Compute SHA1.bat
Normal file
6
WebsitePanel.Installer/Resources/Compute SHA1.bat
Normal file
|
@ -0,0 +1,6 @@
|
|||
@ECHO OFF
|
||||
|
||||
fciv.exe "..\Build\debug\WebsitePanelInstaller11.msi" -sha1 > "..\Build\debug\SHA1.log"
|
||||
fciv.exe "..\Build\release\WebsitePanelInstaller11.msi" -sha1 > "..\Build\release\SHA1.log"
|
||||
|
||||
PAUSE
|
BIN
WebsitePanel.Installer/Resources/ILMerge.exe
Normal file
BIN
WebsitePanel.Installer/Resources/ILMerge.exe
Normal file
Binary file not shown.
BIN
WebsitePanel.Installer/Sources/Setup/Banner.bmp
Normal file
BIN
WebsitePanel.Installer/Sources/Setup/Banner.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
BIN
WebsitePanel.Installer/Sources/Setup/Installer.ico
Normal file
BIN
WebsitePanel.Installer/Sources/Setup/Installer.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
1120
WebsitePanel.Installer/Sources/Setup/Setup.vdproj
Normal file
1120
WebsitePanel.Installer/Sources/Setup/Setup.vdproj
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,7 @@
|
|||
[DEFAULT]
|
||||
BASEURL=http://help.websitepanel.net/
|
||||
[InternetShortcut]
|
||||
URL=http://help.websitepanel.net/
|
||||
IDList=
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
|
@ -0,0 +1,9 @@
|
|||
[DEFAULT]
|
||||
BASEURL=http://www.websitepanel.net/
|
||||
[InternetShortcut]
|
||||
URL=http://www.websitepanel.net/
|
||||
IDList=
|
||||
IconFile=http://www.websitepanel.net/__utility/img/favicon.ico
|
||||
IconIndex=1
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
41
WebsitePanel.Installer/Sources/VersionInfo.cs
Normal file
41
WebsitePanel.Installer/Sources/VersionInfo.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Reflection;
|
||||
// Release information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Release
|
||||
// Minor Release
|
||||
// Build Number
|
||||
// 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")]
|
|
@ -0,0 +1,107 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using WebsitePanel.Installer.Common;
|
||||
using System.Configuration;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
|
||||
namespace WebsitePanel.Installer.Core
|
||||
{
|
||||
public sealed class AppConfigManager
|
||||
{
|
||||
private static System.Configuration.Configuration appConfig;
|
||||
public const string AppConfigFileNameWithoutExtension = "WebsitePanel.Installer.exe";
|
||||
|
||||
static AppConfigManager()
|
||||
{
|
||||
LoadConfiguration();
|
||||
}
|
||||
|
||||
#region Core.Configuration
|
||||
/// <summary>
|
||||
/// Loads application configuration
|
||||
/// </summary>
|
||||
public static void LoadConfiguration()
|
||||
{
|
||||
Log.WriteStart("Loading application configuration");
|
||||
//
|
||||
var exePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppConfigFileNameWithoutExtension);
|
||||
//
|
||||
appConfig = ConfigurationManager.OpenExeConfiguration(exePath);
|
||||
//
|
||||
Log.WriteEnd("Application configuration loaded");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns application configuration section
|
||||
/// </summary>
|
||||
public static InstallerSection AppConfiguration
|
||||
{
|
||||
get
|
||||
{
|
||||
return appConfig.GetSection("installer") as InstallerSection;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves application configuration
|
||||
/// </summary>
|
||||
public static void SaveConfiguration(bool showAlert)
|
||||
{
|
||||
if (appConfig != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.WriteStart("Saving application configuration");
|
||||
appConfig.Save();
|
||||
Log.WriteEnd("Application configuration saved");
|
||||
if (showAlert)
|
||||
{
|
||||
//ShowInfo("Application settings updated successfully.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Core.Configuration error", ex);
|
||||
if (showAlert)
|
||||
{
|
||||
//ShowError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Security.Policy;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Runtime.Remoting.Lifetime;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
[Serializable]
|
||||
public class AssemblyLoader : MarshalByRefObject
|
||||
{
|
||||
public object RemoteRun(string fileName, string typeName, string methodName, object[] parameters)
|
||||
{
|
||||
Assembly assembly = Assembly.LoadFrom(fileName);
|
||||
Type type = assembly.GetType(typeName);
|
||||
MethodInfo method = type.GetMethod(methodName);
|
||||
return method.Invoke(Activator.CreateInstance(type), parameters);
|
||||
}
|
||||
|
||||
public void AddTraceListener(TraceListener traceListener)
|
||||
{
|
||||
Trace.Listeners.Add(traceListener);
|
||||
}
|
||||
|
||||
public static object Execute(string fileName, string typeName, string methodName, object[] parameters)
|
||||
{
|
||||
AppDomain domain = null;
|
||||
try
|
||||
{
|
||||
Evidence securityInfo = AppDomain.CurrentDomain.Evidence;
|
||||
AppDomainSetup info = new AppDomainSetup();
|
||||
info.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
|
||||
|
||||
domain = AppDomain.CreateDomain("Remote Domain", securityInfo, info);
|
||||
domain.InitializeLifetimeService();
|
||||
domain.UnhandledException += new UnhandledExceptionEventHandler(OnDomainUnhandledException);
|
||||
AssemblyLoader loader = (AssemblyLoader)domain.CreateInstanceAndUnwrap(
|
||||
typeof(AssemblyLoader).Assembly.FullName,
|
||||
typeof(AssemblyLoader).FullName);
|
||||
|
||||
foreach (TraceListener listener in Trace.Listeners)
|
||||
{
|
||||
loader.AddTraceListener(listener);
|
||||
}
|
||||
|
||||
object ret = loader.RemoteRun(fileName, typeName, methodName, parameters);
|
||||
AppDomain.Unload(domain);
|
||||
return ret;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (domain != null)
|
||||
{
|
||||
AppDomain.Unload(domain);
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
static void OnDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
Log.WriteError("Remote domain error", (Exception)e.ExceptionObject);
|
||||
}
|
||||
|
||||
public static string GetShellVersion()
|
||||
{
|
||||
return Assembly.GetEntryAssembly().GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,271 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.IO;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// File utils.
|
||||
/// </summary>
|
||||
public sealed class FileUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the class.
|
||||
/// </summary>
|
||||
private FileUtils()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates drectory with the specified directory.
|
||||
/// </summary>
|
||||
/// <param name="path">The directory path to create.</param>
|
||||
public static void CreateDirectory(string path)
|
||||
{
|
||||
string dir = Path.GetDirectoryName(path);
|
||||
if(!Directory.Exists(dir))
|
||||
{
|
||||
// create directory structure
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves file content.
|
||||
/// </summary>
|
||||
/// <param name="fileName">File name.</param>
|
||||
/// <param name="content">The array of bytes to write.</param>
|
||||
public static void SaveFileContent(string fileName, byte[] content)
|
||||
{
|
||||
FileStream stream = new FileStream(fileName, FileMode.Create);
|
||||
stream.Write(content, 0, content.Length);
|
||||
stream.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves file content.
|
||||
/// </summary>
|
||||
/// <param name="fileName">File name.</param>
|
||||
/// <param name="content">The array of bytes to write.</param>
|
||||
public static void AppendFileContent(string fileName, byte[] content)
|
||||
{
|
||||
FileStream stream = new FileStream(fileName, FileMode.Append, FileAccess.Write);
|
||||
stream.Write(content, 0, content.Length);
|
||||
stream.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified file.
|
||||
/// </summary>
|
||||
/// <param name="fileName">The name of the file to be deleted.</param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified file.
|
||||
/// </summary>
|
||||
/// <param name="fileName">The name of the file to be deleted.</param>
|
||||
private static void DeleteReadOnlyFile(string fileName)
|
||||
{
|
||||
FileInfo info = new FileInfo(fileName);
|
||||
info.Attributes = FileAttributes.Normal;
|
||||
info.Delete();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified file.
|
||||
/// </summary>
|
||||
/// <param name="fileName">The name of the file to be deleted.</param>
|
||||
private static void DeleteFileInternal(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(fileName);
|
||||
}
|
||||
catch (UnauthorizedAccessException)
|
||||
{
|
||||
DeleteReadOnlyFile(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified directory.
|
||||
/// </summary>
|
||||
/// <param name="directory">The name of the directory to be deleted.</param>
|
||||
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 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;
|
||||
|
||||
attempts++;
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified directory.
|
||||
/// </summary>
|
||||
/// <param name="directory">The name of the directory to be deleted.</param>
|
||||
private static void DeleteDirectoryInternal(string directory)
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.Delete(directory);
|
||||
}
|
||||
catch (IOException)
|
||||
{
|
||||
DeleteReadOnlyDirectory(directory);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes the specified directory.
|
||||
/// </summary>
|
||||
/// <param name="directory">The name of the directory to be deleted.</param>
|
||||
private static void DeleteReadOnlyDirectory(string directory)
|
||||
{
|
||||
DirectoryInfo info = new DirectoryInfo(directory);
|
||||
info.Attributes = FileAttributes.Normal;
|
||||
info.Delete();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether the specified file exists.
|
||||
/// </summary>
|
||||
/// <param name="fileName">The path to check.</param>
|
||||
/// <returns></returns>
|
||||
public static bool FileExists(string fileName)
|
||||
{
|
||||
return File.Exists(fileName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether the given path refers to an existing directory on disk.
|
||||
/// </summary>
|
||||
/// <param name="path">The path to test.</param>
|
||||
/// <returns></returns>
|
||||
public static bool DirectoryExists(string path)
|
||||
{
|
||||
return Directory.Exists(path);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns current application path.
|
||||
/// </summary>
|
||||
/// <returns>Curent application path.</returns>
|
||||
public static string GetCurrentDirectory()
|
||||
{
|
||||
return AppDomain.CurrentDomain.BaseDirectory;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns application temp directory.
|
||||
/// </summary>
|
||||
/// <returns>Application temp directory.</returns>
|
||||
public static string GetTempDirectory()
|
||||
{
|
||||
return Path.Combine(GetCurrentDirectory(), "Tmp");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns application data directory.
|
||||
/// </summary>
|
||||
/// <returns>Application data directory.</returns>
|
||||
public static string GetDataDirectory()
|
||||
{
|
||||
return Path.Combine(GetCurrentDirectory(), "Data");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes application temp directory.
|
||||
/// </summary>
|
||||
public static void DeleteTempDirectory()
|
||||
{
|
||||
try
|
||||
{
|
||||
DeleteDirectory(GetTempDirectory());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("IO Error", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,250 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Xml;
|
||||
using System.EnterpriseServices;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
public class Global
|
||||
{
|
||||
public const string VisualInstallerShell = "VisualInstallerShell";
|
||||
public const string SilentInstallerShell = "SilentInstallerShell";
|
||||
public const string DefaultInstallPathRoot = @"C:\WebsitePanel";
|
||||
public const string LoopbackIPv4 = "127.0.0.1";
|
||||
public const string InstallerProductCode = "cfg core";
|
||||
|
||||
public abstract class Parameters
|
||||
{
|
||||
public const string ComponentId = "ComponentId";
|
||||
public const string EnterpriseServerUrl = "EnterpriseServerUrl";
|
||||
public const string ShellMode = "ShellMode";
|
||||
public const string ShellVersion = "ShellVersion";
|
||||
public const string IISVersion = "IISVersion";
|
||||
public const string BaseDirectory = "BaseDirectory";
|
||||
public const string Installer = "Installer";
|
||||
public const string InstallerType = "InstallerType";
|
||||
public const string InstallerPath = "InstallerPath";
|
||||
public const string InstallerFolder = "InstallerFolder";
|
||||
public const string Version = "Version";
|
||||
public const string ComponentDescription = "ComponentDescription";
|
||||
public const string ComponentCode = "ComponentCode";
|
||||
public const string ApplicationName = "ApplicationName";
|
||||
public const string ComponentName = "ComponentName";
|
||||
public const string WebSiteIP = "WebSiteIP";
|
||||
public const string WebSitePort = "WebSitePort";
|
||||
public const string WebSiteDomain = "WebSiteDomain";
|
||||
public const string ServerPassword = "ServerPassword";
|
||||
public const string UserDomain = "UserDomain";
|
||||
public const string UserAccount = "UserAccount";
|
||||
public const string UserPassword = "UserPassword";
|
||||
public const string CryptoKey = "CryptoKey";
|
||||
public const string ServerAdminPassword = "ServerAdminPassword";
|
||||
public const string SetupXml = "SetupXml";
|
||||
public const string ParentForm = "ParentForm";
|
||||
public const string Component = "Component";
|
||||
public const string FullFilePath = "FullFilePath";
|
||||
public const string DatabaseServer = "DatabaseServer";
|
||||
public const string DbServerAdmin = "DbServerAdmin";
|
||||
public const string DbServerAdminPassword = "DbServerAdminPassword";
|
||||
public const string DatabaseName = "DatabaseName";
|
||||
public const string ConnectionString = "ConnectionString";
|
||||
public const string InstallConnectionString = "InstallConnectionString";
|
||||
public const string Release = "Release";
|
||||
}
|
||||
|
||||
public abstract class Messages
|
||||
{
|
||||
public const string NotEnoughPermissionsError = "You do not have the appropriate permissions to perform this operation. Make sure you are running the application from the local disk and you have local system administrator privileges.";
|
||||
public const string InstallerVersionIsObsolete = "WebsitePanel Installer {0} or higher required.";
|
||||
public const string ComponentIsAlreadyInstalled = "Component or its part is already installed.";
|
||||
public const string AnotherInstanceIsRunning = "Another instance of the installation process is already running.";
|
||||
public const string NoInputParametersSpecified = "No input parameters specified";
|
||||
public const int InstallationError = -1000;
|
||||
public const int UnknownComponentCodeError = -999;
|
||||
public const int SuccessInstallation = 0;
|
||||
public const int AnotherInstanceIsRunningError = -998;
|
||||
public const int NotEnoughPermissionsErrorCode = -997;
|
||||
public const int NoInputParametersSpecifiedError = -996;
|
||||
public const int ComponentIsAlreadyInstalledError = -995;
|
||||
}
|
||||
|
||||
public abstract class Server
|
||||
{
|
||||
public abstract class CLI
|
||||
{
|
||||
public const string ServerPassword = "passw";
|
||||
};
|
||||
|
||||
public const string ComponentName = "Server";
|
||||
public const string ComponentCode = "server";
|
||||
public const string ComponentDescription = "WebsitePanel Server is a set of services running on the remote server to be controlled. Server application should be reachable from Enterprise Server one.";
|
||||
public const string ServiceAccount = "WPServer";
|
||||
public const string DefaultPort = "9003";
|
||||
public const string DefaultIP = "127.0.0.1";
|
||||
public const string SetupController = "Server";
|
||||
}
|
||||
|
||||
public abstract class StandaloneServer
|
||||
{
|
||||
public const string SetupController = "StandaloneServerSetup";
|
||||
public const string ComponentCode = "standalone";
|
||||
public const string ComponentName = "Standalone Server Setup";
|
||||
}
|
||||
|
||||
public abstract class WebPortal
|
||||
{
|
||||
public const string ComponentName = "Portal";
|
||||
public const string ComponentDescription = "WebsitePanel Portal is a control panel itself with user interface which allows managing user accounts, hosting spaces, web sites, FTP accounts, files, etc.";
|
||||
public const string ServiceAccount = "WPPortal";
|
||||
public const string DefaultPort = "9001";
|
||||
public const string DefaultIP = "";
|
||||
public const string DefaultEntServURL = "http://127.0.0.1:9002";
|
||||
public const string ComponentCode = "portal";
|
||||
public const string SetupController = "Portal";
|
||||
|
||||
public static string[] ServiceUserMembership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IISVersion.Major == 7)
|
||||
{
|
||||
return new string[] { "IIS_IUSRS" };
|
||||
}
|
||||
//
|
||||
return new string[] { "IIS_WPG" };
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class CLI
|
||||
{
|
||||
public const string EnterpriseServerUrl = "esurl";
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class EntServer
|
||||
{
|
||||
public const string ComponentName = "Enterprise Server";
|
||||
public const string ComponentDescription = "Enterprise Server is the heart of WebsitePanel system. It includes all business logic of the application. Enterprise Server should have access to Server and be accessible from Portal applications.";
|
||||
public const string ServiceAccount = "WPEnterpriseServer";
|
||||
public const string DefaultPort = "9002";
|
||||
public const string DefaultIP = "127.0.0.1";
|
||||
public const string DefaultDbServer = @"localhost\sqlexpress";
|
||||
public const string DefaultDatabase = "WebsitePanel";
|
||||
public const string AspNetConnectionStringFormat = "server={0};database={1};uid={2};pwd={3};";
|
||||
public const string ComponentCode = "enterprise server";
|
||||
public const string SetupController = "EnterpriseServer";
|
||||
|
||||
public static string[] ServiceUserMembership
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IISVersion.Major == 7)
|
||||
{
|
||||
return new string[] { "IIS_IUSRS" };
|
||||
}
|
||||
//
|
||||
return new string[] { "IIS_WPG" };
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class CLI
|
||||
{
|
||||
public const string ServeradminPassword = "passw";
|
||||
public const string DatabaseName = "dbname";
|
||||
public const string DatabaseServer = "dbserver";
|
||||
public const string DbServerAdmin = "dbadmin";
|
||||
public const string DbServerAdminPassword = "dbapassw";
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class CLI
|
||||
{
|
||||
public const string WebSiteIP = "webip";
|
||||
public const string ServiceAccountPassword = "upassw";
|
||||
public const string ServiceAccountDomain = "udomaim";
|
||||
public const string ServiceAccountName = "uname";
|
||||
public const string WebSitePort = "webport";
|
||||
public const string WebSiteDomain = "webdom";
|
||||
}
|
||||
|
||||
private Global()
|
||||
{
|
||||
}
|
||||
|
||||
private static Version iisVersion;
|
||||
//
|
||||
public static Version IISVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
if (iisVersion == null)
|
||||
{
|
||||
iisVersion = RegistryUtils.GetIISVersion();
|
||||
}
|
||||
//
|
||||
return iisVersion;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
private static OS.WindowsVersion osVersion = OS.WindowsVersion.Unknown;
|
||||
|
||||
/// <summary>
|
||||
/// Represents Setup Control Panel Accounts system settings set (SCPA)
|
||||
/// </summary>
|
||||
public class SCPA
|
||||
{
|
||||
public const string SettingsKeyName = "EnabledSCPA";
|
||||
}
|
||||
|
||||
public static OS.WindowsVersion OSVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
if (osVersion == OS.WindowsVersion.Unknown)
|
||||
{
|
||||
osVersion = OS.GetVersion();
|
||||
}
|
||||
//
|
||||
return osVersion;
|
||||
}
|
||||
}
|
||||
|
||||
public static XmlDocument SetupXmlDocument { get; set; }
|
||||
}
|
||||
|
||||
public class SetupEventArgs<T> : EventArgs
|
||||
{
|
||||
public T EventData { get; set; }
|
||||
public string EventMessage { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,245 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.Security.Principal;
|
||||
using WebsitePanel.Installer.Core;
|
||||
using System.Reflection;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Installer Log.
|
||||
/// </summary>
|
||||
public sealed class Log
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the class.
|
||||
/// </summary>
|
||||
private Log()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes trace listeners.
|
||||
/// </summary>
|
||||
static Log()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
static void Initialize()
|
||||
{
|
||||
string fileName = LogFile;
|
||||
//
|
||||
Trace.Listeners.Clear();
|
||||
//
|
||||
FileStream fileLog = new FileStream(fileName, FileMode.Append);
|
||||
//
|
||||
TextWriterTraceListener fileListener = new TextWriterTraceListener(fileLog);
|
||||
fileListener.TraceOutputOptions = TraceOptions.DateTime;
|
||||
Trace.Listeners.Add(fileListener);
|
||||
//
|
||||
Trace.AutoFlush = true;
|
||||
}
|
||||
|
||||
internal static string LogFile
|
||||
{
|
||||
get
|
||||
{
|
||||
string fileName = "WebsitePanel.Installer.log";
|
||||
//
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
fileName = "Installer.log";
|
||||
}
|
||||
// Ensure the path is correct
|
||||
if (!Path.IsPathRooted(fileName))
|
||||
{
|
||||
fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
|
||||
}
|
||||
//
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write error to the log.
|
||||
/// </summary>
|
||||
/// <param name="message">Error message.</param>
|
||||
/// <param name="ex">Exception.</param>
|
||||
public static void WriteError(string message, Exception ex)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] ERROR: {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
Trace.WriteLine(ex);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write error to the log.
|
||||
/// </summary>
|
||||
/// <param name="message">Error message.</param>
|
||||
public static void WriteError(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] ERROR: {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write to log
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void Write(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] {1}", DateTime.Now, message);
|
||||
Trace.Write(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Write line to log
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void WriteLine(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Writes formatted informational message into the log
|
||||
/// </summary>
|
||||
/// <param name="format"></param>
|
||||
/// <param name="args"></param>
|
||||
public static void WriteInfo(string format, params object[] args)
|
||||
{
|
||||
WriteInfo(String.Format(format, args));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write info message to log
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void WriteInfo(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] INFO: {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write start message to log
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void WriteStart(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] START: {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write end message to log
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
public static void WriteEnd(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
string line = string.Format("[{0:G}] END: {1}", DateTime.Now, message);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public static void WriteApplicationStart()
|
||||
{
|
||||
try
|
||||
{
|
||||
string name = Assembly.GetEntryAssembly().GetName().Name;
|
||||
string version = Assembly.GetEntryAssembly().GetName().Version.ToString();
|
||||
string identity = WindowsIdentity.GetCurrent().Name;
|
||||
string line = string.Format("[{0:G}] {1} {2} Started by {3}", DateTime.Now, name, version, identity);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public static void WriteApplicationEnd()
|
||||
{
|
||||
try
|
||||
{
|
||||
string name = Assembly.GetEntryAssembly().GetName().Name;
|
||||
string line = string.Format("[{0:G}] {1} Ended", DateTime.Now, name);
|
||||
Trace.WriteLine(line);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens notepad to view log file.
|
||||
/// </summary>
|
||||
public static void ShowLogFile()
|
||||
{
|
||||
try
|
||||
{
|
||||
string path = LogFile;
|
||||
path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path);
|
||||
Process.Start("notepad.exe", path);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,386 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
public sealed class OS
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct OSVERSIONINFO
|
||||
{
|
||||
public Int32 dwOSVersionInfoSize;
|
||||
public Int32 dwMajorVersion;
|
||||
public Int32 dwMinorVersion;
|
||||
public Int32 dwBuildNumber;
|
||||
public Int32 dwPlatformID;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||
public string szCSDVersion;
|
||||
}
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct OSVERSIONINFOEX
|
||||
{
|
||||
public Int32 dwOSVersionInfoSize;
|
||||
public Int32 dwMajorVersion;
|
||||
public Int32 dwMinorVersion;
|
||||
public Int32 dwBuildNumber;
|
||||
public Int32 dwPlatformID;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
||||
public string szCSDVersion;
|
||||
public short wServicePackMajor;
|
||||
public short wServicePackMinor;
|
||||
public short wSuiteMask;
|
||||
public byte wProductType;
|
||||
public byte wReserved;
|
||||
}
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct SYSTEM_INFO
|
||||
{
|
||||
public Int32 dwOemID;
|
||||
public Int32 dwPageSize;
|
||||
public Int32 wProcessorArchitecture;
|
||||
public Int32 lpMinimumApplicationAddress;
|
||||
public Int32 lpMaximumApplicationAddress;
|
||||
public Int32 dwActiveProcessorMask;
|
||||
public Int32 dwNumberOrfProcessors;
|
||||
public Int32 dwProcessorType;
|
||||
public Int32 dwAllocationGranularity;
|
||||
public Int32 dwReserved;
|
||||
}
|
||||
public enum WinSuiteMask : int
|
||||
{
|
||||
VER_SUITE_SMALLBUSINESS = 1,
|
||||
VER_SUITE_ENTERPRISE = 2,
|
||||
VER_SUITE_BACKOFFICE = 4,
|
||||
VER_SUITE_COMMUNICATIONS = 8,
|
||||
VER_SUITE_TERMINAL = 16,
|
||||
VER_SUITE_SMALLBUSINESS_RESTRICTED = 32,
|
||||
VER_SUITE_EMBEDDEDNT = 64,
|
||||
VER_SUITE_DATACENTER = 128,
|
||||
VER_SUITE_SINGLEUSERTS = 256,
|
||||
VER_SUITE_PERSONAL = 512,
|
||||
VER_SUITE_BLADE = 1024,
|
||||
VER_SUITE_STORAGE_SERVER = 8192,
|
||||
VER_SUITE_COMPUTE_SERVER = 16384
|
||||
}
|
||||
public enum WinPlatform : byte
|
||||
{
|
||||
VER_NT_WORKSTATION = 1,
|
||||
VER_NT_DOMAIN_CONTROLLER = 2,
|
||||
VER_NT_SERVER = 3
|
||||
}
|
||||
public enum OSMajorVersion : byte
|
||||
{
|
||||
VER_OS_NT4 = 4,
|
||||
VER_OS_2K_XP_2K3 = 5,
|
||||
VER_OS_VISTA_LONGHORN = 6
|
||||
}
|
||||
|
||||
private const Int32 SM_SERVERR2 = 89;
|
||||
private const Int32 SM_MEDIACENTER = 87;
|
||||
private const Int32 SM_TABLETPC = 86;
|
||||
|
||||
[DllImport("kernel32")]
|
||||
private static extern int GetSystemInfo(ref SYSTEM_INFO lpSystemInfo);
|
||||
[DllImport("user32")]
|
||||
private static extern int GetSystemMetrics(int nIndex);
|
||||
[DllImport("kernel32", EntryPoint = "GetVersion")]
|
||||
private static extern int GetVersionAdv(ref OSVERSIONINFO lpVersionInformation);
|
||||
[DllImport("kernel32")]
|
||||
private static extern int GetVersionEx(ref OSVERSIONINFOEX lpVersionInformation);
|
||||
|
||||
|
||||
/*public static string GetVersionEx()
|
||||
{
|
||||
OSVERSIONINFO osvi = new OSVERSIONINFO();
|
||||
OSVERSIONINFOEX xosvi = new OSVERSIONINFOEX();
|
||||
Int32 iRet = 0;
|
||||
string strDetails = string.Empty;
|
||||
osvi.dwOSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFO));
|
||||
xosvi.dwOSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX));
|
||||
try
|
||||
{
|
||||
iRet = (int)System.Environment.OSVersion.Platform;
|
||||
if (iRet == 1)
|
||||
{
|
||||
iRet = GetVersionAdv(ref osvi);
|
||||
strDetails = Environment.NewLine + "Version: " + osvi.dwMajorVersion + "." + osvi.dwMinorVersion + "." + osvi.dwBuildNumber + Environment.NewLine + osvi.szCSDVersion;
|
||||
if (Len(osvi) == 0)
|
||||
{
|
||||
return "Windows 95" + strDetails;
|
||||
}
|
||||
else if (Len(osvi) == 10)
|
||||
{
|
||||
return "Windows 98" + strDetails;
|
||||
}
|
||||
else if (Len(osvi) == 9)
|
||||
{
|
||||
return "Windows ME" + strDetails;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
iRet = GetVersionEx(xosvi);
|
||||
strDetails = Environment.NewLine + "Version: " + xosvi.dwMajorVersion + "." + xosvi.dwMinorVersion + "." + xosvi.dwBuildNumber + Environment.NewLine + xosvi.szCSDVersion + " (" + xosvi.wServicePackMajor + "." + xosvi.wServicePackMinor + ")";
|
||||
if (xosvi.dwMajorVersion == (byte)OSMajorVersion.VER_OS_NT4)
|
||||
{
|
||||
return "Windows NT 4" + strDetails;
|
||||
}
|
||||
else if (xosvi.dwMajorVersion == OSMajorVersion.VER_OS_2K_XP_2K3)
|
||||
{
|
||||
if (xosvi.dwMinorVersion == 0)
|
||||
{
|
||||
if (xosvi.wProductType == WinPlatform.VER_NT_WORKSTATION)
|
||||
{
|
||||
return "Windows 2000 Pro" + strDetails;
|
||||
}
|
||||
else if (xosvi.wProductType == WinPlatform.VER_NT_SERVER)
|
||||
{
|
||||
if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_DATACENTER) == WinSuiteMask.VER_SUITE_DATACENTER)
|
||||
{
|
||||
return "Windows 2000 Datacenter Server" + strDetails;
|
||||
}
|
||||
else if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_ENTERPRISE) == WinSuiteMask.VER_SUITE_ENTERPRISE)
|
||||
{
|
||||
return "Windows 2000 Advanced Server" + strDetails;
|
||||
}
|
||||
else if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_SMALLBUSINESS) == WinSuiteMask.VER_SUITE_SMALLBUSINESS)
|
||||
{
|
||||
return "Windows 2000 Small Business Server" + strDetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows 2000 Server" + strDetails;
|
||||
}
|
||||
}
|
||||
else if (xosvi.wProductType == WinPlatform.VER_NT_DOMAIN_CONTROLLER)
|
||||
{
|
||||
if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_DATACENTER) == WinSuiteMask.VER_SUITE_DATACENTER)
|
||||
{
|
||||
return "Windows 2000 Datacenter Server Domain Controller" + strDetails;
|
||||
}
|
||||
else if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_ENTERPRISE) == WinSuiteMask.VER_SUITE_ENTERPRISE)
|
||||
{
|
||||
return "Windows 2000 Advanced Server Domain Controller" + strDetails;
|
||||
}
|
||||
else if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_SMALLBUSINESS) == WinSuiteMask.VER_SUITE_SMALLBUSINESS)
|
||||
{
|
||||
return "Windows 2000 Small Business Server Domain Controller" + strDetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows 2000 Server Domain Controller" + strDetails;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (xosvi.dwMinorVersion == 1)
|
||||
{
|
||||
if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_PERSONAL) == WinSuiteMask.VER_SUITE_PERSONAL)
|
||||
{
|
||||
return "Windows XP Home Edition" + strDetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows XP Professional Edition" + strDetails;
|
||||
}
|
||||
}
|
||||
else if (xosvi.dwMinorVersion == 2)
|
||||
{
|
||||
if (xosvi.wProductType == WinPlatform.VER_NT_WORKSTATION)
|
||||
{
|
||||
return "Windows XP Professional x64 Edition" + strDetails;
|
||||
}
|
||||
else if (xosvi.wProductType == WinPlatform.VER_NT_SERVER)
|
||||
{
|
||||
if (GetSystemMetrics(SM_SERVERR2) == 1)
|
||||
{
|
||||
return "Windows Server 2003 R2" + strDetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows Server 2003" + strDetails;
|
||||
}
|
||||
}
|
||||
else if (xosvi.wProductType == WinPlatform.VER_NT_DOMAIN_CONTROLLER)
|
||||
{
|
||||
if (GetSystemMetrics(SM_SERVERR2) == 1)
|
||||
{
|
||||
return "Windows Server 2003 R2 Domain Controller" + strDetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows Server 2003 Domain Controller" + strDetails;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (xosvi.dwMajorVersion == OSMajorVersion.VER_OS_VISTA_LONGHORN)
|
||||
{
|
||||
if (xosvi.wProductType == WinPlatform.VER_NT_WORKSTATION)
|
||||
{
|
||||
if ((xosvi.wSuiteMask & WinSuiteMask.VER_SUITE_PERSONAL) == WinSuiteMask.VER_SUITE_PERSONAL)
|
||||
{
|
||||
return "Windows Vista (Home Premium, Home Basic, or Home Ultimate) Edition";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows Vista (Enterprize or Business)" + strDetails;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Windows Server (Longhorn)" + strDetails;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show(GetLastError.ToString);
|
||||
return string.Empty;
|
||||
}
|
||||
}*/
|
||||
|
||||
public enum WindowsVersion
|
||||
{
|
||||
Unknown = 0,
|
||||
Windows95,
|
||||
Windows98,
|
||||
WindowsMe,
|
||||
WindowsNT351,
|
||||
WindowsNT4,
|
||||
Windows2000,
|
||||
WindowsXP,
|
||||
WindowsServer2003,
|
||||
Vista,
|
||||
WindowsServer2008
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine OS version
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static WindowsVersion GetVersion()
|
||||
{
|
||||
WindowsVersion ret = WindowsVersion.Unknown;
|
||||
|
||||
OSVERSIONINFOEX info = new OSVERSIONINFOEX();
|
||||
info.dwOSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX));
|
||||
GetVersionEx(ref info);
|
||||
|
||||
// Get OperatingSystem information from the system namespace.
|
||||
System.OperatingSystem osInfo = System.Environment.OSVersion;
|
||||
|
||||
// Determine the platform.
|
||||
switch (osInfo.Platform)
|
||||
{
|
||||
// Platform is Windows 95, Windows 98, Windows 98 Second Edition, or Windows Me.
|
||||
case System.PlatformID.Win32Windows:
|
||||
switch (osInfo.Version.Minor)
|
||||
{
|
||||
case 0:
|
||||
ret = WindowsVersion.Windows95;
|
||||
break;
|
||||
case 10:
|
||||
ret = WindowsVersion.Windows98;
|
||||
break;
|
||||
case 90:
|
||||
ret = WindowsVersion.WindowsMe;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
// Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000, or Windows XP.
|
||||
case System.PlatformID.Win32NT:
|
||||
switch (osInfo.Version.Major)
|
||||
{
|
||||
case 3:
|
||||
ret = WindowsVersion.WindowsNT351;
|
||||
break;
|
||||
case 4:
|
||||
ret = WindowsVersion.WindowsNT4;
|
||||
break;
|
||||
case 5:
|
||||
switch (osInfo.Version.Minor)
|
||||
{
|
||||
case 0:
|
||||
ret = WindowsVersion.Windows2000;
|
||||
break;
|
||||
case 1:
|
||||
ret = WindowsVersion.WindowsXP;
|
||||
break;
|
||||
case 2:
|
||||
int i = GetSystemMetrics(SM_SERVERR2);
|
||||
if (i != 0)
|
||||
{
|
||||
//Server 2003 R2
|
||||
ret = WindowsVersion.WindowsServer2003;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION)
|
||||
{
|
||||
//XP Pro x64
|
||||
ret = WindowsVersion.WindowsXP;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = WindowsVersion.WindowsServer2003;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION)
|
||||
ret = WindowsVersion.Vista;
|
||||
else
|
||||
ret = WindowsVersion.WindowsServer2008;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns Windows directory
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetWindowsDirectory()
|
||||
{
|
||||
return Environment.GetEnvironmentVariable("windir");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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 Microsoft.Win32;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Registry helper class.
|
||||
/// </summary>
|
||||
public sealed class RegistryUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the class.
|
||||
/// </summary>
|
||||
private RegistryUtils()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the specified value from the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to retrieve.</param>
|
||||
/// <returns>The data associated with name.</returns>
|
||||
public static string GetRegistryKeyStringValue(string subkey, string name)
|
||||
{
|
||||
string ret = null;
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
ret = (string)rk.GetValue(name, string.Empty);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the specified value from the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to retrieve.</param>
|
||||
/// <returns>The data associated with name.</returns>
|
||||
public static int GetRegistryKeyInt32Value(string subkey, string name)
|
||||
{
|
||||
int ret = 0;
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
ret = (int)rk.GetValue(name, 0);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves an array of strings that contains all the value names associated with this key.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <returns>An array of strings that contains the value names for the current key.</returns>
|
||||
public static string[] GetRegistryKeyValues(string subkey)
|
||||
{
|
||||
string[] ret = null;
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if (rk != null)
|
||||
{
|
||||
ret = rk.GetValueNames();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static RegistryValueKind GetRegistryKeyValueKind(string subkey, string name)
|
||||
{
|
||||
RegistryValueKind ret = RegistryValueKind.Unknown;
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if (rk != null)
|
||||
{
|
||||
ret = rk.GetValueKind(name);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the specified value from the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to retrieve.</param>
|
||||
/// <returns>The data associated with name.</returns>
|
||||
public static bool GetRegistryKeyBooleanValue(string subkey, string name)
|
||||
{
|
||||
bool ret = false;
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
string strValue = (string)rk.GetValue(name, "False");
|
||||
ret = Boolean.Parse(strValue);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a registry subkey and any child subkeys.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey to delete.</param>
|
||||
public static void DeleteRegistryKey(string subkey)
|
||||
{
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
root.DeleteSubKeyTree(subkey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the specified value to the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to store data in.</param>
|
||||
/// <param name="value">Data to store. </param>
|
||||
public static void SetRegistryKeyStringValue(string subkey, string name, string value)
|
||||
{
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.CreateSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
rk.SetValue(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the specified value to the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to store data in.</param>
|
||||
/// <param name="value">Data to store. </param>
|
||||
public static void SetRegistryKeyInt32Value(string subkey, string name, int value)
|
||||
{
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.CreateSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
rk.SetValue(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the specified value to the subkey.
|
||||
/// </summary>
|
||||
/// <param name="subkey">Subkey.</param>
|
||||
/// <param name="name">Name of value to store data in.</param>
|
||||
/// <param name="value">Data to store. </param>
|
||||
public static void SetRegistryKeyBooleanValue(string subkey, string name, bool value)
|
||||
{
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.CreateSubKey(subkey);
|
||||
if ( rk != null )
|
||||
{
|
||||
rk.SetValue(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the list of sub keys for the specified registry key.
|
||||
/// </summary>
|
||||
/// <param name="subkey">The name of the registry key</param>
|
||||
/// <returns>The array of subkey names.</returns>
|
||||
public static string[] GetRegistrySubKeys(string subkey)
|
||||
{
|
||||
string[] ret = new string[0];
|
||||
RegistryKey root = Registry.LocalMachine;
|
||||
RegistryKey rk = root.OpenSubKey(subkey);
|
||||
if (rk != null)
|
||||
ret = rk.GetSubKeyNames();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static Version GetIISVersion()
|
||||
{
|
||||
int major = GetRegistryKeyInt32Value("SOFTWARE\\Microsoft\\InetStp", "MajorVersion");
|
||||
int minor = GetRegistryKeyInt32Value("SOFTWARE\\Microsoft\\InetStp", "MinorVersion");
|
||||
return new Version(major, minor);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,393 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.DirectoryServices;
|
||||
using System.DirectoryServices.ActiveDirectory;
|
||||
|
||||
using System.Security.Principal;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
|
||||
using WebsitePanel.Installer.Core;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.Xml;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
public class UserDecisionEventArgs : EventArgs
|
||||
{
|
||||
public bool Accepted { get; set; }
|
||||
public string UserMessage { get; set; }
|
||||
}
|
||||
|
||||
public static class Utils
|
||||
{
|
||||
public static void FixConfigurationSectionDefinition()
|
||||
{
|
||||
var appConfigPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, String.Concat(AppConfigManager.AppConfigFileNameWithoutExtension, ".config"));
|
||||
//
|
||||
try
|
||||
{
|
||||
var configXmlDoc = new XmlDocument();
|
||||
//
|
||||
configXmlDoc.Load(appConfigPath);
|
||||
//
|
||||
var sectionDef = configXmlDoc.SelectSingleNode("//configSections/section[@name='installer']");
|
||||
//
|
||||
if (sectionDef == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//
|
||||
var typeDefString = sectionDef.Attributes["type"].Value;
|
||||
//
|
||||
if (typeDefString.EndsWith("WebsitePanel.Installer.Core") == false)
|
||||
{
|
||||
sectionDef.Attributes["type"].Value = "WebsitePanel.Installer.Configuration.InstallerSection, WebsitePanel.Installer.Core";
|
||||
//
|
||||
configXmlDoc.Save(appConfigPath);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Trace.TraceError("Failed to fix configuration section definition. Exception: {0}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
#region DB
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to string
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>string</returns>
|
||||
public static string GetDbString(object val)
|
||||
{
|
||||
string ret = string.Empty;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = (string)val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to short
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>short</returns>
|
||||
public static short GetDbShort(object val)
|
||||
{
|
||||
short ret = 0;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = (short)val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to int
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>int</returns>
|
||||
public static int GetDbInt32(object val)
|
||||
{
|
||||
int ret = 0;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = (int)val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to bool
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>bool</returns>
|
||||
public static bool GetDbBool(object val)
|
||||
{
|
||||
bool ret = false;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = Convert.ToBoolean(val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to decimal
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>decimal</returns>
|
||||
public static decimal GetDbDecimal(object val)
|
||||
{
|
||||
decimal ret = 0;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = (decimal)val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Converts db value to datetime
|
||||
/// </summary>
|
||||
/// <param name="val">Value</param>
|
||||
/// <returns>DateTime</returns>
|
||||
public static DateTime GetDbDateTime(object val)
|
||||
{
|
||||
DateTime ret = DateTime.MinValue;
|
||||
if ((val != null) && (val != DBNull.Value))
|
||||
ret = (DateTime)val;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public static void ShowConsoleErrorMessage(string format, params object[] args)
|
||||
{
|
||||
Console.WriteLine(String.Format(format, args));
|
||||
}
|
||||
|
||||
public static bool CheckForInstalledComponent(string componentCode)
|
||||
{
|
||||
bool ret = false;
|
||||
List<string> installedComponents = new List<string>();
|
||||
foreach (ComponentConfigElement componentConfig in AppConfigManager.AppConfiguration.Components)
|
||||
{
|
||||
string code = componentConfig.Settings[Global.Parameters.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;
|
||||
}
|
||||
|
||||
public static bool IsThreadAbortException(Exception ex)
|
||||
{
|
||||
Exception innerException = ex;
|
||||
while (innerException != null)
|
||||
{
|
||||
if (innerException is System.Threading.ThreadAbortException)
|
||||
return true;
|
||||
innerException = innerException.InnerException;
|
||||
}
|
||||
|
||||
string str = ex.ToString();
|
||||
return str.Contains("System.Threading.ThreadAbortException");
|
||||
}
|
||||
|
||||
public static bool IsSecurityException(Exception ex)
|
||||
{
|
||||
if (ex is System.Security.SecurityException)
|
||||
return true;
|
||||
|
||||
Exception innerException = ex;
|
||||
while (innerException != null)
|
||||
{
|
||||
if (innerException is System.Security.SecurityException)
|
||||
return true;
|
||||
innerException = innerException.InnerException;
|
||||
}
|
||||
|
||||
string str = ex.ToString();
|
||||
return str.Contains("System.Security.SecurityException");
|
||||
}
|
||||
|
||||
public static bool IsWin64()
|
||||
{
|
||||
return (IntPtr.Size == 8);
|
||||
}
|
||||
|
||||
public static void SetObjectProperty(DirectoryEntry oDE, string name, object value)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
if (oDE.Properties.Contains(name))
|
||||
{
|
||||
oDE.Properties[name][0] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
oDE.Properties[name].Add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static object GetObjectProperty(DirectoryEntry entry, string name)
|
||||
{
|
||||
if (entry.Properties.Contains(name))
|
||||
return entry.Properties[name][0];
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public static bool IIS32Enabled()
|
||||
{
|
||||
bool enabled = false;
|
||||
DirectoryEntry obj = new DirectoryEntry("IIS://LocalHost/W3SVC/AppPools");
|
||||
object objProperty = GetObjectProperty(obj, "Enable32bitAppOnWin64");
|
||||
if (objProperty != null)
|
||||
{
|
||||
enabled = (bool)objProperty;
|
||||
}
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public static void CheckWin64(EventHandler<UserDecisionEventArgs> callback)
|
||||
{
|
||||
if (IsWin64())
|
||||
{
|
||||
Log.WriteInfo("x64 detected");
|
||||
string check = AppConfigManager.AppConfiguration.GetStringSetting(ConfigKeys.Settings_IIS64);
|
||||
if (check == "False")
|
||||
return;
|
||||
|
||||
//ignore win64 check on IIS7
|
||||
if (Global.IISVersion.Major == 7)
|
||||
return;
|
||||
|
||||
if (!IIS32Enabled())
|
||||
{
|
||||
Log.WriteInfo("IIS 32-bit mode disabled");
|
||||
|
||||
var args = new UserDecisionEventArgs
|
||||
{
|
||||
UserMessage = "WebsitePanel Installer has detected that Microsoft Internet Information Services (IIS) " +
|
||||
"are running in 64-bit mode. It is recommended to switch IIS to 32-bit mode to " +
|
||||
"enable compatibility with 32-bit applications. " +
|
||||
"Please note that 64-bit web applications will not work in 32-bit mode.\n" +
|
||||
"Do you want WebsitePanel Installer to switch IIS to 32-bit mode?"
|
||||
};
|
||||
|
||||
if (callback != null)
|
||||
{
|
||||
callback(null, args);
|
||||
}
|
||||
|
||||
if (AppConfigManager.AppConfiguration.Settings[ConfigKeys.Settings_IIS64] != null)
|
||||
AppConfigManager.AppConfiguration.Settings[ConfigKeys.Settings_IIS64].Value = "False";
|
||||
else
|
||||
AppConfigManager.AppConfiguration.Settings.Add(ConfigKeys.Settings_IIS64, "False");
|
||||
//
|
||||
AppConfigManager.SaveConfiguration(false);
|
||||
|
||||
if (args.Accepted)
|
||||
{
|
||||
EnableIIS32();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.WriteInfo("IIS 32-bit mode enabled");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.WriteInfo("x86 detected");
|
||||
}
|
||||
}
|
||||
|
||||
private static void EnableIIS32()
|
||||
{
|
||||
Log.WriteStart("Enabling IIS 32-bit mode");
|
||||
DirectoryEntry obj = new DirectoryEntry("IIS://LocalHost/W3SVC/AppPools");
|
||||
SetObjectProperty(obj, "Enable32bitAppOnWin64", true);
|
||||
obj.CommitChanges();
|
||||
Log.WriteEnd("Enabled IIS 32-bit mode");
|
||||
|
||||
|
||||
Log.WriteStart("Starting aspnet_regiis -i");
|
||||
string path = Path.Combine(OS.GetWindowsDirectory(), @"Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe");
|
||||
ProcessStartInfo info = new ProcessStartInfo(path, "-i");
|
||||
//info.WindowStyle = ProcessWindowStyle.Minimized;
|
||||
Process process = Process.Start(info);
|
||||
process.WaitForExit();
|
||||
Log.WriteEnd("Finished aspnet_regiis -i");
|
||||
|
||||
Log.WriteStart("Enabling Web Service Extension");
|
||||
DirectoryEntry iis = new DirectoryEntry("IIS://LocalHost/W3SVC");
|
||||
iis.Invoke("EnableWebServiceExtension", "ASP.NET v2.0.50727 (32-bit)");
|
||||
iis.CommitChanges();
|
||||
Log.WriteEnd("Enabled Web Service Extension");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check security permissions
|
||||
/// </summary>
|
||||
public static bool CheckSecurity()
|
||||
{
|
||||
try
|
||||
{
|
||||
PermissionSet set = new PermissionSet(PermissionState.Unrestricted);
|
||||
set.Demand();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsAdministrator()
|
||||
{
|
||||
WindowsIdentity user = WindowsIdentity.GetCurrent();
|
||||
WindowsPrincipal principal = new WindowsPrincipal(user);
|
||||
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
private static Mutex mutex = null;
|
||||
|
||||
public static void SaveMutex()
|
||||
{
|
||||
GC.KeepAlive(mutex);
|
||||
}
|
||||
|
||||
public static bool IsNewInstance()
|
||||
{
|
||||
//check only one instance
|
||||
bool createdNew = true;
|
||||
mutex = new Mutex(true, "WebsitePanel Installer", out createdNew);
|
||||
return createdNew;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Collections;
|
||||
using System.Configuration;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.Installer.Configuration
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents <connections> configuration element containing a collection of child elements.
|
||||
/// </summary>
|
||||
public class ComponentCollection : ConfigurationElementCollection
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new instance of the ConnectionCollection class.
|
||||
/// </summary>
|
||||
public ComponentCollection()
|
||||
{
|
||||
AddElementName = "component";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the type of the ConfigurationElementCollection.
|
||||
/// </summary>
|
||||
public override ConfigurationElementCollectionType CollectionType
|
||||
{
|
||||
get
|
||||
{
|
||||
return ConfigurationElementCollectionType.AddRemoveClearMap;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new ConfigurationElement.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override ConfigurationElement CreateNewElement()
|
||||
{
|
||||
return new ComponentConfigElement();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new ConfigurationElement.
|
||||
/// </summary>
|
||||
/// <param name="elementName"></param>
|
||||
/// <returns></returns>
|
||||
protected override ConfigurationElement CreateNewElement(string id)
|
||||
{
|
||||
return new ComponentConfigElement(id);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="element"></param>
|
||||
/// <returns></returns>
|
||||
protected override Object GetElementKey(ConfigurationElement element)
|
||||
{
|
||||
ComponentConfigElement componentConfigElement = element as ComponentConfigElement;
|
||||
return componentConfigElement.ID;
|
||||
}
|
||||
|
||||
|
||||
/* public new string AddElementName
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.AddElementName;
|
||||
}
|
||||
set
|
||||
{
|
||||
base.AddElementName = value;
|
||||
}
|
||||
}
|
||||
|
||||
public new string ClearElementName
|
||||
{
|
||||
get
|
||||
{ return base.ClearElementName; }
|
||||
|
||||
set
|
||||
{ base.AddElementName = value; }
|
||||
|
||||
}
|
||||
|
||||
public new string RemoveElementName
|
||||
{
|
||||
get
|
||||
{ return base.RemoveElementName; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
public new int Count
|
||||
{
|
||||
|
||||
get { return base.Count; }
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
/// <summary>
|
||||
/// Gets or sets a child element of this ConnectionCollection object.
|
||||
/// </summary>
|
||||
/// <param name="index"></param>
|
||||
/// <returns></returns>
|
||||
public ComponentConfigElement this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
return (ComponentConfigElement)BaseGet(index);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (BaseGet(index) != null)
|
||||
{
|
||||
BaseRemoveAt(index);
|
||||
}
|
||||
BaseAdd(index, value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a child element of this ConnectionCollection object.
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public new ComponentConfigElement this[string id]
|
||||
{
|
||||
get
|
||||
{
|
||||
return (ComponentConfigElement)BaseGet(id);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The index of the specified PluginConfigElement.
|
||||
/// </summary>
|
||||
/// <param name="connection"></param>
|
||||
/// <returns></returns>
|
||||
public int IndexOf(ComponentConfigElement element)
|
||||
{
|
||||
return BaseIndexOf(element);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a PluginConfigElement to the ConnectionCollection instance.
|
||||
/// </summary>
|
||||
/// <param name="c"></param>
|
||||
public void Add(ComponentConfigElement c)
|
||||
{
|
||||
BaseAdd(c);
|
||||
|
||||
// Add custom code here.
|
||||
}
|
||||
|
||||
public void Remove(ComponentConfigElement c)
|
||||
{
|
||||
if (BaseIndexOf(c) >= 0)
|
||||
BaseRemove(c.ID);
|
||||
}
|
||||
|
||||
public void RemoveAt(int index)
|
||||
{
|
||||
BaseRemoveAt(index);
|
||||
}
|
||||
|
||||
public void Remove(string id)
|
||||
{
|
||||
BaseRemove(id);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
BaseClear();
|
||||
// Add custom code here.
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,253 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Collections;
|
||||
using System.Configuration;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.Installer.Configuration
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a configuration element containing component info.
|
||||
/// </summary>
|
||||
public class ComponentConfigElement : ConfigurationElement
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new instance of the ServerConfigElement class.
|
||||
/// </summary>
|
||||
public ComponentConfigElement() : this(string.Empty)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of the ServerConfigElement class.
|
||||
/// </summary>
|
||||
public ComponentConfigElement(string id)
|
||||
{
|
||||
ID = id;
|
||||
}
|
||||
|
||||
|
||||
[ConfigurationProperty("id", IsRequired = true, IsKey = true)]
|
||||
public string ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return (string)this["id"];
|
||||
}
|
||||
set
|
||||
{
|
||||
this["id"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[ConfigurationProperty("settings", IsDefaultCollection = false)]
|
||||
public KeyValueConfigurationCollection Settings
|
||||
{
|
||||
get
|
||||
{
|
||||
return (KeyValueConfigurationCollection)base["settings"];
|
||||
}
|
||||
}
|
||||
|
||||
public string GetStringSetting(string key)
|
||||
{
|
||||
string ret = null;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
ret = Settings[key].Value;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public int GetInt32Setting(string key)
|
||||
{
|
||||
int ret = 0;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
string val = Settings[key].Value;
|
||||
Int32.TryParse(val, out ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public bool GetBooleanSetting(string key)
|
||||
{
|
||||
bool ret = false;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
string val = Settings[key].Value;
|
||||
Boolean.TryParse(val, out ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
/// <summary>
|
||||
/// Gets the type of the ConfigurationElementCollection.
|
||||
/// </summary>
|
||||
public override ConfigurationElementCollectionType CollectionType
|
||||
{
|
||||
get
|
||||
{
|
||||
return ConfigurationElementCollectionType.AddRemoveClearMap;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new ConfigurationElement.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override ConfigurationElement CreateNewElement()
|
||||
{
|
||||
//return new ModuleConfigElement();
|
||||
return null;
|
||||
}*/
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new ConfigurationElement.
|
||||
/// </summary>
|
||||
/// <param name="elementName"></param>
|
||||
/// <returns></returns>
|
||||
/*protected override ConfigurationElement CreateNewElement(string elementName)
|
||||
{
|
||||
return new ModuleConfigElement(elementName);
|
||||
}*/
|
||||
|
||||
/*
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="element"></param>
|
||||
/// <returns></returns>
|
||||
protected override Object GetElementKey(ConfigurationElement element)
|
||||
{
|
||||
//ModuleConfigElement moduleConfigElement = element as ModuleConfigElement;
|
||||
//return userConfigElement.Module;
|
||||
return null;
|
||||
}*/
|
||||
|
||||
|
||||
/* public new string AddElementName
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.AddElementName;
|
||||
}
|
||||
set
|
||||
{
|
||||
base.AddElementName = value;
|
||||
}
|
||||
}
|
||||
|
||||
public new string ClearElementName
|
||||
{
|
||||
get
|
||||
{ return base.ClearElementName; }
|
||||
|
||||
set
|
||||
{ base.AddElementName = value; }
|
||||
|
||||
}
|
||||
|
||||
public new string RemoveElementName
|
||||
{
|
||||
get
|
||||
{ return base.RemoveElementName; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
public new int Count
|
||||
{
|
||||
|
||||
get { return base.Count; }
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
/// <summary>
|
||||
/// Gets or sets a child element of this ServerConfigElement object.
|
||||
/// </summary>
|
||||
/// <param name="index"></param>
|
||||
/// <returns></returns>
|
||||
/*public UserConfigElement this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
return (UserConfigElement)BaseGet(index);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (BaseGet(index) != null)
|
||||
{
|
||||
BaseRemoveAt(index);
|
||||
}
|
||||
BaseAdd(index, value);
|
||||
}
|
||||
}*/
|
||||
|
||||
/* /// <summary>
|
||||
/// Gets or sets a child element of this ServerConfigElement object.
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
new public UserConfigElement this[string name]
|
||||
{
|
||||
get
|
||||
{
|
||||
return (UserConfigElement)BaseGet(name);
|
||||
}
|
||||
}*/
|
||||
|
||||
/// <summary>
|
||||
/// The index of the specified PluginConfigElement.
|
||||
/// </summary>
|
||||
/// <param name="connection"></param>
|
||||
/// <returns></returns>
|
||||
/*public int IndexOf(UserConfigElement connection)
|
||||
{
|
||||
return BaseIndexOf(connection);
|
||||
}*/
|
||||
|
||||
/// <summary>
|
||||
/// Adds a PluginConfigElement to the ServerConfigElement instance.
|
||||
/// </summary>
|
||||
/// <param name="c"></param>
|
||||
/*public void Add(UserConfigElement c)
|
||||
{
|
||||
BaseAdd(c);
|
||||
|
||||
// Add custom code here.
|
||||
}*/
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
|
||||
namespace WebsitePanel.Installer.Configuration
|
||||
{
|
||||
public class ConfigKeys
|
||||
{
|
||||
public const string Web_Service = "Web.Service";
|
||||
public const string Web_AutoCheck = "Web.AutoCheck";
|
||||
public const string Web_Proxy_UseProxy = "Web.Proxy.UseProxy";
|
||||
public const string Web_Proxy_Address = "Web.Proxy.Address";
|
||||
public const string Web_Proxy_UserName = "Web.Proxy.UserName";
|
||||
public const string Web_Proxy_Password = "Web.Proxy.Password";
|
||||
public const string Settings_ImportSettings = "Settings.ImportSettings";
|
||||
public const string Settings_IIS64 = "Settings.CheckIIS64";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using System.Configuration;
|
||||
|
||||
namespace WebsitePanel.Installer.Configuration
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides configuration system support for the <installerSettings> configuration section.
|
||||
/// </summary>
|
||||
public class InstallerSection : ConfigurationSection
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new instance of the StudioSection class.
|
||||
/// </summary>
|
||||
public InstallerSection()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Declare <connections> collection element represented
|
||||
/// in the configuration file by the sub-section.
|
||||
/// </summary>
|
||||
[ConfigurationProperty("components", IsDefaultCollection = false)]
|
||||
public ComponentCollection Components
|
||||
{
|
||||
get
|
||||
{
|
||||
ComponentCollection componentCollection = (ComponentCollection)base["components"];
|
||||
return componentCollection;
|
||||
}
|
||||
}
|
||||
|
||||
[ConfigurationProperty("settings", IsDefaultCollection = false)]
|
||||
public KeyValueConfigurationCollection Settings
|
||||
{
|
||||
get
|
||||
{
|
||||
return (KeyValueConfigurationCollection)base["settings"];
|
||||
}
|
||||
}
|
||||
|
||||
public string GetStringSetting(string key)
|
||||
{
|
||||
string ret = null;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
ret = Settings[key].Value;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public int GetInt32Setting(string key)
|
||||
{
|
||||
int ret = 0;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
string val = Settings[key].Value;
|
||||
Int32.TryParse(val, out ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public bool GetBooleanSetting(string key)
|
||||
{
|
||||
bool ret = false;
|
||||
if (Settings[key] != null)
|
||||
{
|
||||
string val = Settings[key].Value;
|
||||
Boolean.TryParse(val, out ret);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,415 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using Ionic.Zip;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
|
||||
namespace WebsitePanel.Installer.Core
|
||||
{
|
||||
public class LoaderEventArgs<T> : EventArgs
|
||||
{
|
||||
public string StatusMessage { get; set; }
|
||||
public T EventData { get; set; }
|
||||
public bool Cancellable { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loader form.
|
||||
/// </summary>
|
||||
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}%";
|
||||
|
||||
private const int ChunkSize = 262144;
|
||||
private Thread thread;
|
||||
private string localFile;
|
||||
private string remoteFile;
|
||||
private string componentCode;
|
||||
private string version;
|
||||
|
||||
public event EventHandler<LoaderEventArgs<String>> StatusChanged;
|
||||
public event EventHandler<LoaderEventArgs<Exception>> OperationFailed;
|
||||
public event EventHandler<LoaderEventArgs<Int32>> ProgressChanged;
|
||||
public event EventHandler<EventArgs> OperationCompleted;
|
||||
|
||||
public Loader(string remoteFile)
|
||||
{
|
||||
this.remoteFile = remoteFile;
|
||||
}
|
||||
|
||||
public Loader(string localFile, string componentCode, string version)
|
||||
{
|
||||
this.localFile = localFile;
|
||||
this.componentCode = componentCode;
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public void LoadAppDistributive()
|
||||
{
|
||||
thread = new Thread(new ThreadStart(LoadAppDistributiveInternal));
|
||||
thread.Start();
|
||||
}
|
||||
|
||||
private void RaiseOnStatusChangedEvent(string statusMessage)
|
||||
{
|
||||
RaiseOnStatusChangedEvent(statusMessage, String.Empty);
|
||||
}
|
||||
|
||||
private void RaiseOnStatusChangedEvent(string statusMessage, string eventData)
|
||||
{
|
||||
RaiseOnStatusChangedEvent(statusMessage, eventData, true);
|
||||
}
|
||||
|
||||
private void RaiseOnStatusChangedEvent(string statusMessage, string eventData, bool cancellable)
|
||||
{
|
||||
if (StatusChanged == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// No event data for status updates
|
||||
StatusChanged(this, new LoaderEventArgs<String> {
|
||||
StatusMessage = statusMessage,
|
||||
EventData = eventData,
|
||||
Cancellable = cancellable
|
||||
});
|
||||
}
|
||||
|
||||
private void RaiseOnProgressChangedEvent(int eventData)
|
||||
{
|
||||
RaiseOnProgressChangedEvent(eventData, true);
|
||||
}
|
||||
|
||||
private void RaiseOnProgressChangedEvent(int eventData, bool cancellable)
|
||||
{
|
||||
if (ProgressChanged == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//
|
||||
ProgressChanged(this, new LoaderEventArgs<int> {
|
||||
EventData = eventData,
|
||||
Cancellable = cancellable
|
||||
});
|
||||
}
|
||||
|
||||
private void RaiseOnOperationFailedEvent(Exception ex)
|
||||
{
|
||||
if (OperationFailed == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//
|
||||
OperationFailed(this, new LoaderEventArgs<Exception> { EventData = ex });
|
||||
}
|
||||
|
||||
private void RaiseOnOperationCompletedEvent()
|
||||
{
|
||||
if (OperationCompleted == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//
|
||||
OperationCompleted(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Displays process progress.
|
||||
/// </summary>
|
||||
private void LoadAppDistributiveInternal()
|
||||
{
|
||||
//
|
||||
try
|
||||
{
|
||||
var service = ServiceProviderProxy.GetInstallerWebService();
|
||||
//
|
||||
string dataFolder = FileUtils.GetDataDirectory();
|
||||
string tmpFolder = FileUtils.GetTempDirectory();
|
||||
|
||||
if (!Directory.Exists(dataFolder))
|
||||
{
|
||||
Directory.CreateDirectory(dataFolder);
|
||||
Log.WriteInfo("Data directory created");
|
||||
}
|
||||
|
||||
if (Directory.Exists(tmpFolder))
|
||||
{
|
||||
FileUtils.DeleteTempDirectory();
|
||||
}
|
||||
|
||||
if (!Directory.Exists(tmpFolder))
|
||||
{
|
||||
Directory.CreateDirectory(tmpFolder);
|
||||
Log.WriteInfo("Tmp directory created");
|
||||
}
|
||||
|
||||
string fileToDownload = null;
|
||||
if (!string.IsNullOrEmpty(localFile))
|
||||
{
|
||||
fileToDownload = localFile;
|
||||
}
|
||||
else
|
||||
{
|
||||
fileToDownload = Path.GetFileName(remoteFile);
|
||||
}
|
||||
|
||||
string destinationFile = Path.Combine(dataFolder, fileToDownload);
|
||||
string tmpFile = Path.Combine(tmpFolder, fileToDownload);
|
||||
|
||||
//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");
|
||||
}
|
||||
}
|
||||
|
||||
// download file to tmp folder
|
||||
RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(0);
|
||||
//
|
||||
DownloadFile(remoteFile, tmpFile);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(100);
|
||||
|
||||
// copy downloaded file to data folder
|
||||
RaiseOnStatusChangedEvent(CopyingSetupFilesMessage);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(0);
|
||||
|
||||
// Ensure that the target does not exist.
|
||||
if (File.Exists(destinationFile))
|
||||
FileUtils.DeleteFile(destinationFile);
|
||||
File.Move(tmpFile, destinationFile);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(100);
|
||||
}
|
||||
|
||||
// unzip file
|
||||
RaiseOnStatusChangedEvent(PreparingSetupFilesMessage);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(0);
|
||||
//
|
||||
UnzipFile(destinationFile, tmpFolder);
|
||||
//
|
||||
RaiseOnProgressChangedEvent(100);
|
||||
//
|
||||
RaiseOnOperationCompletedEvent();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (Utils.IsThreadAbortException(ex))
|
||||
return;
|
||||
|
||||
Log.WriteError("Loader module error", ex);
|
||||
//
|
||||
RaiseOnOperationFailedEvent(ex);
|
||||
}
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
long downloaded = 0;
|
||||
long fileSize = service.GetFileSize(sourceFile);
|
||||
if (fileSize == 0)
|
||||
{
|
||||
throw new FileNotFoundException("Service returned empty file.", sourceFile);
|
||||
}
|
||||
|
||||
byte[] content;
|
||||
|
||||
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));
|
||||
|
||||
if (content.Length < ChunkSize)
|
||||
break;
|
||||
}
|
||||
//
|
||||
RaiseOnStatusChangedEvent(DownloadingSetupFilesMessage, "100%");
|
||||
//
|
||||
Log.WriteEnd(string.Format("Downloaded {0} bytes", downloaded));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (Utils.IsThreadAbortException(ex))
|
||||
return;
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
public void AbortOperation()
|
||||
{
|
||||
if (thread != null)
|
||||
{
|
||||
if (thread.IsAlive)
|
||||
{
|
||||
thread.Abort();
|
||||
}
|
||||
thread.Join();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
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 Installer Core")]
|
||||
[assembly: AssemblyDescription("WebsitePanel Installer Core")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("WebsitePanel Installer Core")]
|
||||
[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("419351db-5137-4a0d-ab64-fd90f0d52d45")]
|
||||
|
||||
// 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 Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
36
WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Properties/Settings.Designer.cs
generated
Normal file
36
WebsitePanel.Installer/Sources/WebsitePanel.Installer.Core/Properties/Settings.Designer.cs
generated
Normal file
|
@ -0,0 +1,36 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Installer.Core.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://www.websitepanel.net/Services/InstallerService.asmx")]
|
||||
public string WebsitePanel_Installer_Core_InstallerService_InstallerService {
|
||||
get {
|
||||
return ((string)(this["WebsitePanel_Installer_Core_InstallerService_InstallerService"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WebsitePanel.Installer.Core.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="WebsitePanel_Installer_Core_InstallerService_InstallerService" Type="(Web Service URL)" Scope="Application">
|
||||
<Value Profile="(Default)">http://www.websitepanel.net/Services/InstallerService.asmx</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
|
@ -0,0 +1,73 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.Net;
|
||||
using WebsitePanel.Installer.Services;
|
||||
|
||||
namespace WebsitePanel.Installer.Core
|
||||
{
|
||||
public class ServiceProviderProxy
|
||||
{
|
||||
public static InstallerService GetInstallerWebService()
|
||||
{
|
||||
var webService = new InstallerService();
|
||||
|
||||
string url = AppConfigManager.AppConfiguration.GetStringSetting(ConfigKeys.Web_Service);
|
||||
if (!String.IsNullOrEmpty(url))
|
||||
{
|
||||
webService.Url = url;
|
||||
}
|
||||
else
|
||||
{
|
||||
webService.Url = "http://www.websitepanel.net/Services/InstallerService.asmx";
|
||||
}
|
||||
|
||||
// check if we need to add a proxy to access Internet
|
||||
bool useProxy = AppConfigManager.AppConfiguration.GetBooleanSetting(ConfigKeys.Web_Proxy_UseProxy);
|
||||
if (useProxy)
|
||||
{
|
||||
string proxyServer = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_Address].Value;
|
||||
if (!String.IsNullOrEmpty(proxyServer))
|
||||
{
|
||||
IWebProxy proxy = new WebProxy(proxyServer);
|
||||
string proxyUsername = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_UserName].Value;
|
||||
string proxyPassword = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_Password].Value;
|
||||
if (!String.IsNullOrEmpty(proxyUsername))
|
||||
proxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword);
|
||||
webService.Proxy = proxy;
|
||||
}
|
||||
}
|
||||
|
||||
return webService;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
|
||||
<contractRef ref="http://www.websitepanel.net/Services/InstallerService.asmx?wsdl" docRef="http://www.websitepanel.net/Services/InstallerService.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
|
||||
<soap address="http://www.websitepanel.net/Services/InstallerService.asmx" xmlns:q1="http://websitepanel.net/services" binding="q1:InstallerServiceSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
<soap address="http://www.websitepanel.net/Services/InstallerService.asmx" xmlns:q2="http://websitepanel.net/services" binding="q2:InstallerServiceSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
|
||||
</discovery>
|
|
@ -0,0 +1,303 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://websitepanel.net/services" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://websitepanel.net/services" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
||||
<wsdl:types>
|
||||
<s:schema elementFormDefault="qualified" targetNamespace="http://websitepanel.net/services">
|
||||
<s:element name="GetReleaseFileInfo">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="componentCode" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="version" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetReleaseFileInfoResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetReleaseFileInfoResult">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element ref="s:schema" />
|
||||
<s:any />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetFileChunk">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="fileName" type="s:string" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="offset" type="s:int" />
|
||||
<s:element minOccurs="1" maxOccurs="1" name="size" type="s:int" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetFileChunkResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetFileChunkResult" type="s:base64Binary" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetFileSize">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="fileName" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetFileSizeResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="1" maxOccurs="1" name="GetFileSizeResult" type="s:long" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetAvailableComponents">
|
||||
<s:complexType />
|
||||
</s:element>
|
||||
<s:element name="GetAvailableComponentsResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetAvailableComponentsResult">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element ref="s:schema" />
|
||||
<s:any />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetLatestComponentUpdate">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="componentCode" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetLatestComponentUpdateResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetLatestComponentUpdateResult">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element ref="s:schema" />
|
||||
<s:any />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetComponentUpdate">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="componentCode" type="s:string" />
|
||||
<s:element minOccurs="0" maxOccurs="1" name="release" type="s:string" />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
<s:element name="GetComponentUpdateResponse">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element minOccurs="0" maxOccurs="1" name="GetComponentUpdateResult">
|
||||
<s:complexType>
|
||||
<s:sequence>
|
||||
<s:element ref="s:schema" />
|
||||
<s:any />
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
</s:sequence>
|
||||
</s:complexType>
|
||||
</s:element>
|
||||
</s:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="GetReleaseFileInfoSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetReleaseFileInfo" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetReleaseFileInfoSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetReleaseFileInfoResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetFileChunkSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetFileChunk" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetFileChunkSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetFileChunkResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetFileSizeSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetFileSize" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetFileSizeSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetFileSizeResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetAvailableComponentsSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetAvailableComponents" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetAvailableComponentsSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetAvailableComponentsResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetLatestComponentUpdateSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetLatestComponentUpdate" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetLatestComponentUpdateSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetLatestComponentUpdateResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetComponentUpdateSoapIn">
|
||||
<wsdl:part name="parameters" element="tns:GetComponentUpdate" />
|
||||
</wsdl:message>
|
||||
<wsdl:message name="GetComponentUpdateSoapOut">
|
||||
<wsdl:part name="parameters" element="tns:GetComponentUpdateResponse" />
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="InstallerServiceSoap">
|
||||
<wsdl:operation name="GetReleaseFileInfo">
|
||||
<wsdl:input message="tns:GetReleaseFileInfoSoapIn" />
|
||||
<wsdl:output message="tns:GetReleaseFileInfoSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileChunk">
|
||||
<wsdl:input message="tns:GetFileChunkSoapIn" />
|
||||
<wsdl:output message="tns:GetFileChunkSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileSize">
|
||||
<wsdl:input message="tns:GetFileSizeSoapIn" />
|
||||
<wsdl:output message="tns:GetFileSizeSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetAvailableComponents">
|
||||
<wsdl:input message="tns:GetAvailableComponentsSoapIn" />
|
||||
<wsdl:output message="tns:GetAvailableComponentsSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetLatestComponentUpdate">
|
||||
<wsdl:input message="tns:GetLatestComponentUpdateSoapIn" />
|
||||
<wsdl:output message="tns:GetLatestComponentUpdateSoapOut" />
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetComponentUpdate">
|
||||
<wsdl:input message="tns:GetComponentUpdateSoapIn" />
|
||||
<wsdl:output message="tns:GetComponentUpdateSoapOut" />
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="InstallerServiceSoap" type="tns:InstallerServiceSoap">
|
||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="GetReleaseFileInfo">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetReleaseFileInfo" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileChunk">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetFileChunk" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileSize">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetFileSize" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetAvailableComponents">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetAvailableComponents" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetLatestComponentUpdate">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetLatestComponentUpdate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetComponentUpdate">
|
||||
<soap:operation soapAction="http://websitepanel.net/services/GetComponentUpdate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:binding name="InstallerServiceSoap12" type="tns:InstallerServiceSoap">
|
||||
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="GetReleaseFileInfo">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetReleaseFileInfo" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileChunk">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetFileChunk" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetFileSize">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetFileSize" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetAvailableComponents">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetAvailableComponents" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetLatestComponentUpdate">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetLatestComponentUpdate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="GetComponentUpdate">
|
||||
<soap12:operation soapAction="http://websitepanel.net/services/GetComponentUpdate" style="document" />
|
||||
<wsdl:input>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap12:body use="literal" />
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="InstallerService">
|
||||
<wsdl:port name="InstallerServiceSoap" binding="tns:InstallerServiceSoap">
|
||||
<soap:address location="http://www.websitepanel.net/Services/InstallerService.asmx" />
|
||||
</wsdl:port>
|
||||
<wsdl:port name="InstallerServiceSoap12" binding="tns:InstallerServiceSoap12">
|
||||
<soap12:address location="http://www.websitepanel.net/Services/InstallerService.asmx" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
|
@ -0,0 +1,458 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// This source code was auto-generated by Microsoft.VSDesigner, Version 4.0.30319.1.
|
||||
//
|
||||
#pragma warning disable 1591
|
||||
|
||||
namespace WebsitePanel.Installer.Services {
|
||||
using System;
|
||||
using System.Web.Services;
|
||||
using System.Diagnostics;
|
||||
using System.Web.Services.Protocols;
|
||||
using System.ComponentModel;
|
||||
using System.Xml.Serialization;
|
||||
using System.Data;
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
[System.Web.Services.WebServiceBindingAttribute(Name="InstallerServiceSoap", Namespace="http://websitepanel.net/services")]
|
||||
public partial class InstallerService : System.Web.Services.Protocols.SoapHttpClientProtocol {
|
||||
|
||||
private System.Threading.SendOrPostCallback GetReleaseFileInfoOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetFileChunkOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetFileSizeOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetAvailableComponentsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetLatestComponentUpdateOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetComponentUpdateOperationCompleted;
|
||||
|
||||
private bool useDefaultCredentialsSetExplicitly;
|
||||
|
||||
/// <remarks/>
|
||||
public InstallerService() {
|
||||
this.Url = global::WebsitePanel.Installer.Core.Properties.Settings.Default.WebsitePanel_Installer_Core_InstallerService_InstallerService;
|
||||
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
|
||||
this.UseDefaultCredentials = true;
|
||||
this.useDefaultCredentialsSetExplicitly = false;
|
||||
}
|
||||
else {
|
||||
this.useDefaultCredentialsSetExplicitly = true;
|
||||
}
|
||||
}
|
||||
|
||||
public new string Url {
|
||||
get {
|
||||
return base.Url;
|
||||
}
|
||||
set {
|
||||
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
|
||||
&& (this.useDefaultCredentialsSetExplicitly == false))
|
||||
&& (this.IsLocalFileSystemWebService(value) == false))) {
|
||||
base.UseDefaultCredentials = false;
|
||||
}
|
||||
base.Url = value;
|
||||
}
|
||||
}
|
||||
|
||||
public new bool UseDefaultCredentials {
|
||||
get {
|
||||
return base.UseDefaultCredentials;
|
||||
}
|
||||
set {
|
||||
base.UseDefaultCredentials = value;
|
||||
this.useDefaultCredentialsSetExplicitly = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public event GetReleaseFileInfoCompletedEventHandler GetReleaseFileInfoCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetFileChunkCompletedEventHandler GetFileChunkCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetFileSizeCompletedEventHandler GetFileSizeCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetAvailableComponentsCompletedEventHandler GetAvailableComponentsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetLatestComponentUpdateCompletedEventHandler GetLatestComponentUpdateCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetComponentUpdateCompletedEventHandler GetComponentUpdateCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetReleaseFileInfo", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public System.Data.DataSet GetReleaseFileInfo(string componentCode, string version) {
|
||||
object[] results = this.Invoke("GetReleaseFileInfo", new object[] {
|
||||
componentCode,
|
||||
version});
|
||||
return ((System.Data.DataSet)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetReleaseFileInfoAsync(string componentCode, string version) {
|
||||
this.GetReleaseFileInfoAsync(componentCode, version, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetReleaseFileInfoAsync(string componentCode, string version, object userState) {
|
||||
if ((this.GetReleaseFileInfoOperationCompleted == null)) {
|
||||
this.GetReleaseFileInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetReleaseFileInfoOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetReleaseFileInfo", new object[] {
|
||||
componentCode,
|
||||
version}, this.GetReleaseFileInfoOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetReleaseFileInfoOperationCompleted(object arg) {
|
||||
if ((this.GetReleaseFileInfoCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetReleaseFileInfoCompleted(this, new GetReleaseFileInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetFileChunk", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
[return: System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
|
||||
public byte[] GetFileChunk(string fileName, int offset, int size) {
|
||||
object[] results = this.Invoke("GetFileChunk", new object[] {
|
||||
fileName,
|
||||
offset,
|
||||
size});
|
||||
return ((byte[])(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetFileChunkAsync(string fileName, int offset, int size) {
|
||||
this.GetFileChunkAsync(fileName, offset, size, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetFileChunkAsync(string fileName, int offset, int size, object userState) {
|
||||
if ((this.GetFileChunkOperationCompleted == null)) {
|
||||
this.GetFileChunkOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileChunkOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetFileChunk", new object[] {
|
||||
fileName,
|
||||
offset,
|
||||
size}, this.GetFileChunkOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetFileChunkOperationCompleted(object arg) {
|
||||
if ((this.GetFileChunkCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetFileChunkCompleted(this, new GetFileChunkCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetFileSize", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public long GetFileSize(string fileName) {
|
||||
object[] results = this.Invoke("GetFileSize", new object[] {
|
||||
fileName});
|
||||
return ((long)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetFileSizeAsync(string fileName) {
|
||||
this.GetFileSizeAsync(fileName, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetFileSizeAsync(string fileName, object userState) {
|
||||
if ((this.GetFileSizeOperationCompleted == null)) {
|
||||
this.GetFileSizeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileSizeOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetFileSize", new object[] {
|
||||
fileName}, this.GetFileSizeOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetFileSizeOperationCompleted(object arg) {
|
||||
if ((this.GetFileSizeCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetFileSizeCompleted(this, new GetFileSizeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetAvailableComponents", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public System.Data.DataSet GetAvailableComponents() {
|
||||
object[] results = this.Invoke("GetAvailableComponents", new object[0]);
|
||||
return ((System.Data.DataSet)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetAvailableComponentsAsync() {
|
||||
this.GetAvailableComponentsAsync(null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetAvailableComponentsAsync(object userState) {
|
||||
if ((this.GetAvailableComponentsOperationCompleted == null)) {
|
||||
this.GetAvailableComponentsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetAvailableComponentsOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetAvailableComponents", new object[0], this.GetAvailableComponentsOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetAvailableComponentsOperationCompleted(object arg) {
|
||||
if ((this.GetAvailableComponentsCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetAvailableComponentsCompleted(this, new GetAvailableComponentsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetLatestComponentUpdate", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public System.Data.DataSet GetLatestComponentUpdate(string componentCode) {
|
||||
object[] results = this.Invoke("GetLatestComponentUpdate", new object[] {
|
||||
componentCode});
|
||||
return ((System.Data.DataSet)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetLatestComponentUpdateAsync(string componentCode) {
|
||||
this.GetLatestComponentUpdateAsync(componentCode, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetLatestComponentUpdateAsync(string componentCode, object userState) {
|
||||
if ((this.GetLatestComponentUpdateOperationCompleted == null)) {
|
||||
this.GetLatestComponentUpdateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLatestComponentUpdateOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetLatestComponentUpdate", new object[] {
|
||||
componentCode}, this.GetLatestComponentUpdateOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetLatestComponentUpdateOperationCompleted(object arg) {
|
||||
if ((this.GetLatestComponentUpdateCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetLatestComponentUpdateCompleted(this, new GetLatestComponentUpdateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://websitepanel.net/services/GetComponentUpdate", RequestNamespace="http://websitepanel.net/services", ResponseNamespace="http://websitepanel.net/services", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public System.Data.DataSet GetComponentUpdate(string componentCode, string release) {
|
||||
object[] results = this.Invoke("GetComponentUpdate", new object[] {
|
||||
componentCode,
|
||||
release});
|
||||
return ((System.Data.DataSet)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetComponentUpdateAsync(string componentCode, string release) {
|
||||
this.GetComponentUpdateAsync(componentCode, release, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetComponentUpdateAsync(string componentCode, string release, object userState) {
|
||||
if ((this.GetComponentUpdateOperationCompleted == null)) {
|
||||
this.GetComponentUpdateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetComponentUpdateOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetComponentUpdate", new object[] {
|
||||
componentCode,
|
||||
release}, this.GetComponentUpdateOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetComponentUpdateOperationCompleted(object arg) {
|
||||
if ((this.GetComponentUpdateCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetComponentUpdateCompleted(this, new GetComponentUpdateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
}
|
||||
|
||||
private bool IsLocalFileSystemWebService(string url) {
|
||||
if (((url == null)
|
||||
|| (url == string.Empty))) {
|
||||
return false;
|
||||
}
|
||||
System.Uri wsUri = new System.Uri(url);
|
||||
if (((wsUri.Port >= 1024)
|
||||
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetReleaseFileInfoCompletedEventHandler(object sender, GetReleaseFileInfoCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetReleaseFileInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetReleaseFileInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.Data.DataSet Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((System.Data.DataSet)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetFileChunkCompletedEventHandler(object sender, GetFileChunkCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetFileChunkCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetFileChunkCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public byte[] Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((byte[])(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetFileSizeCompletedEventHandler(object sender, GetFileSizeCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetFileSizeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetFileSizeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public long Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((long)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetAvailableComponentsCompletedEventHandler(object sender, GetAvailableComponentsCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetAvailableComponentsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetAvailableComponentsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.Data.DataSet Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((System.Data.DataSet)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetLatestComponentUpdateCompletedEventHandler(object sender, GetLatestComponentUpdateCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetLatestComponentUpdateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetLatestComponentUpdateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.Data.DataSet Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((System.Data.DataSet)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
public delegate void GetComponentUpdateCompletedEventHandler(object sender, GetComponentUpdateCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetComponentUpdateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetComponentUpdateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.Data.DataSet Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((System.Data.DataSet)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore 1591
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Results>
|
||||
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://www.websitepanel.net/Services/InstallerService.asmx?wsdl" filename="InstallerService.wsdl" />
|
||||
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://www.websitepanel.net/Services/InstallerService.asmx?disco" filename="InstallerService.disco" />
|
||||
</Results>
|
||||
</DiscoveryClientResultsFile>
|
|
@ -0,0 +1,134 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WebsitePanel.Installer.Core</RootNamespace>
|
||||
<AssemblyName>WebsitePanel.Installer.Core</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Ionic.Zip.Reduced">
|
||||
<HintPath>..\..\Lib\Ionic.Zip.Reduced.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\VersionInfo.cs">
|
||||
<Link>VersionInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="AppConfigManager.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Common\AssemblyLoader.cs" />
|
||||
<Compile Include="Common\FileUtils.cs" />
|
||||
<Compile Include="Common\Global.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Common\Log.cs" />
|
||||
<Compile Include="Common\OS.cs" />
|
||||
<Compile Include="Common\RegistryUtils.cs" />
|
||||
<Compile Include="Common\Utils.cs" />
|
||||
<Compile Include="Configuration\ComponentCollection.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Configuration\ComponentConfigElement.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Configuration\ConfigKeys.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Configuration\InstallerSection.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Loader.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ServiceProviderProxy.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Web References\InstallerService\Reference.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Reference.map</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WebReferences Include="Web References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Web References\InstallerService\InstallerService.wsdl" />
|
||||
<None Include="Web References\InstallerService\Reference.map">
|
||||
<Generator>MSDiscoCodeGenerator</Generator>
|
||||
<LastGenOutput>Reference.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Service References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WebReferenceUrl Include="http://www.websitepanel.net/Services/InstallerService.asmx">
|
||||
<UrlBehavior>Dynamic</UrlBehavior>
|
||||
<RelPath>Web References\InstallerService\</RelPath>
|
||||
<UpdateFromURL>http://www.websitepanel.net/Services/InstallerService.asmx</UpdateFromURL>
|
||||
<ServiceLocationURL>
|
||||
</ServiceLocationURL>
|
||||
<CachedDynamicPropName>
|
||||
</CachedDynamicPropName>
|
||||
<CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
|
||||
<CachedSettingsPropName>WebsitePanel_Installer_Core_InstallerService_InstallerService</CachedSettingsPropName>
|
||||
</WebReferenceUrl>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Web References\InstallerService\InstallerService.disco" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="WebsitePanel.Installer.Core.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<system.serviceModel>
|
||||
<bindings />
|
||||
<client />
|
||||
</system.serviceModel>
|
||||
<applicationSettings>
|
||||
<WebsitePanel.Installer.Core.Properties.Settings>
|
||||
<setting name="WebsitePanel_Installer_Core_InstallerService_InstallerService"
|
||||
serializeAs="String">
|
||||
<value>http://www.websitepanel.net/Services/InstallerService.asmx</value>
|
||||
</setting>
|
||||
</WebsitePanel.Installer.Core.Properties.Settings>
|
||||
</applicationSettings>
|
||||
</configuration>
|
104
WebsitePanel.Installer/Sources/WebsitePanel.Installer.sln
Normal file
104
WebsitePanel.Installer/Sources/WebsitePanel.Installer.sln
Normal file
|
@ -0,0 +1,104 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{129305D5-A9E6-4DCE-BFF6-41809E13EEEE}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\..\LICENSE.txt = ..\..\LICENSE.txt
|
||||
..\..\Readme.htm = ..\..\Readme.htm
|
||||
..\..\ReleaseNotes.htm = ..\..\ReleaseNotes.htm
|
||||
VersionInfo.cs = VersionInfo.cs
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Installer", "WebsitePanel.Installer\WebsitePanel.Installer.csproj", "{A358C6E2-F57D-4AB9-B13D-FD3048134143}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Updater", "WebsitePanel.Updater\WebsitePanel.Updater.csproj", "{F01A019E-1501-45A2-94D8-C621866A3ECD}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143} = {A358C6E2-F57D-4AB9-B13D-FD3048134143}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Setup", "WebsitePanel.Setup\WebsitePanel.Setup.csproj", "{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}"
|
||||
EndProject
|
||||
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.SilentInstaller", "WebsitePanel.SilentInstaller\WebsitePanel.SilentInstaller.csproj", "{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Installer.Core", "WebsitePanel.Installer.Core\WebsitePanel.Installer.Core.csproj", "{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{A358C6E2-F57D-4AB9-B13D-FD3048134143}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{F01A019E-1501-45A2-94D8-C621866A3ECD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3951C0EC-BD98-450E-B228-CDBE5BD4AD49}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|Any CPU.ActiveCfg = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|Any CPU.Build.0 = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|Mixed Platforms.ActiveCfg = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|Mixed Platforms.Build.0 = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|x86.ActiveCfg = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Debug|x86.Build.0 = Debug
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|Any CPU.ActiveCfg = Release
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|Any CPU.Build.0 = Release
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|Mixed Platforms.ActiveCfg = Release
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|Mixed Platforms.Build.0 = Release
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|x86.ActiveCfg = Release
|
||||
{2D271041-201E-4E9C-8AB1-B62DC5B0B0E1}.Release|x86.Build.0 = Release
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Debug|x86.Build.0 = Debug|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|Any CPU.Build.0 = Release|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|x86.ActiveCfg = Release|x86
|
||||
{CD3E79C3-AEEF-43E6-A9ED-1130840FB2CD}.Release|x86.Build.0 = Release|x86
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{0E4A3F5B-0BB1-4F63-863D-7B0182B378CF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="installer" type="WebsitePanel.Installer.Configuration.InstallerSection, WebsitePanel.Installer.Core"/>
|
||||
</configSections>
|
||||
<installer>
|
||||
<!-- Installed components -->
|
||||
<components/>
|
||||
<!-- Studio settings -->
|
||||
<settings>
|
||||
<add key="Log.FileName" value="WebsitePanel.Installer.log" />
|
||||
<add key="Web.Service" value="http://www.websitepanel.net/Services/InstallerService-Beta.asmx" />
|
||||
<add key="Web.AutoCheck" value="False" />
|
||||
<add key="Web.Proxy.UseProxy" value="false" />
|
||||
<add key="Web.Proxy.Address" value="" />
|
||||
<add key="Web.Proxy.UserName" value="" />
|
||||
<add key="Web.Proxy.Password" value="" />
|
||||
</settings>
|
||||
</installer>
|
||||
</configuration>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="installer" type="WebsitePanel.Installer.Configuration.InstallerSection, WebsitePanel.Installer.Core"/>
|
||||
</configSections>
|
||||
<installer>
|
||||
<!-- Installed components -->
|
||||
<components/>
|
||||
<!-- Studio settings -->
|
||||
<settings>
|
||||
<add key="Log.FileName" value="WebsitePanel.Installer.log" />
|
||||
<add key="Web.Service" value="" />
|
||||
<add key="Web.AutoCheck" value="False" />
|
||||
<add key="Web.Proxy.UseProxy" value="false" />
|
||||
<add key="Web.Proxy.Address" value="" />
|
||||
<add key="Web.Proxy.UserName" value="" />
|
||||
<add key="Web.Proxy.Password" value="" />
|
||||
</settings>
|
||||
</installer>
|
||||
</configuration>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="installer" type="WebsitePanel.Installer.Configuration.InstallerSection, WebsitePanel.Installer.Core"/>
|
||||
</configSections>
|
||||
<installer>
|
||||
<!-- Installed components -->
|
||||
<components/>
|
||||
<!-- Studio settings -->
|
||||
<settings>
|
||||
<add key="Log.FileName" value="WebsitePanel.Installer.log" />
|
||||
<add key="Web.Service" value="http://www.websitepanel.net/Services/InstallerService-Beta.asmx" />
|
||||
<add key="Web.AutoCheck" value="False" />
|
||||
<add key="Web.Proxy.UseProxy" value="false" />
|
||||
<add key="Web.Proxy.Address" value="" />
|
||||
<add key="Web.Proxy.UserName" value="" />
|
||||
<add key="Web.Proxy.Password" value="" />
|
||||
</settings>
|
||||
</installer>
|
||||
</configuration>
|
243
WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs
generated
Normal file
243
WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,243 @@
|
|||
namespace WebsitePanel.Installer
|
||||
{
|
||||
partial class ApplicationForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationForm));
|
||||
this.statusBar = new System.Windows.Forms.StatusStrip();
|
||||
this.statusBarLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.splitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.scopeTree = new System.Windows.Forms.TreeView();
|
||||
this.smallImages = new System.Windows.Forms.ImageList(this.components);
|
||||
this.pnlRight = new System.Windows.Forms.Panel();
|
||||
this.pnlResultView = new System.Windows.Forms.Panel();
|
||||
this.pnlDescription = new System.Windows.Forms.Panel();
|
||||
this.lblResultViewPath = new System.Windows.Forms.Label();
|
||||
this.lblResultViewTitle = new System.Windows.Forms.Label();
|
||||
this.pictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.backgroundWorker = new System.ComponentModel.BackgroundWorker();
|
||||
this.lineBox2 = new WebsitePanel.Installer.LineBox();
|
||||
this.topLogoControl = new WebsitePanel.Installer.TopLogoControl();
|
||||
this.statusBar.SuspendLayout();
|
||||
this.splitContainer.Panel1.SuspendLayout();
|
||||
this.splitContainer.Panel2.SuspendLayout();
|
||||
this.splitContainer.SuspendLayout();
|
||||
this.pnlRight.SuspendLayout();
|
||||
this.pnlDescription.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible;
|
||||
this.statusBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.statusBarLabel});
|
||||
this.statusBar.Location = new System.Drawing.Point(0, 431);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.statusBar.Size = new System.Drawing.Size(632, 22);
|
||||
this.statusBar.TabIndex = 1;
|
||||
//
|
||||
// statusBarLabel
|
||||
//
|
||||
this.statusBarLabel.Name = "statusBarLabel";
|
||||
this.statusBarLabel.Size = new System.Drawing.Size(39, 17);
|
||||
this.statusBarLabel.Text = "Ready";
|
||||
//
|
||||
// splitContainer
|
||||
//
|
||||
this.splitContainer.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer.Location = new System.Drawing.Point(0, 63);
|
||||
this.splitContainer.Name = "splitContainer";
|
||||
//
|
||||
// splitContainer.Panel1
|
||||
//
|
||||
this.splitContainer.Panel1.Controls.Add(this.scopeTree);
|
||||
this.splitContainer.Panel1.Padding = new System.Windows.Forms.Padding(0, 1, 0, 0);
|
||||
//
|
||||
// splitContainer.Panel2
|
||||
//
|
||||
this.splitContainer.Panel2.Controls.Add(this.pnlRight);
|
||||
this.splitContainer.Panel2.Padding = new System.Windows.Forms.Padding(0, 1, 0, 0);
|
||||
this.splitContainer.Size = new System.Drawing.Size(632, 368);
|
||||
this.splitContainer.SplitterDistance = 250;
|
||||
this.splitContainer.SplitterWidth = 2;
|
||||
this.splitContainer.TabIndex = 2;
|
||||
//
|
||||
// scopeTree
|
||||
//
|
||||
this.scopeTree.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.scopeTree.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.scopeTree.HideSelection = false;
|
||||
this.scopeTree.ImageIndex = 0;
|
||||
this.scopeTree.ImageList = this.smallImages;
|
||||
this.scopeTree.ItemHeight = 19;
|
||||
this.scopeTree.Location = new System.Drawing.Point(0, 1);
|
||||
this.scopeTree.Name = "scopeTree";
|
||||
this.scopeTree.SelectedImageIndex = 0;
|
||||
this.scopeTree.ShowLines = false;
|
||||
this.scopeTree.Size = new System.Drawing.Size(250, 367);
|
||||
this.scopeTree.TabIndex = 0;
|
||||
this.scopeTree.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.OnScopeTreeBeforeExpand);
|
||||
this.scopeTree.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnScopeTreeAfterSelect);
|
||||
//
|
||||
// smallImages
|
||||
//
|
||||
this.smallImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
|
||||
this.smallImages.ImageSize = new System.Drawing.Size(16, 16);
|
||||
this.smallImages.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// pnlRight
|
||||
//
|
||||
this.pnlRight.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.pnlRight.Controls.Add(this.pnlResultView);
|
||||
this.pnlRight.Controls.Add(this.pnlDescription);
|
||||
this.pnlRight.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlRight.Location = new System.Drawing.Point(0, 1);
|
||||
this.pnlRight.Name = "pnlRight";
|
||||
this.pnlRight.Size = new System.Drawing.Size(380, 367);
|
||||
this.pnlRight.TabIndex = 0;
|
||||
//
|
||||
// pnlResultView
|
||||
//
|
||||
this.pnlResultView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlResultView.Location = new System.Drawing.Point(0, 63);
|
||||
this.pnlResultView.Name = "pnlResultView";
|
||||
this.pnlResultView.Size = new System.Drawing.Size(376, 300);
|
||||
this.pnlResultView.TabIndex = 14;
|
||||
//
|
||||
// pnlDescription
|
||||
//
|
||||
this.pnlDescription.Controls.Add(this.lineBox2);
|
||||
this.pnlDescription.Controls.Add(this.lblResultViewPath);
|
||||
this.pnlDescription.Controls.Add(this.lblResultViewTitle);
|
||||
this.pnlDescription.Controls.Add(this.pictureBox);
|
||||
this.pnlDescription.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.pnlDescription.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlDescription.Name = "pnlDescription";
|
||||
this.pnlDescription.Size = new System.Drawing.Size(376, 63);
|
||||
this.pnlDescription.TabIndex = 13;
|
||||
//
|
||||
// lblResultViewPath
|
||||
//
|
||||
this.lblResultViewPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblResultViewPath.AutoEllipsis = true;
|
||||
this.lblResultViewPath.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblResultViewPath.Location = new System.Drawing.Point(47, 28);
|
||||
this.lblResultViewPath.Name = "lblResultViewPath";
|
||||
this.lblResultViewPath.Size = new System.Drawing.Size(251, 21);
|
||||
this.lblResultViewPath.TabIndex = 15;
|
||||
this.lblResultViewPath.Text = "Path";
|
||||
//
|
||||
// lblResultViewTitle
|
||||
//
|
||||
this.lblResultViewTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblResultViewTitle.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblResultViewTitle.Location = new System.Drawing.Point(47, 8);
|
||||
this.lblResultViewTitle.Name = "lblResultViewTitle";
|
||||
this.lblResultViewTitle.Size = new System.Drawing.Size(318, 20);
|
||||
this.lblResultViewTitle.TabIndex = 14;
|
||||
this.lblResultViewTitle.Text = "Title";
|
||||
//
|
||||
// pictureBox
|
||||
//
|
||||
this.pictureBox.Location = new System.Drawing.Point(9, 8);
|
||||
this.pictureBox.Name = "pictureBox";
|
||||
this.pictureBox.Size = new System.Drawing.Size(32, 32);
|
||||
this.pictureBox.TabIndex = 13;
|
||||
this.pictureBox.TabStop = false;
|
||||
//
|
||||
// lineBox2
|
||||
//
|
||||
this.lineBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lineBox2.Location = new System.Drawing.Point(6, 51);
|
||||
this.lineBox2.Name = "lineBox2";
|
||||
this.lineBox2.Size = new System.Drawing.Size(366, 2);
|
||||
this.lineBox2.TabIndex = 16;
|
||||
this.lineBox2.TabStop = false;
|
||||
this.lineBox2.Text = "lineBox2";
|
||||
//
|
||||
// topLogoControl
|
||||
//
|
||||
this.topLogoControl.BackColor = System.Drawing.Color.White;
|
||||
this.topLogoControl.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.topLogoControl.Location = new System.Drawing.Point(0, 0);
|
||||
this.topLogoControl.Name = "topLogoControl";
|
||||
this.topLogoControl.Size = new System.Drawing.Size(632, 63);
|
||||
this.topLogoControl.TabIndex = 3;
|
||||
//
|
||||
// ApplicationForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(632, 453);
|
||||
this.Controls.Add(this.splitContainer);
|
||||
this.Controls.Add(this.statusBar);
|
||||
this.Controls.Add(this.topLogoControl);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MinimumSize = new System.Drawing.Size(640, 480);
|
||||
this.Name = "ApplicationForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "WebsitePanel Installer";
|
||||
this.Shown += new System.EventHandler(this.OnApplicationFormShown);
|
||||
this.statusBar.ResumeLayout(false);
|
||||
this.statusBar.PerformLayout();
|
||||
this.splitContainer.Panel1.ResumeLayout(false);
|
||||
this.splitContainer.Panel2.ResumeLayout(false);
|
||||
this.splitContainer.ResumeLayout(false);
|
||||
this.pnlRight.ResumeLayout(false);
|
||||
this.pnlDescription.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.StatusStrip statusBar;
|
||||
private System.Windows.Forms.SplitContainer splitContainer;
|
||||
private System.Windows.Forms.Panel pnlRight;
|
||||
private TopLogoControl topLogoControl;
|
||||
private System.Windows.Forms.TreeView scopeTree;
|
||||
private System.Windows.Forms.Panel pnlDescription;
|
||||
private LineBox lineBox2;
|
||||
private System.Windows.Forms.Label lblResultViewPath;
|
||||
private System.Windows.Forms.Label lblResultViewTitle;
|
||||
private System.Windows.Forms.PictureBox pictureBox;
|
||||
private System.Windows.Forms.ToolStripStatusLabel statusBarLabel;
|
||||
private System.Windows.Forms.ImageList smallImages;
|
||||
private System.Windows.Forms.Panel pnlResultView;
|
||||
private System.ComponentModel.BackgroundWorker backgroundWorker;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,650 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Net;
|
||||
using System.Configuration;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Win32;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
using WebsitePanel.Installer.Controls;
|
||||
using WebsitePanel.Installer.Services;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.Xml;
|
||||
using System.Runtime.Remoting.Lifetime;
|
||||
using WebsitePanel.Installer.Core;
|
||||
|
||||
namespace WebsitePanel.Installer
|
||||
{
|
||||
/// <summary>
|
||||
/// Main application form
|
||||
/// </summary>
|
||||
internal partial class ApplicationForm : Form
|
||||
{
|
||||
private ProgressManager progressManager;
|
||||
private ScopeNode activeScopeNode;
|
||||
private static ApplicationForm instance;
|
||||
delegate void VoidCallback();
|
||||
|
||||
#region Constructor
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ApplicationForm class.
|
||||
/// </summary>
|
||||
internal ApplicationForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
if (DesignMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Scope tree
|
||||
|
||||
/// <summary>
|
||||
/// Adds predefined nodes
|
||||
/// </summary>
|
||||
private void AddDefaultNodes()
|
||||
{
|
||||
scopeTree.Nodes.Clear();
|
||||
ScopeNode componentsNode = AddScopeNode(null, "Components", Properties.Resources.Folder32, Properties.Resources.Folder16, new ComponentsControl(), NodeType.Components, null);
|
||||
AddScopeNode(null, "Application Settings", Properties.Resources.Tool32, Properties.Resources.Tool16, new SettingsControl(), NodeType.Settings, null);
|
||||
componentsNode.Expand();
|
||||
ExpandScopeNode(componentsNode);
|
||||
scopeTree.SelectedNode = componentsNode;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds scope node to the scope tree
|
||||
/// </summary>
|
||||
internal ScopeNode AddScopeNode(ScopeNode parent, string text, Icon largeIcon, Icon smallIcon, ResultViewControl resultView, NodeType nodeType, object tag)
|
||||
{
|
||||
string smallIconName = smallIcon.GetHashCode().ToString();
|
||||
if (!this.smallImages.Images.ContainsKey(smallIconName))
|
||||
{
|
||||
this.smallImages.Images.Add(smallIconName, smallIcon);
|
||||
}
|
||||
ScopeNode node = new ScopeNode();
|
||||
node.Text = text;
|
||||
node.ResultView = resultView;
|
||||
node.SmallIcon = smallIcon;
|
||||
node.LargeIcon = largeIcon;
|
||||
node.ImageKey = smallIconName;
|
||||
node.SelectedImageKey = smallIconName;
|
||||
node.NodeType = nodeType;
|
||||
node.Populated = false;
|
||||
node.Tag = tag;
|
||||
if (parent == null)
|
||||
{
|
||||
scopeTree.Nodes.Add(node);
|
||||
}
|
||||
else
|
||||
{
|
||||
parent.Nodes.Add(node);
|
||||
}
|
||||
//add fake node to show +
|
||||
node.Nodes.Add(" ");
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Adds component node to the scope tree
|
||||
/// </summary>
|
||||
internal ScopeNode AddComponentNode(ScopeNode parent, string text, object tag)
|
||||
{
|
||||
return AddScopeNode(parent, text, Properties.Resources.Service32, Properties.Resources.Service16, new ComponentControl(), NodeType.Component, tag);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Actions on select node in the scope tree
|
||||
/// </summary>
|
||||
private void OnScopeTreeAfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
ScopeNode node = e.Node as ScopeNode;
|
||||
//node.ContextMenuStrip = scopeItemContextMenu;
|
||||
ExpandScopeNode(node);
|
||||
PopulateResultView(node);
|
||||
activeScopeNode = node;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Expands scope node in the scope tree
|
||||
/// </summary>
|
||||
private void ExpandScopeNode(ScopeNode node)
|
||||
{
|
||||
if (node != null)
|
||||
{
|
||||
if (!node.Populated)
|
||||
{
|
||||
node.Nodes.Clear();
|
||||
StartProgress("Loading...");
|
||||
string text = node.Text;
|
||||
node.Text += " expanding...";
|
||||
scopeTree.Update();
|
||||
scopeTree.BeginUpdate();
|
||||
switch (node.NodeType)
|
||||
{
|
||||
/*case NodeType.Servers:
|
||||
LoadServers(node);
|
||||
break;
|
||||
case NodeType.Server:
|
||||
LoadServerComponents(node);
|
||||
break;*/
|
||||
case NodeType.Components:
|
||||
LoadInstalledComponents(node);
|
||||
break;
|
||||
}
|
||||
node.Text = text;
|
||||
node.Populated = true;
|
||||
node.Expand();
|
||||
scopeTree.EndUpdate();
|
||||
FinishProgress();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Action on expanding scope tree node
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnScopeTreeBeforeExpand(object sender, TreeViewCancelEventArgs e)
|
||||
{
|
||||
ScopeNode node = e.Node as ScopeNode;
|
||||
ExpandScopeNode(node);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Result view
|
||||
|
||||
/// <summary>
|
||||
/// Displays result view control
|
||||
/// </summary>
|
||||
/// <param name="parentNode"></param>
|
||||
private void PopulateResultView(ScopeNode parentNode)
|
||||
{
|
||||
this.SuspendLayout();
|
||||
pnlResultView.Controls.Clear();
|
||||
if (parentNode.LargeIcon != null)
|
||||
{
|
||||
pictureBox.Image = parentNode.LargeIcon.ToBitmap();
|
||||
}
|
||||
else
|
||||
{
|
||||
pictureBox.Image = Properties.Resources.Folder32.ToBitmap();
|
||||
}
|
||||
lblResultViewTitle.Text = parentNode.Text;
|
||||
lblResultViewPath.Text = parentNode.FullPath;
|
||||
ResultViewControl control = parentNode.ResultView;
|
||||
if (control != null)
|
||||
{
|
||||
pnlResultView.Controls.Add(control);
|
||||
control.Dock = DockStyle.Fill;
|
||||
try
|
||||
{
|
||||
AppContext context = new AppContext();
|
||||
context.AppForm = this;
|
||||
context.ScopeNode = parentNode;
|
||||
control.ShowControl(context);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Console error", ex);
|
||||
ShowError(ex);
|
||||
}
|
||||
}
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Console
|
||||
|
||||
/// <summary>
|
||||
/// Application form instance
|
||||
/// </summary>
|
||||
internal static ApplicationForm Instance
|
||||
{
|
||||
get { return instance; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Current version
|
||||
/// </summary>
|
||||
public string Version
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetType().Assembly.GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reloads application
|
||||
/// </summary>
|
||||
internal void ReloadApplication()
|
||||
{
|
||||
//thread safe call
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
VoidCallback callback = new VoidCallback(ReloadApplication);
|
||||
this.Invoke(callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
AppConfigManager.LoadConfiguration();
|
||||
Update();
|
||||
//LoadConfiguration();
|
||||
ScopeNode componentsNode = scopeTree.Nodes[0] as ScopeNode;
|
||||
componentsNode.Nodes.Clear();
|
||||
componentsNode.Populated = false;
|
||||
OnScopeTreeAfterSelect(scopeTree, new TreeViewEventArgs(componentsNode));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes application
|
||||
/// </summary>
|
||||
internal void InitializeApplication()
|
||||
{
|
||||
CheckForIllegalCrossThreadCalls = false;
|
||||
LifetimeServices.LeaseTime = TimeSpan.Zero;
|
||||
|
||||
this.splitContainer.Panel2MinSize = 380;
|
||||
this.splitContainer.Panel1MinSize = 150;
|
||||
this.progressManager = new ProgressManager(this, this.statusBarLabel);
|
||||
instance = this;
|
||||
|
||||
AddDefaultNodes();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disables application content
|
||||
/// </summary>
|
||||
internal void DisableContent()
|
||||
{
|
||||
scopeTree.Enabled = false;
|
||||
pnlResultView.Enabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enables application content
|
||||
/// </summary>
|
||||
internal void EnableContent()
|
||||
{
|
||||
scopeTree.Enabled = true;
|
||||
pnlResultView.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows error message
|
||||
/// </summary>
|
||||
/// <param name="message">Message</param>
|
||||
internal void ShowError(string message)
|
||||
{
|
||||
MessageBox.Show(this, message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows default web error message
|
||||
/// </summary>
|
||||
internal void ShowServerError()
|
||||
{
|
||||
ShowError("An error occurred while connecting to the remote server. Please check your internet connection.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows default error message
|
||||
/// </summary>
|
||||
internal void ShowError()
|
||||
{
|
||||
ShowError("An unexpected error has occurred. We apologize for this inconvenience.\n" +
|
||||
"Please contact Technical Support at support@websitepanel.net.\n\n" +
|
||||
"Make sure you include a copy of the Installer.log file from the\n" +
|
||||
"WebsitePanel Installer home directory.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows security error message
|
||||
/// </summary>
|
||||
internal void ShowSecurityError()
|
||||
{
|
||||
ShowError(Global.Messages.NotEnoughPermissionsError);
|
||||
}
|
||||
|
||||
internal void ShowError(Exception ex)
|
||||
{
|
||||
if (Utils.IsSecurityException(ex))
|
||||
ShowSecurityError();
|
||||
else
|
||||
ShowError();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Shows info message
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
internal void ShowInfo(string message)
|
||||
{
|
||||
MessageBox.Show(this, message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows warning message
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
internal void ShowWarning(string message)
|
||||
{
|
||||
MessageBox.Show(this, message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads installed components from configuration file
|
||||
/// </summary>
|
||||
private void LoadInstalledComponents(ScopeNode node)
|
||||
{
|
||||
Log.WriteStart("Loading installed components");
|
||||
node.Nodes.Clear();
|
||||
|
||||
foreach (ComponentConfigElement componentConfig in AppConfigManager.AppConfiguration.Components)
|
||||
{
|
||||
string instance = string.Empty;
|
||||
if (componentConfig.Settings["Instance"] != null &&
|
||||
!string.IsNullOrEmpty(componentConfig.Settings["Instance"].Value))
|
||||
{
|
||||
instance = "(" + componentConfig.Settings["Instance"].Value + ")";
|
||||
}
|
||||
string title = string.Format("{0} {1} {2} {3}",
|
||||
componentConfig.Settings["ApplicationName"].Value,
|
||||
componentConfig.Settings["ComponentName"].Value,
|
||||
componentConfig.Settings["Release"].Value,
|
||||
instance);
|
||||
|
||||
AddComponentNode(node, title, componentConfig);
|
||||
}
|
||||
node.Populated = true;
|
||||
Log.WriteEnd(string.Format("{0} installed component(s) loaded", AppConfigManager.AppConfiguration.Components.Count));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns installer web service
|
||||
/// </summary>
|
||||
internal InstallerService WebService
|
||||
{
|
||||
get
|
||||
{
|
||||
return ServiceProviderProxy.GetInstallerWebService();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks for the application update
|
||||
/// </summary>
|
||||
/// <param name="fileName">File name</param>
|
||||
/// <returns>true if update is available for download; otherwise false</returns>
|
||||
internal bool CheckForUpdate(out string fileName)
|
||||
{
|
||||
bool ret = false;
|
||||
fileName = string.Empty;
|
||||
Log.WriteStart("Checking for a new version");
|
||||
//
|
||||
var webService = ServiceProviderProxy.GetInstallerWebService();
|
||||
DataSet ds = webService.GetLatestComponentUpdate("cfg core");
|
||||
//
|
||||
Log.WriteEnd("Checked for a new version");
|
||||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
DataRow row = ds.Tables[0].Rows[0];
|
||||
Version currentVersion = GetType().Assembly.GetName().Version;
|
||||
Version newVersion = null;
|
||||
try
|
||||
{
|
||||
newVersion = new Version(row["Version"].ToString());
|
||||
}
|
||||
catch (FormatException e)
|
||||
{
|
||||
Log.WriteError("Version error", e);
|
||||
return false;
|
||||
}
|
||||
if (newVersion > currentVersion)
|
||||
{
|
||||
ret = true;
|
||||
fileName = row["UpgradeFilePath"].ToString();
|
||||
Log.WriteInfo(string.Format("Version {0} is available for download", newVersion));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Runs application updater
|
||||
/// </summary>
|
||||
/// <param name="fileName">File name</param>
|
||||
/// <returns>true if updater started successfully</returns>
|
||||
internal bool StartUpdateProcess(string fileName)
|
||||
{
|
||||
Log.WriteStart("Starting updater");
|
||||
string tmpFile = Path.ChangeExtension(Path.GetTempFileName(), ".exe");
|
||||
using (Stream writeStream = File.Create(tmpFile))
|
||||
{
|
||||
using (Stream readStream = typeof(Program).Assembly.GetManifestResourceStream("WebsitePanel.Installer.Updater.exe"))
|
||||
{
|
||||
byte[] buffer = new byte[(int)readStream.Length];
|
||||
readStream.Read(buffer, 0, buffer.Length);
|
||||
writeStream.Write(buffer, 0, buffer.Length);
|
||||
}
|
||||
}
|
||||
string targetFile = GetType().Module.FullyQualifiedName;
|
||||
//
|
||||
var webService = ServiceProviderProxy.GetInstallerWebService();
|
||||
string url = webService.Url;
|
||||
//
|
||||
string proxyServer = string.Empty;
|
||||
string user = string.Empty;
|
||||
string password = string.Empty;
|
||||
|
||||
// check if we need to add a proxy to access Internet
|
||||
bool useProxy = AppConfigManager.AppConfiguration.GetBooleanSetting(ConfigKeys.Web_Proxy_UseProxy);
|
||||
if (useProxy)
|
||||
{
|
||||
proxyServer = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_Address].Value;
|
||||
user = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_UserName].Value;
|
||||
password = AppConfigManager.AppConfiguration.Settings[ConfigKeys.Web_Proxy_Password].Value;
|
||||
}
|
||||
|
||||
ProcessStartInfo info = new ProcessStartInfo();
|
||||
info.FileName = tmpFile;
|
||||
|
||||
//prepare command line args
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendFormat("\\url:\"{0}\" ", url);
|
||||
sb.AppendFormat("\\target:\"{0}\" ", targetFile);
|
||||
sb.AppendFormat("\\file:\"{0}\" ", fileName);
|
||||
sb.AppendFormat("\\proxy:\"{0}\" ", proxyServer);
|
||||
sb.AppendFormat("\\user:\"{0}\" ", user);
|
||||
sb.AppendFormat("\\password:\"{0}\" ", password);
|
||||
info.Arguments = sb.ToString();
|
||||
Process process = Process.Start(info);
|
||||
if (process.Handle != IntPtr.Zero)
|
||||
{
|
||||
User32.SetForegroundWindow(process.Handle);
|
||||
}
|
||||
Log.WriteEnd("Updater started");
|
||||
return (process.Handle != IntPtr.Zero);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Progress indication
|
||||
|
||||
/// <summary>
|
||||
/// Starts progress indication
|
||||
/// </summary>
|
||||
/// <param name="title">Title</param>
|
||||
internal void StartProgress(string title)
|
||||
{
|
||||
StartProgress(title, false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts progress indication
|
||||
/// </summary>
|
||||
/// <param name="title">Title</param>
|
||||
/// <param name="disableContent">Disable content</param>
|
||||
internal void StartProgress(string title, bool disableContent)
|
||||
{
|
||||
if (disableContent)
|
||||
{
|
||||
DisableContent();
|
||||
}
|
||||
progressManager.StartProgress(title);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts async progress indication
|
||||
/// </summary>
|
||||
/// <param name="title">Title</param>
|
||||
/// <param name="disableContent">Disable content</param>
|
||||
internal void StartAsyncProgress(string title, bool disableContent)
|
||||
{
|
||||
if (disableContent)
|
||||
{
|
||||
DisableContent();
|
||||
}
|
||||
topLogoControl.ShowProgress();
|
||||
progressManager.StartProgress(title);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Finishes progress indication
|
||||
/// </summary>
|
||||
internal void FinishProgress()
|
||||
{
|
||||
topLogoControl.HideProgress();
|
||||
progressManager.FinishProgress();
|
||||
EnableContent();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void OnApplicationFormShown(object sender, EventArgs e)
|
||||
{
|
||||
StartUnattendedSetup();
|
||||
}
|
||||
|
||||
private void StartUnattendedSetup()
|
||||
{
|
||||
XmlDocument doc = Global.SetupXmlDocument;
|
||||
if (doc != null)
|
||||
{
|
||||
XmlNode root = doc.SelectSingleNode("setup");
|
||||
if (root == null)
|
||||
{
|
||||
Log.WriteError("Incorrect setup xml file");
|
||||
Close();
|
||||
}
|
||||
Log.WriteStart("Starting unattended setup");
|
||||
ProceedUnattendedSetup();
|
||||
}
|
||||
}
|
||||
|
||||
public void ProceedUnattendedSetup()
|
||||
{
|
||||
XmlDocument doc = Global.SetupXmlDocument;
|
||||
XmlNode root = doc.SelectSingleNode("setup");
|
||||
if (root.ChildNodes.Count == 0)
|
||||
{
|
||||
Log.WriteEnd("Unuttended setup finished");
|
||||
Close();
|
||||
return;
|
||||
}
|
||||
XmlNode node = root.ChildNodes[0];
|
||||
switch (node.Name.ToLower())
|
||||
{
|
||||
case "install":
|
||||
ParseInstallNode(node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void ParseInstallNode(XmlNode installNode)
|
||||
{
|
||||
XmlNodeList components = installNode.SelectNodes("component");
|
||||
if (components.Count == 0)
|
||||
{
|
||||
//remove parent install node
|
||||
installNode.ParentNode.RemoveChild(installNode);
|
||||
ProceedUnattendedSetup();
|
||||
}
|
||||
else
|
||||
{
|
||||
//remove current node and start installation
|
||||
XmlElement componentNode = (XmlElement)components[0];
|
||||
string componentCode = componentNode.GetAttribute("code");
|
||||
string componentVersion = componentNode.GetAttribute("version");
|
||||
string xml = componentNode.InnerXml;
|
||||
installNode.RemoveChild(componentNode);
|
||||
|
||||
if (!string.IsNullOrEmpty(componentCode))
|
||||
{
|
||||
ScopeNode componentsNode = scopeTree.Nodes[0] as ScopeNode;
|
||||
scopeTree.SelectedNode = componentsNode;
|
||||
ComponentsControl ctrl = componentsNode.ResultView as ComponentsControl;
|
||||
ctrl.InstallComponent(componentCode, componentVersion, xml);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override object InitializeLifetimeService()
|
||||
{
|
||||
ILease lease = (ILease)base.InitializeLifetimeService();
|
||||
|
||||
//Set lease properties
|
||||
lease.InitialLeaseTime = TimeSpan.Zero;
|
||||
return lease;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Text;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
internal class AppContext
|
||||
{
|
||||
private ApplicationForm appForm;
|
||||
private ScopeNode scopeNode;
|
||||
|
||||
public ApplicationForm AppForm
|
||||
{
|
||||
get { return appForm; }
|
||||
set { appForm = value; }
|
||||
}
|
||||
|
||||
public ScopeNode ScopeNode
|
||||
{
|
||||
get { return scopeNode; }
|
||||
set { scopeNode = value; }
|
||||
}
|
||||
|
||||
public string CurrentPath
|
||||
{
|
||||
get { return FileUtils.GetCurrentDirectory(); }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
internal class ProgressManager
|
||||
{
|
||||
private Form form;
|
||||
private ToolStripStatusLabel label;
|
||||
private Cursor cursor;
|
||||
|
||||
public ProgressManager(Form form, ToolStripStatusLabel label)
|
||||
{
|
||||
this.form = form;
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public void StartProgress(string title)
|
||||
{
|
||||
cursor = form.Cursor;
|
||||
form.Cursor = Cursors.WaitCursor;
|
||||
label.Text = title;
|
||||
if (label.Owner != null)
|
||||
label.Owner.Refresh();
|
||||
}
|
||||
|
||||
public void FinishProgress()
|
||||
{
|
||||
form.Cursor = cursor;
|
||||
label.Text = "Ready";
|
||||
if ( label.Owner != null )
|
||||
label.Owner.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using WebsitePanel.Installer.Controls;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
internal enum NodeType
|
||||
{
|
||||
Servers,
|
||||
Server,
|
||||
Components,
|
||||
Component,
|
||||
Module,
|
||||
Settings,
|
||||
Service
|
||||
};
|
||||
|
||||
internal class ScopeNode : TreeNode
|
||||
{
|
||||
private bool populated;
|
||||
private Icon largeIcon;
|
||||
private Icon smallIcon;
|
||||
private ResultViewControl resultView;
|
||||
private NodeType nodeType;
|
||||
private object dataObject;
|
||||
|
||||
public ScopeNode()
|
||||
{
|
||||
}
|
||||
|
||||
public bool Populated
|
||||
{
|
||||
get { return populated; }
|
||||
set { populated = value; }
|
||||
}
|
||||
|
||||
public Icon LargeIcon
|
||||
{
|
||||
get { return largeIcon; }
|
||||
set { largeIcon = value; }
|
||||
}
|
||||
|
||||
public Icon SmallIcon
|
||||
{
|
||||
get { return smallIcon; }
|
||||
set { smallIcon = value; }
|
||||
}
|
||||
|
||||
public ResultViewControl ResultView
|
||||
{
|
||||
get { return resultView; }
|
||||
set { resultView = value; }
|
||||
}
|
||||
|
||||
public NodeType NodeType
|
||||
{
|
||||
get { return nodeType; }
|
||||
set { nodeType = value; }
|
||||
}
|
||||
|
||||
public object DataObject
|
||||
{
|
||||
get { return dataObject; }
|
||||
set { dataObject = value; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Runtime.InteropServices;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
internal sealed class User32
|
||||
{
|
||||
/// <summary>
|
||||
/// Win32 API Constants for ShowWindowAsync()
|
||||
/// </summary>
|
||||
internal const int SW_HIDE = 0;
|
||||
internal const int SW_SHOWNORMAL = 1;
|
||||
internal const int SW_SHOWMINIMIZED = 2;
|
||||
internal const int SW_SHOWMAXIMIZED = 3;
|
||||
internal const int SW_SHOWNOACTIVATE = 4;
|
||||
internal const int SW_RESTORE = 9;
|
||||
internal const int SW_SHOWDEFAULT = 10;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern bool SetForegroundWindow(IntPtr hWnd);
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern bool IsIconic(IntPtr hWnd);
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Diagnostics;
|
||||
using System.DirectoryServices;
|
||||
using System.DirectoryServices.ActiveDirectory;
|
||||
|
||||
using System.Security.Principal;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using WebsitePanel.Installer.Core;
|
||||
|
||||
namespace WebsitePanel.Installer.Common
|
||||
{
|
||||
public static class UiUtils
|
||||
{
|
||||
public static void ShowRunningInstance()
|
||||
{
|
||||
Process currentProcess = Process.GetCurrentProcess();
|
||||
foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName))
|
||||
{
|
||||
if (process.Id != currentProcess.Id)
|
||||
{
|
||||
//set focus
|
||||
User32.SetForegroundWindow(process.MainWindowHandle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
213
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.Designer.cs
generated
Normal file
213
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,213 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class ComponentControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ComponentControl));
|
||||
this.grpInfo = new System.Windows.Forms.GroupBox();
|
||||
this.txtVersion = new System.Windows.Forms.TextBox();
|
||||
this.lblVersion = new System.Windows.Forms.Label();
|
||||
this.txtComponent = new System.Windows.Forms.TextBox();
|
||||
this.lblComponent = new System.Windows.Forms.Label();
|
||||
this.txtApplication = new System.Windows.Forms.TextBox();
|
||||
this.lblApplication = new System.Windows.Forms.Label();
|
||||
this.grpDescription = new System.Windows.Forms.GroupBox();
|
||||
this.lblDescription = new System.Windows.Forms.Label();
|
||||
this.btnCheckUpdate = new System.Windows.Forms.Button();
|
||||
this.btnSettings = new System.Windows.Forms.Button();
|
||||
this.btnRemove = new System.Windows.Forms.Button();
|
||||
this.grpInfo.SuspendLayout();
|
||||
this.grpDescription.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpInfo
|
||||
//
|
||||
this.grpInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpInfo.Controls.Add(this.txtVersion);
|
||||
this.grpInfo.Controls.Add(this.lblVersion);
|
||||
this.grpInfo.Controls.Add(this.txtComponent);
|
||||
this.grpInfo.Controls.Add(this.lblComponent);
|
||||
this.grpInfo.Controls.Add(this.txtApplication);
|
||||
this.grpInfo.Controls.Add(this.lblApplication);
|
||||
this.grpInfo.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpInfo.Location = new System.Drawing.Point(14, 43);
|
||||
this.grpInfo.Name = "grpInfo";
|
||||
this.grpInfo.Size = new System.Drawing.Size(379, 122);
|
||||
this.grpInfo.TabIndex = 3;
|
||||
this.grpInfo.TabStop = false;
|
||||
this.grpInfo.Text = "Summary";
|
||||
//
|
||||
// txtVersion
|
||||
//
|
||||
this.txtVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtVersion.Location = new System.Drawing.Point(122, 82);
|
||||
this.txtVersion.Name = "txtVersion";
|
||||
this.txtVersion.ReadOnly = true;
|
||||
this.txtVersion.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtVersion.TabIndex = 5;
|
||||
//
|
||||
// lblVersion
|
||||
//
|
||||
this.lblVersion.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblVersion.Location = new System.Drawing.Point(16, 82);
|
||||
this.lblVersion.Name = "lblVersion";
|
||||
this.lblVersion.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblVersion.TabIndex = 4;
|
||||
this.lblVersion.Text = "Version";
|
||||
//
|
||||
// txtComponent
|
||||
//
|
||||
this.txtComponent.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtComponent.Location = new System.Drawing.Point(122, 55);
|
||||
this.txtComponent.Name = "txtComponent";
|
||||
this.txtComponent.ReadOnly = true;
|
||||
this.txtComponent.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtComponent.TabIndex = 3;
|
||||
//
|
||||
// lblComponent
|
||||
//
|
||||
this.lblComponent.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblComponent.Location = new System.Drawing.Point(16, 55);
|
||||
this.lblComponent.Name = "lblComponent";
|
||||
this.lblComponent.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblComponent.TabIndex = 2;
|
||||
this.lblComponent.Text = "Component";
|
||||
//
|
||||
// txtApplication
|
||||
//
|
||||
this.txtApplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtApplication.Location = new System.Drawing.Point(122, 28);
|
||||
this.txtApplication.Name = "txtApplication";
|
||||
this.txtApplication.ReadOnly = true;
|
||||
this.txtApplication.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtApplication.TabIndex = 1;
|
||||
//
|
||||
// lblApplication
|
||||
//
|
||||
this.lblApplication.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblApplication.Location = new System.Drawing.Point(16, 28);
|
||||
this.lblApplication.Name = "lblApplication";
|
||||
this.lblApplication.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblApplication.TabIndex = 0;
|
||||
this.lblApplication.Text = "Application";
|
||||
//
|
||||
// grpDescription
|
||||
//
|
||||
this.grpDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpDescription.Controls.Add(this.lblDescription);
|
||||
this.grpDescription.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpDescription.Location = new System.Drawing.Point(14, 171);
|
||||
this.grpDescription.Name = "grpDescription";
|
||||
this.grpDescription.Size = new System.Drawing.Size(379, 117);
|
||||
this.grpDescription.TabIndex = 4;
|
||||
this.grpDescription.TabStop = false;
|
||||
this.grpDescription.Text = "Description";
|
||||
//
|
||||
// lblDescription
|
||||
//
|
||||
this.lblDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblDescription.Location = new System.Drawing.Point(3, 17);
|
||||
this.lblDescription.Name = "lblDescription";
|
||||
this.lblDescription.Size = new System.Drawing.Size(373, 97);
|
||||
this.lblDescription.TabIndex = 0;
|
||||
//
|
||||
// btnCheckUpdate
|
||||
//
|
||||
this.btnCheckUpdate.Image = ((System.Drawing.Image)(resources.GetObject("btnCheckUpdate.Image")));
|
||||
this.btnCheckUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnCheckUpdate.Location = new System.Drawing.Point(14, 9);
|
||||
this.btnCheckUpdate.Name = "btnCheckUpdate";
|
||||
this.btnCheckUpdate.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnCheckUpdate.TabIndex = 0;
|
||||
this.btnCheckUpdate.Text = " &Check For Updates";
|
||||
this.btnCheckUpdate.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||
this.btnCheckUpdate.UseVisualStyleBackColor = true;
|
||||
this.btnCheckUpdate.Click += new System.EventHandler(this.OnCheckUpdateClick);
|
||||
//
|
||||
// btnSettings
|
||||
//
|
||||
this.btnSettings.Image = ((System.Drawing.Image)(resources.GetObject("btnSettings.Image")));
|
||||
this.btnSettings.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnSettings.Location = new System.Drawing.Point(262, 9);
|
||||
this.btnSettings.Name = "btnSettings";
|
||||
this.btnSettings.Size = new System.Drawing.Size(108, 28);
|
||||
this.btnSettings.TabIndex = 2;
|
||||
this.btnSettings.Text = "&Settings";
|
||||
this.btnSettings.UseVisualStyleBackColor = true;
|
||||
this.btnSettings.Click += new System.EventHandler(this.OnSettingsClick);
|
||||
//
|
||||
// btnRemove
|
||||
//
|
||||
this.btnRemove.Image = ((System.Drawing.Image)(resources.GetObject("btnRemove.Image")));
|
||||
this.btnRemove.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnRemove.Location = new System.Drawing.Point(148, 9);
|
||||
this.btnRemove.Name = "btnRemove";
|
||||
this.btnRemove.Size = new System.Drawing.Size(108, 28);
|
||||
this.btnRemove.TabIndex = 1;
|
||||
this.btnRemove.Text = "&Uninstall";
|
||||
this.btnRemove.Click += new System.EventHandler(this.OnRemoveClick);
|
||||
//
|
||||
// ComponentControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.grpDescription);
|
||||
this.Controls.Add(this.grpInfo);
|
||||
this.Controls.Add(this.btnCheckUpdate);
|
||||
this.Controls.Add(this.btnSettings);
|
||||
this.Controls.Add(this.btnRemove);
|
||||
this.Name = "ComponentControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpInfo.ResumeLayout(false);
|
||||
this.grpInfo.PerformLayout();
|
||||
this.grpDescription.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button btnRemove;
|
||||
private System.Windows.Forms.Button btnSettings;
|
||||
private System.Windows.Forms.Button btnCheckUpdate;
|
||||
private System.Windows.Forms.GroupBox grpInfo;
|
||||
private System.Windows.Forms.TextBox txtVersion;
|
||||
private System.Windows.Forms.Label lblVersion;
|
||||
private System.Windows.Forms.TextBox txtComponent;
|
||||
private System.Windows.Forms.Label lblComponent;
|
||||
private System.Windows.Forms.TextBox txtApplication;
|
||||
private System.Windows.Forms.Label lblApplication;
|
||||
private System.Windows.Forms.GroupBox grpDescription;
|
||||
private System.Windows.Forms.Label lblDescription;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,393 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Threading;
|
||||
using System.IO;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
using WebsitePanel.Installer.Services;
|
||||
using WebsitePanel.Installer.Core;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Component control
|
||||
/// </summary>
|
||||
internal partial class ComponentControl : ResultViewControl
|
||||
{
|
||||
delegate void ReloadApplicationCallback();
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ComponentControl class.
|
||||
/// </summary>
|
||||
public ComponentControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows control
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
public override void ShowControl(AppContext context)
|
||||
{
|
||||
base.ShowControl(context);
|
||||
if (!IsInitialized)
|
||||
{
|
||||
ComponentConfigElement element = context.ScopeNode.Tag as ComponentConfigElement;
|
||||
if (element != null)
|
||||
{
|
||||
txtApplication.Text = element.GetStringSetting("ApplicationName");
|
||||
txtComponent.Text = element.GetStringSetting("ComponentName");
|
||||
txtVersion.Text = element.GetStringSetting("Release");
|
||||
lblDescription.Text = element.GetStringSetting("ComponentDescription");
|
||||
|
||||
string installer = element.GetStringSetting("Installer");
|
||||
string path = element.GetStringSetting("InstallerPath");
|
||||
string type = element.GetStringSetting("InstallerType");
|
||||
if ( string.IsNullOrEmpty(installer) ||
|
||||
string.IsNullOrEmpty(path) ||
|
||||
string.IsNullOrEmpty(type))
|
||||
{
|
||||
btnRemove.Enabled = false;
|
||||
btnSettings.Enabled = false;
|
||||
}
|
||||
}
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Action on Remove button click
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnRemoveClick(object sender, EventArgs e)
|
||||
{
|
||||
UninstallComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Action on Settings button click
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnSettingsClick(object sender, EventArgs e)
|
||||
{
|
||||
SetupComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Action on Check For Update button click
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnCheckUpdateClick(object sender, EventArgs e)
|
||||
{
|
||||
//start check in the separate thread
|
||||
AppContext.AppForm.StartAsyncProgress("Connecting...", true);
|
||||
ThreadStart threadDelegate = new ThreadStart(CheckForUpdate);
|
||||
Thread newThread = new Thread(threadDelegate);
|
||||
newThread.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks for component update
|
||||
/// </summary>
|
||||
private void CheckForUpdate()
|
||||
{
|
||||
Log.WriteStart("Checking for component update");
|
||||
ComponentConfigElement element = AppContext.ScopeNode.Tag as ComponentConfigElement;
|
||||
|
||||
string componentName = element.GetStringSetting("ComponentName");
|
||||
string componentCode = element.GetStringSetting("ComponentCode");
|
||||
string release = element.GetStringSetting("Release");
|
||||
|
||||
// call web service
|
||||
DataSet ds;
|
||||
try
|
||||
{
|
||||
Log.WriteInfo(string.Format("Checking {0} {1}", componentName, release));
|
||||
//
|
||||
var webService = ServiceProviderProxy.GetInstallerWebService();
|
||||
ds = webService.GetComponentUpdate(componentCode, release);
|
||||
//
|
||||
Log.WriteEnd("Component update checked");
|
||||
AppContext.AppForm.FinishProgress();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Service error", ex);
|
||||
AppContext.AppForm.FinishProgress();
|
||||
AppContext.AppForm.ShowServerError();
|
||||
return;
|
||||
}
|
||||
|
||||
string appName = AppContext.AppForm.Text;
|
||||
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
DataRow row = ds.Tables[0].Rows[0];
|
||||
string newVersion = row["Version"].ToString();
|
||||
Log.WriteInfo(string.Format("Version {0} is available for download", newVersion));
|
||||
|
||||
string message = string.Format("{0} {1} is available now.\nWould you like to install new version?", componentName, newVersion);
|
||||
if (MessageBox.Show(AppContext.AppForm, message, appName, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
|
||||
{
|
||||
string fileToDownload = row["UpgradeFilePath"].ToString();
|
||||
string installerPath = row["InstallerPath"].ToString();
|
||||
string installerType = row["InstallerType"].ToString();
|
||||
UpdateComponent(fileToDownload, installerPath, installerType, newVersion);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = string.Format("Current version of {0} is up to date.", componentName);
|
||||
Log.WriteInfo(message);
|
||||
AppContext.AppForm.ShowInfo(message);
|
||||
}
|
||||
}
|
||||
|
||||
delegate void UpdateComponentCallback(string fileName, string path, string type, string version);
|
||||
|
||||
/// <summary>
|
||||
/// Runs component update
|
||||
/// </summary>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="type"></param>
|
||||
private void UpdateComponent(string fileName, string path, string type, string version)
|
||||
{
|
||||
// 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.InvokeRequired)
|
||||
{
|
||||
UpdateComponentCallback callBack = new UpdateComponentCallback(UpdateComponent);
|
||||
Invoke(callBack, new object[] { fileName, path, type, version });
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.WriteStart("Updating component");
|
||||
|
||||
ComponentConfigElement element = AppContext.ScopeNode.Tag as ComponentConfigElement;
|
||||
string componentId = element.ID;
|
||||
string componentName = element.GetStringSetting("ComponentName");
|
||||
|
||||
try
|
||||
{
|
||||
Log.WriteInfo(string.Format("Updating {0}", componentName));
|
||||
//download installer
|
||||
Loader form = new Loader(this.AppContext, fileName);
|
||||
DialogResult result = form.ShowDialog(this);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
//run installer
|
||||
string tmpFolder = FileUtils.GetTempDirectory();
|
||||
string installerPath = Path.Combine(tmpFolder, path);
|
||||
Update();
|
||||
string method = "Update";
|
||||
Log.WriteStart(string.Format("Running installer {0}.{1} from {2}", type, method, path));
|
||||
Hashtable args = new Hashtable();
|
||||
args["ComponentId"] = componentId;
|
||||
args["ShellVersion"] = AppContext.AppForm.Version;
|
||||
args["BaseDirectory"] = FileUtils.GetCurrentDirectory();
|
||||
args["UpdateVersion"] = version;
|
||||
args["Installer"] = Path.GetFileName(fileName);
|
||||
args["InstallerType"] = type;
|
||||
args["InstallerPath"] = path;
|
||||
args["InstallerFolder"] = tmpFolder;
|
||||
args["IISVersion"] = Global.IISVersion;
|
||||
args["ParentForm"] = FindForm();
|
||||
|
||||
result = (DialogResult)AssemblyLoader.Execute(installerPath, type, method, new object[] { args });
|
||||
Log.WriteInfo(string.Format("Installer returned {0}", result));
|
||||
Log.WriteEnd("Installer finished");
|
||||
Update();
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
ReloadApplication();
|
||||
}
|
||||
FileUtils.DeleteTempDirectory();
|
||||
}
|
||||
Log.WriteEnd("Update completed");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Installer error", ex);
|
||||
AppContext.AppForm.ShowError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Uninstalls component
|
||||
/// </summary>
|
||||
private void UninstallComponent()
|
||||
{
|
||||
Log.WriteStart("Uninstalling component");
|
||||
|
||||
ComponentConfigElement element = AppContext.ScopeNode.Tag as ComponentConfigElement;
|
||||
string installer = element.GetStringSetting(Global.Parameters.Installer);
|
||||
string path = element.GetStringSetting(Global.Parameters.InstallerPath);
|
||||
string type = element.GetStringSetting(Global.Parameters.InstallerType);
|
||||
string componentId = element.ID;
|
||||
string componentCode = element.GetStringSetting(Global.Parameters.ComponentCode);
|
||||
string componentName = element.GetStringSetting(Global.Parameters.ComponentName);
|
||||
string release = element.GetStringSetting(Global.Parameters.Release);
|
||||
|
||||
try
|
||||
{
|
||||
Log.WriteInfo(string.Format("Uninstalling {0}", componentName));
|
||||
//download installer
|
||||
Loader form = new Loader(this.AppContext, installer, componentCode, release);
|
||||
DialogResult result = form.ShowDialog(this);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
//run installer
|
||||
string tmpFolder = FileUtils.GetTempDirectory();
|
||||
path = Path.Combine(tmpFolder, path);
|
||||
Update();
|
||||
string method = "Uninstall";
|
||||
//
|
||||
Log.WriteStart(string.Format("Running installer {0}.{1} from {2}", type, method, path));
|
||||
//
|
||||
var args = new Hashtable
|
||||
{
|
||||
{ Global.Parameters.ComponentId, componentId },
|
||||
{ Global.Parameters.ComponentCode, componentCode },
|
||||
{ Global.Parameters.ShellVersion, AppContext.AppForm.Version },
|
||||
{ Global.Parameters.BaseDirectory, FileUtils.GetCurrentDirectory() },
|
||||
{ Global.Parameters.IISVersion, Global.IISVersion },
|
||||
{ Global.Parameters.ParentForm, FindForm() },
|
||||
};
|
||||
//
|
||||
result = (DialogResult)AssemblyLoader.Execute(path, type, method, new object[] { args });
|
||||
//
|
||||
Log.WriteInfo(string.Format("Installer returned {0}", result));
|
||||
Log.WriteEnd("Installer finished");
|
||||
Update();
|
||||
ReloadApplication();
|
||||
FileUtils.DeleteTempDirectory();
|
||||
|
||||
}
|
||||
Log.WriteEnd("Uninstall completed");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Installer error", ex);
|
||||
AppContext.AppForm.ShowError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setup component
|
||||
/// </summary>
|
||||
private void SetupComponent()
|
||||
{
|
||||
Log.WriteStart("Starting component setup");
|
||||
|
||||
var element = AppContext.ScopeNode.Tag as ComponentConfigElement;
|
||||
|
||||
string installer = element.GetStringSetting("Installer");
|
||||
string path = element.GetStringSetting("InstallerPath");
|
||||
string type = element.GetStringSetting("InstallerType");
|
||||
string componentId = element.ID;
|
||||
string componentCode = element.GetStringSetting("ComponentCode");
|
||||
string componentName = element.GetStringSetting("ComponentName");
|
||||
string release = element.GetStringSetting("Release");
|
||||
|
||||
try
|
||||
{
|
||||
Log.WriteInfo(string.Format("Setup {0} {1}", componentName, release));
|
||||
//download installer
|
||||
Loader form = new Loader(this.AppContext, installer, componentCode, release);
|
||||
DialogResult result = form.ShowDialog(this);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
string tmpFolder = Path.Combine(AppContext.CurrentPath, "Tmp");
|
||||
path = Path.Combine(tmpFolder, path);
|
||||
Update();
|
||||
string method = "Setup";
|
||||
Log.WriteStart(string.Format("Running installer {0}.{1} from {2}", type, method, path));
|
||||
Hashtable args = new Hashtable();
|
||||
args["ComponentId"] = componentId;
|
||||
args["ShellVersion"] = AppContext.AppForm.Version;
|
||||
args["BaseDirectory"] = FileUtils.GetCurrentDirectory();
|
||||
args["IISVersion"] = Global.IISVersion;
|
||||
args["ParentForm"] = FindForm();
|
||||
args[Global.Parameters.ShellMode] = Global.VisualInstallerShell;
|
||||
//
|
||||
result = (DialogResult)AssemblyLoader.Execute(path, type, method, new object[] { args });
|
||||
//
|
||||
Log.WriteInfo(string.Format("Installer returned {0}", result));
|
||||
Log.WriteEnd("Installer finished");
|
||||
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
ReloadApplication();
|
||||
}
|
||||
FileUtils.DeleteTempDirectory();
|
||||
}
|
||||
Log.WriteEnd("Component setup completed");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Installer error", ex);
|
||||
this.AppContext.AppForm.ShowError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Thread safe application reload
|
||||
/// </summary>
|
||||
private void ReloadApplication()
|
||||
{
|
||||
// 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.InvokeRequired)
|
||||
{
|
||||
ReloadApplicationCallback callback = new ReloadApplicationCallback(ReloadApplication);
|
||||
Invoke(callback, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
AppContext.AppForm.ReloadApplication();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,172 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnCheckUpdate.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA05JREFUOE+Vk2tI
|
||||
k2EYhtMF/Qqi0haVaaP80jbnnIecNQ+bh5k5yxpump+Zh2EnSbODqalBcxrNkppJTd1Sl3kIKrTylMM0
|
||||
MyxL1LKWqQyMEjpQpnefKwLzVy88f16e++J+3vd+LBb8cxi8TP5KxhrhklXLfWm0hXafP34dGB963/zh
|
||||
/Wjr9M+pJ1T754nBQsyRLd9wkFbbOW7pE6dRBCqKv0fps5H2IB/7dfUIPdsCmaoHwqR7RtczZDXV60jV
|
||||
wjmAnZmdFgHJN25xSuNBNmQi7Xot8l5qIL7cjnDNE8SUvYD4VBsiztZN27kUKikAiyrLv5DNkmvniSsS
|
||||
eL5g49FEIyan+nHXMIR9dc9AthgRWzWA3Wc6kFJ9HduOX5he5XT6KAVYZgasdk73ts9JmnHslCJ2WIY3
|
||||
3wz4OmPEgNEE5esxRLWPgtQPQlrQDaUpGrkmARwj8set7JMFZoCdKEttqWZhbeU28Hvk0EwWYNQ0CaW2
|
||||
A2SPCTsajYjQ9iMs24CMES+kjPHgmnMEa7l5p8yADWT2CHtXOVhRWngm6BB0qBInLjZB2vcJIQYTAmuG
|
||||
IS56hpDjBuRN+CF6iI1Nl/zgKChrMgNsYlN/uElugyVvAjv/OTzL+sG/MQx+zVvwda8gLOqD6HQ3BPKH
|
||||
COhdB+dGa1ir3OHgUzViBtAlKWNMUgVuZD2YUj2YkTqwZKVwjqkAL6UJ/uldECS1w0PagPXFMrDO7QVn
|
||||
jxoMbskfB2xVEeFWj00CPThherj37YR4MA7y1ydBVpfAV94Cr6g28KJbwU9sxtaEeniSNVjDVGT9duCQ
|
||||
EUS43QaxpQLrykVY3CwGrzsBW3oTETJwAJE31fBNNkCY2ozwC72I1vfDJ6Htk5X9EZEZQP3nYlt28VXC
|
||||
ow6EpBAWaiZod9zB6AiHy9N4cJ/GgPtyO/XA5Yi4RiXycCdsXQuyKR39b5AoGpPB0TUQHrWwleVihU4I
|
||||
u8Yw2Dz0hU1HAFy6EsFPq4T3/nY4h1ZpKbHrnCTOZpuCODFcrhQ7eNVi6TERrDWBoN/ngaPNhb/yPoJy
|
||||
W6ftvdUFf8SL/l3C2VFos/Gkb0wPXr31aCndP/4dsUfxhfAqfczgnFdYE6nBs7bnLdI80n9e/AKxCsOV
|
||||
gSO8kwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnSettings.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAYZJREFUOE+lU8tK
|
||||
AlEYdhf0FNUbtKo3aNcL1APUIwTtctHOCtQSallkG3cSBUUXEBkhKTWNbmIkrmbOnJkzOpev/wyOzGiQ
|
||||
5Bk+Bob5bv/PicUmPYm9NCZBTJIf6x9/Ym1j1/8n/JZcX6ColP6FgQBCxwM9ngfXdWE7DjbLTawX32BZ
|
||||
FoQpYBgGOOfQdd2v7if4VYDIh402Fi4qSFRaEMKCaZokQGSug+lsVCDs/vClYvZUweplDZYQMIUkk7vO
|
||||
wRgJaNqoQIdbYKILx3GxfFLCTOoOtY5K7jK6OYjOGIM2LOBRj5WjWyzuXGE7V8DUVh7Jmxdyp+gDdx26
|
||||
TyaoajSBHFwmX8AcEafj51hKXoNx0ydn9s+QSUtkcSCRykKNCJC9FHhuNKC8fmM+nsPxfdXvbtDgOJfd
|
||||
qXc/uqZqUYFgbc16C5+NJp7KVSjv7X73/toCMnWX7pEEnkt7p8HZto1urwerSzuXkzcl2fB3HrgH5IjA
|
||||
RHdBXkZawAiGv491acNCYxHopx/g8N5q3Wv/UAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnRemove.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmpJREFUOE99kl1P
|
||||
01AYx4eJmhj9Bt557f0u/QTe7UN4ZbiRK++8MyaGEEwUEgnIS8db5F26dQy2udVuK7jRlm5gC6wr29qN
|
||||
zZa15E9bZYEAO8k/5zwn5/97nnOe0wPAd3VkeClg2+c+y5Ft2z7TNHx22/L13OvxPXxw3/fo8RPZ//zZ
|
||||
z47HBbgK04I/uJYgIukCqKwMipURSu9jKc5hlmIRJDOYDqUxF2akFSpOXPo8swdgCgE6VwBfaoE7bmFb
|
||||
biJdrGFhM4eR7wl8mQ7j63wEVHIbCWbHsfzzdQCxvBIoljTwioHfR0YHQNJ7mKOyWI6mkWR5lCo6eEn9
|
||||
cBOQK/sPlIYk6zZ2yxbyyn+V28g7KlYtqKcWGoYN4bAauAFwN5zSiYOKiYTYwq5iQqxY4NS2p+O6jZPG
|
||||
Gep/LQhy5XZA/k+NCO1o6P3MORJA7xteZrcqWbOgG+eo1I27AYygEExBxyqr4dUAB5KteVmVhoWTpmM+
|
||||
bUNrmtiT1Nsr+JWXiPmUCqnaxv6JgfezMpJiE9WGidrpGZqmjaNqq9PCa11wgyx/SCynVcQFp4qsjpdv
|
||||
WbwbP/DuXXcer22dQy5rdwNciHjcAMUU8bqfxoteGiMLGeR4ESW1CsuyIUrl7oA8JyCyGUNoi8HaBgtq
|
||||
I4rxySBi8QQ0XQe7K3YHjI59A0mSyGYzYBgGyRSNjWjUizmOw+JqqDtgYnLKA8RjW0ilUlhfX8fo2Bg+
|
||||
DQ5ieHgYM/OL3QGLPzb9ZDhCcPxenOd5DA0Noa/vDT72DxBTwZlr5htduPye7ryyRj5dWl4JEMR0YHxi
|
||||
stP3q2fc9QWwyhndJ+hSfwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
156
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.Designer.cs
generated
Normal file
156
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ComponentsControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,156 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class ComponentsControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ComponentsControl));
|
||||
this.grpDescription = new System.Windows.Forms.GroupBox();
|
||||
this.lblDescription = new System.Windows.Forms.Label();
|
||||
this.grdComponents = new System.Windows.Forms.DataGridView();
|
||||
this.colName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colVersion = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colLink = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.btnLoadComponents = new System.Windows.Forms.Button();
|
||||
this.grpDescription.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grdComponents)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpDescription
|
||||
//
|
||||
this.grpDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpDescription.Controls.Add(this.lblDescription);
|
||||
this.grpDescription.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpDescription.Location = new System.Drawing.Point(14, 198);
|
||||
this.grpDescription.Name = "grpDescription";
|
||||
this.grpDescription.Size = new System.Drawing.Size(379, 117);
|
||||
this.grpDescription.TabIndex = 2;
|
||||
this.grpDescription.TabStop = false;
|
||||
this.grpDescription.Text = "Description";
|
||||
//
|
||||
// lblDescription
|
||||
//
|
||||
this.lblDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblDescription.Location = new System.Drawing.Point(3, 17);
|
||||
this.lblDescription.Name = "lblDescription";
|
||||
this.lblDescription.Size = new System.Drawing.Size(373, 97);
|
||||
this.lblDescription.TabIndex = 0;
|
||||
//
|
||||
// grdComponents
|
||||
//
|
||||
this.grdComponents.AllowUserToAddRows = false;
|
||||
this.grdComponents.AllowUserToDeleteRows = false;
|
||||
this.grdComponents.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grdComponents.BackgroundColor = System.Drawing.SystemColors.Window;
|
||||
this.grdComponents.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.grdComponents.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colName,
|
||||
this.colVersion,
|
||||
this.colLink});
|
||||
this.grdComponents.Location = new System.Drawing.Point(14, 43);
|
||||
this.grdComponents.MultiSelect = false;
|
||||
this.grdComponents.Name = "grdComponents";
|
||||
this.grdComponents.ReadOnly = true;
|
||||
this.grdComponents.RowHeadersWidth = 21;
|
||||
this.grdComponents.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.grdComponents.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.grdComponents.Size = new System.Drawing.Size(379, 149);
|
||||
this.grdComponents.TabIndex = 1;
|
||||
this.grdComponents.RowEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnRowEnter);
|
||||
this.grdComponents.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnInstallLinkClick);
|
||||
//
|
||||
// colName
|
||||
//
|
||||
this.colName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.colName.DataPropertyName = "Component";
|
||||
this.colName.HeaderText = "Component Name";
|
||||
this.colName.Name = "colName";
|
||||
this.colName.ReadOnly = true;
|
||||
//
|
||||
// colVersion
|
||||
//
|
||||
this.colVersion.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
|
||||
this.colVersion.DataPropertyName = "Version";
|
||||
this.colVersion.HeaderText = "Version";
|
||||
this.colVersion.Name = "colVersion";
|
||||
this.colVersion.ReadOnly = true;
|
||||
this.colVersion.Width = 67;
|
||||
//
|
||||
// colLink
|
||||
//
|
||||
this.colLink.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
|
||||
this.colLink.DataPropertyName = "Id";
|
||||
this.colLink.HeaderText = "";
|
||||
this.colLink.Name = "colLink";
|
||||
this.colLink.ReadOnly = true;
|
||||
this.colLink.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colLink.Text = "Install";
|
||||
this.colLink.TrackVisitedState = false;
|
||||
this.colLink.UseColumnTextForLinkValue = true;
|
||||
this.colLink.Width = 5;
|
||||
//
|
||||
// btnLoadComponents
|
||||
//
|
||||
this.btnLoadComponents.Image = ((System.Drawing.Image)(resources.GetObject("btnLoadComponents.Image")));
|
||||
this.btnLoadComponents.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnLoadComponents.Location = new System.Drawing.Point(14, 9);
|
||||
this.btnLoadComponents.Name = "btnLoadComponents";
|
||||
this.btnLoadComponents.Size = new System.Drawing.Size(170, 28);
|
||||
this.btnLoadComponents.TabIndex = 0;
|
||||
this.btnLoadComponents.Text = " &View Available Components";
|
||||
this.btnLoadComponents.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||
this.btnLoadComponents.Click += new System.EventHandler(this.OnLoadComponentsClick);
|
||||
//
|
||||
// ComponentsControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnLoadComponents);
|
||||
this.Controls.Add(this.grpDescription);
|
||||
this.Controls.Add(this.grdComponents);
|
||||
this.Name = "ComponentsControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpDescription.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.grdComponents)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpDescription;
|
||||
private System.Windows.Forms.Label lblDescription;
|
||||
private System.Windows.Forms.DataGridView grdComponents;
|
||||
private System.Windows.Forms.Button btnLoadComponents;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colVersion;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colLink;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,317 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Threading;
|
||||
using System.Reflection;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
using WebsitePanel.Installer.Services;
|
||||
using WebsitePanel.Installer.Core;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Components control
|
||||
/// </summary>
|
||||
internal partial class ComponentsControl : ResultViewControl
|
||||
{
|
||||
delegate void SetGridDataSourceCallback(object dataSource, string dataMember);
|
||||
|
||||
private string componentCode = null;
|
||||
private string componentVersion = null;
|
||||
private string componentSettingsXml = null;
|
||||
|
||||
public ComponentsControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
grdComponents.AutoGenerateColumns = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Action on click Install link
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
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));
|
||||
|
||||
//prepare installer args
|
||||
Hashtable args = new Hashtable();
|
||||
|
||||
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<string> installedComponents = new List<string>();
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Displays component description when entering grid row
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
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"]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Start new thread to load components
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnLoadComponentsClick(object sender, EventArgs e)
|
||||
{
|
||||
StartLoadingComponents();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads list of available components via web service
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Thread safe grid binding.
|
||||
/// </summary>
|
||||
/// <param name="dataSource">Data source</param>
|
||||
/// <param name="dataMember">Data member</param>
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Installs component during unattended setup
|
||||
/// </summary>
|
||||
/// <param name="componentCode"></param>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads list of available components via web service and install specified component
|
||||
/// during unattended setup
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="colLink.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnLoadComponents.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAj9JREFUOE+lk11I
|
||||
U2EYx9vCiBS6GKyP+UWY0yYlZkYRM0Oi3IUEUlAG3QRFN1ERFTnNhWs2q7WtqTQLwhhBSp8YRQxcEslg
|
||||
82KHzWidrbXNWTowc2du/953NFN4u4gOPJwPzu/3/s/7PEcEYNl/HVSQreTMaKHD9x5ddiOaHh1FXa8K
|
||||
ylv7cHlQAzfPTQvxkSN6u4W8/odZgBORfsng2Es0Pm+G2q+FNmDEFU6PVq4TJz6cQ+2dBrj8HpTf3MYW
|
||||
cKHxKQpf9d+AauAQpK0bsFazEcfspzKiNu56RlKsU7AFF560odlxEtsNe9A1ZMJYwAtfmEd+uzyTKlvr
|
||||
NCVswQHrYSh79mPA+QLJ+bRCmE/nRmPf4Q56l0gkLUVsQU1PHc4/VlO4kpRISKZFNudTFGkrUKAtA12Z
|
||||
wqsvytiCLaadGP3kRmTiWw7d5VA4lh/8Gs35Ep5YGYrEVpB7MR+MrPF+5NkCsiJ+115yXp4Q0ruCoajo
|
||||
ZyIlnp1LiX6QmplN5aqHdWxBlbUWmy07UHa7eqq4syIu65Cje+QB5oSUhCYikvru4XsoN/2ljVutSugC
|
||||
5kzLSvSVcPIe+jkgCQpoChfvQ8PDJqxvKWUn2GSuWRBQidxQDednD5nAcfQ6+jNTSVt5/P5ptoDERum1
|
||||
qiU9p1AWpLBMLcfdtza2oLBDgWeu15CRwVkMZQeIwtpXRsSmk7uZ/4LlTR/IRuEd58QlWztU5oPIOytF
|
||||
3hkp6g2NMA31YTKeXBWaFMRMweKH/3L9C8malnY23w2wAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
36
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.Designer.cs
generated
Normal file
36
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/LineBox.Designer.cs
generated
Normal file
|
@ -0,0 +1,36 @@
|
|||
namespace WebsitePanel.Installer
|
||||
{
|
||||
partial class LineBox
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WebsitePanel.Installer
|
||||
{
|
||||
/// <summary>
|
||||
/// 3D line box.
|
||||
/// </summary>
|
||||
internal partial class LineBox : Control
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the LineBox class.
|
||||
/// </summary>
|
||||
public LineBox() : base()
|
||||
{
|
||||
SetStyle(ControlStyles.UserPaint, true);
|
||||
SetStyle(ControlStyles.FixedHeight, true);
|
||||
SetStyle(ControlStyles.DoubleBuffer, true);
|
||||
SetStyle(ControlStyles.ResizeRedraw, true);
|
||||
SetStyle(ControlStyles.StandardClick, false);
|
||||
SetStyle(ControlStyles.Selectable, false);
|
||||
this.TabStop = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raises the Paint event.
|
||||
/// </summary>
|
||||
/// <param name="e">A PaintEventArgs that contains the event data.</param>
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
Graphics graphics = e.Graphics;
|
||||
Rectangle rectangle = this.ClientRectangle;
|
||||
Pen lightPen = new Pen(ControlPaint.Light(this.BackColor, 1));
|
||||
Pen darkPen = new Pen(ControlPaint.Dark(this.BackColor, 0));
|
||||
graphics.DrawLine(darkPen, rectangle.X, rectangle.Y, rectangle.X+rectangle.Width, rectangle.Y);
|
||||
graphics.DrawLine(lightPen, rectangle.X, rectangle.Y+1, rectangle.X+rectangle.Width, rectangle.Y+1);
|
||||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the default size of the control.
|
||||
/// </summary>
|
||||
protected override Size DefaultSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Size(10, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Performs the work of setting the specified bounds of this control.
|
||||
/// </summary>
|
||||
/// <param name="x">The new Left property value of the control.</param>
|
||||
/// <param name="y">The new Right property value of the control.</param>
|
||||
/// <param name="width">The new Width property value of the control.</param>
|
||||
/// <param name="height">The new Height property value of the control.</param>
|
||||
/// <param name="specified">A bitwise combination of the BoundsSpecified values.</param>
|
||||
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
||||
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
|
||||
{
|
||||
base.SetBoundsCore(x, y, width, 2, specified);
|
||||
}
|
||||
}
|
||||
}
|
112
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.Designer.cs
generated
Normal file
112
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/Loader.Designer.cs
generated
Normal file
|
@ -0,0 +1,112 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class Loader
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.grpFiles = new System.Windows.Forms.GroupBox();
|
||||
this.lblValue = new System.Windows.Forms.Label();
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.lblProcess = new System.Windows.Forms.Label();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.grpFiles.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpFiles
|
||||
//
|
||||
this.grpFiles.Controls.Add(this.lblValue);
|
||||
this.grpFiles.Controls.Add(this.progressBar);
|
||||
this.grpFiles.Controls.Add(this.lblProcess);
|
||||
this.grpFiles.Location = new System.Drawing.Point(12, 9);
|
||||
this.grpFiles.Name = "grpFiles";
|
||||
this.grpFiles.Size = new System.Drawing.Size(448, 88);
|
||||
this.grpFiles.TabIndex = 4;
|
||||
this.grpFiles.TabStop = false;
|
||||
//
|
||||
// lblValue
|
||||
//
|
||||
this.lblValue.Location = new System.Drawing.Point(294, 24);
|
||||
this.lblValue.Name = "lblValue";
|
||||
this.lblValue.Size = new System.Drawing.Size(138, 16);
|
||||
this.lblValue.TabIndex = 2;
|
||||
this.lblValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
this.progressBar.Location = new System.Drawing.Point(16, 40);
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Size = new System.Drawing.Size(416, 23);
|
||||
this.progressBar.Step = 1;
|
||||
this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
|
||||
this.progressBar.TabIndex = 1;
|
||||
//
|
||||
// lblProcess
|
||||
//
|
||||
this.lblProcess.Location = new System.Drawing.Point(16, 24);
|
||||
this.lblProcess.Name = "lblProcess";
|
||||
this.lblProcess.Size = new System.Drawing.Size(272, 16);
|
||||
this.lblProcess.TabIndex = 0;
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.Location = new System.Drawing.Point(385, 112);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnCancel.TabIndex = 5;
|
||||
this.btnCancel.Text = "&Cancel";
|
||||
this.btnCancel.UseVisualStyleBackColor = true;
|
||||
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
||||
//
|
||||
// Loader
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 148);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.grpFiles);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Loader";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "WebsitePanel Installer";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnLoaderFormClosing);
|
||||
this.grpFiles.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpFiles;
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.Windows.Forms.Label lblProcess;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.Label lblValue;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Ionic.Zip;
|
||||
|
||||
using WebsitePanel.Installer.Services;
|
||||
using WebsitePanel.Installer.Common;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
public delegate void OperationProgressDelegate(int percentage);
|
||||
|
||||
/// <summary>
|
||||
/// Loader form.
|
||||
/// </summary>
|
||||
internal partial class Loader : Form
|
||||
{
|
||||
private AppContext appContext;
|
||||
private Core.Loader appLoader;
|
||||
|
||||
public Loader()
|
||||
{
|
||||
InitializeComponent();
|
||||
DialogResult = DialogResult.Cancel;
|
||||
}
|
||||
|
||||
public Loader(AppContext context, string remoteFile)
|
||||
: this()
|
||||
{
|
||||
this.appContext = context;
|
||||
//
|
||||
appLoader = new Core.Loader(remoteFile);
|
||||
//
|
||||
Start();
|
||||
}
|
||||
|
||||
public Loader(AppContext context, string localFile, string componentCode, string version)
|
||||
: this()
|
||||
{
|
||||
this.appContext = context;
|
||||
//
|
||||
appLoader = new Core.Loader(localFile, componentCode, version);
|
||||
//
|
||||
Start();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
//
|
||||
appLoader.OperationFailed += new EventHandler<Core.LoaderEventArgs<Exception>>(appLoader_OperationFailed);
|
||||
appLoader.ProgressChanged += new EventHandler<Core.LoaderEventArgs<Int32>>(appLoader_ProgressChanged);
|
||||
appLoader.StatusChanged += new EventHandler<Core.LoaderEventArgs<String>>(appLoader_StatusChanged);
|
||||
appLoader.OperationCompleted += new EventHandler<EventArgs>(appLoader_OperationCompleted);
|
||||
//
|
||||
appLoader.LoadAppDistributive();
|
||||
}
|
||||
|
||||
void appLoader_OperationCompleted(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
void appLoader_StatusChanged(object sender, Core.LoaderEventArgs<String> 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<Int32> 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;
|
||||
}
|
||||
}
|
||||
|
||||
void appLoader_OperationFailed(object sender, Core.LoaderEventArgs<Exception> e)
|
||||
{
|
||||
appContext.AppForm.ShowError(e.EventData);
|
||||
//
|
||||
DialogResult = DialogResult.Abort;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Log.WriteInfo("Execution was canceled by user");
|
||||
Close();
|
||||
}
|
||||
|
||||
private void OnLoaderFormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (this.DialogResult == DialogResult.Cancel)
|
||||
{
|
||||
appLoader.AbortOperation();
|
||||
}
|
||||
// Remove event handlers
|
||||
appLoader.OperationFailed -= new EventHandler<Core.LoaderEventArgs<Exception>>(appLoader_OperationFailed);
|
||||
appLoader.ProgressChanged -= new EventHandler<Core.LoaderEventArgs<Int32>>(appLoader_ProgressChanged);
|
||||
appLoader.StatusChanged -= new EventHandler<Core.LoaderEventArgs<String>>(appLoader_StatusChanged);
|
||||
appLoader.OperationCompleted -= new EventHandler<EventArgs>(appLoader_OperationCompleted);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,248 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Animated Icon.
|
||||
/// </summary>
|
||||
[ToolboxItem(true)]
|
||||
public class ProgressIcon : System.Windows.Forms.UserControl
|
||||
{
|
||||
private Thread thread = null;
|
||||
private int currentFrame = 0;
|
||||
private int delayInterval = 50;
|
||||
private int pause = 0;
|
||||
private int loopCount = 0;
|
||||
private int currentLoop = 0;
|
||||
private int firstFrame = 0;
|
||||
private int lastFrame = 13;
|
||||
private ImageList images;
|
||||
private IContainer components;
|
||||
|
||||
/// <summary>Initializes a new instance of the <b>AnimatedIcon</b> class.
|
||||
/// </summary>
|
||||
public ProgressIcon()
|
||||
{
|
||||
CheckForIllegalCrossThreadCalls = false;
|
||||
InitializeComponent();
|
||||
|
||||
this.SetStyle(ControlStyles.UserPaint, true);
|
||||
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
||||
this.SetStyle(ControlStyles.DoubleBuffer, true);
|
||||
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
||||
}
|
||||
|
||||
#region Dispose
|
||||
/// <summary>Clean up any resources being used.</summary>
|
||||
/// <param name="disposing"><see langword="true"/> to release both managed
|
||||
/// and unmanaged resources; <see langword="false"/> to release
|
||||
/// only unmanaged resources.</param>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if( components != null )
|
||||
components.Dispose();
|
||||
|
||||
if( thread != null )
|
||||
thread.Abort();
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Component Designer generated code
|
||||
/// <summary>Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProgressIcon));
|
||||
this.images = new System.Windows.Forms.ImageList(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// images
|
||||
//
|
||||
this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream")));
|
||||
this.images.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.images.Images.SetKeyName(0, "ProgressImage00.bmp");
|
||||
this.images.Images.SetKeyName(1, "ProgressImage01.bmp");
|
||||
this.images.Images.SetKeyName(2, "ProgressImage02.bmp");
|
||||
this.images.Images.SetKeyName(3, "ProgressImage03.bmp");
|
||||
this.images.Images.SetKeyName(4, "ProgressImage04.bmp");
|
||||
this.images.Images.SetKeyName(5, "ProgressImage05.bmp");
|
||||
this.images.Images.SetKeyName(6, "ProgressImage06.bmp");
|
||||
this.images.Images.SetKeyName(7, "ProgressImage07.bmp");
|
||||
this.images.Images.SetKeyName(8, "ProgressImage08.bmp");
|
||||
this.images.Images.SetKeyName(9, "ProgressImage09.bmp");
|
||||
this.images.Images.SetKeyName(10, "ProgressImage10.bmp");
|
||||
this.images.Images.SetKeyName(11, "ProgressImage11.bmp");
|
||||
this.images.Images.SetKeyName(12, "ProgressImage12.bmp");
|
||||
//
|
||||
// ProgressIcon
|
||||
//
|
||||
this.Name = "ProgressIcon";
|
||||
this.Size = new System.Drawing.Size(30, 30);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>Starts animation from the beginning.
|
||||
/// </summary>
|
||||
public void StartAnimation()
|
||||
{
|
||||
StopAnimation();
|
||||
CheckRange(); // Check the first and the last frames
|
||||
|
||||
thread = new Thread( new ThreadStart( threadFunc ) );
|
||||
thread.IsBackground = true;
|
||||
thread.Start();
|
||||
}
|
||||
|
||||
/// <summary>Stops animation not changing current frame number.
|
||||
/// </summary>
|
||||
public void StopAnimation()
|
||||
{
|
||||
if( thread != null )
|
||||
{
|
||||
thread.Abort();
|
||||
thread = null;
|
||||
}
|
||||
currentLoop = 0;
|
||||
}
|
||||
|
||||
/// <summary>Displays the specified frame.</summary>
|
||||
/// <param name="frame">An index of the image stored in the <see cref="ImageList"/>.</param>
|
||||
public void ShowFrame2(int frame)
|
||||
{
|
||||
StopAnimation();
|
||||
|
||||
if( frame >= 0 && frame < images.Images.Count )
|
||||
currentFrame = frame;
|
||||
else
|
||||
currentFrame = 0;
|
||||
|
||||
Refresh();
|
||||
}
|
||||
|
||||
/// <summary>Occurs when the control is redrawn.</summary>
|
||||
/// <param name="e">A <see cref="PaintEventArgs"/> that contains
|
||||
/// the event data.</param>
|
||||
/// <remarks>The <b>OnPaint</b> method draws current image from
|
||||
/// the <see cref="ImageList"/> if exists.</remarks>
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
// Draw a crossed rectangle if there is no frame to display
|
||||
|
||||
if( images == null ||
|
||||
currentFrame < 0 ||
|
||||
currentFrame >= images.Images.Count )
|
||||
{
|
||||
if( this.Size.Width == 0 || this.Size.Height == 0 )
|
||||
return;
|
||||
|
||||
Pen pen = new Pen( SystemColors.ControlText );
|
||||
e.Graphics.DrawRectangle( pen, 0, 0, this.Size.Width-1, this.Size.Height-1 );
|
||||
e.Graphics.DrawLine( pen, 0, 0, this.Size.Width, this.Size.Height );
|
||||
e.Graphics.DrawLine( pen, 0, this.Size.Height-1, this.Size.Width-1, 0 );
|
||||
pen.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Draw the current frame
|
||||
|
||||
e.Graphics.DrawImage( images.Images[currentFrame], 0, 0, this.Size.Width, this.Size.Height );
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>The method to be invoked when the thread begins executing.
|
||||
/// </summary>
|
||||
private void threadFunc()
|
||||
{
|
||||
bool wasPause = false;
|
||||
currentFrame = firstFrame;
|
||||
|
||||
while( thread != null && thread.IsAlive )
|
||||
{
|
||||
Refresh(); // Redraw the current frame
|
||||
wasPause = false;
|
||||
|
||||
if( images != null )
|
||||
{
|
||||
currentFrame++;
|
||||
if( currentFrame > lastFrame ||
|
||||
currentFrame >= images.Images.Count )
|
||||
{
|
||||
if( pause > 0 ) // Sleep after every loop
|
||||
{
|
||||
Thread.Sleep( pause );
|
||||
wasPause = true;
|
||||
}
|
||||
|
||||
currentFrame = firstFrame;
|
||||
if( loopCount != 0 ) // 0 is infinitive loop
|
||||
{
|
||||
currentLoop++;
|
||||
}
|
||||
}
|
||||
|
||||
if( loopCount != 0 && currentLoop >= loopCount )
|
||||
{
|
||||
StopAnimation(); // The loop is completed
|
||||
}
|
||||
}
|
||||
if( !wasPause ) // That prevents summation (pause + delayInterval)
|
||||
Thread.Sleep( delayInterval );
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Check if the last frame is no less than the first one.
|
||||
/// Otherwise, swap them.</summary>
|
||||
private void CheckRange()
|
||||
{
|
||||
if( lastFrame < firstFrame )
|
||||
{
|
||||
int tmp = firstFrame;
|
||||
firstFrame = lastFrame;
|
||||
lastFrame = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,855 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="images.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="images.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADc
|
||||
qQAAAk1TRnQBSQFMAgEBDQEAAQ4BAAEEAQABHgEAAR4BAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAF4
|
||||
AwABeAMAAQEBAAEgBgAB4RIAIP8D/gH/A/4B/wP5Af8D8QH/A+kB/wPiAf8D7AH/A/EB/wPiAf8D4gH/
|
||||
A+wB/wP5Af8D/gH/A/4h//8AaQAY/wP+Af8D/gH/AfUB9AH1Af8D4gH/A9kB/wPZAf8D2QH/A9YB/wPp
|
||||
Af8D7AH/A9YB/wPZAf8D2QH/A9kB/wPiAf8D8QH/A/4B/wP+Gf//AGkAFP8D/gH/AfUB9AH1Af8B9QH0
|
||||
AfUB/wPsAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wPpAf8D7AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/
|
||||
AfUB9AH1Af8B9QH0AfUB/wP+Ff//AGkAEP8D/gH/A/EB/wPZAf8D3AH/A/kB/wPiAf8D2QH/A9kB/wPZ
|
||||
Af8D2QH/A+kB/wPsAf8D2QH/A9kB/wPZAf8D2QH/A9wB/wH1AfQB9QH/A+IB/wPZAf8D7AH/A/4R//8A
|
||||
aQAM/wP+Af8D7AH/A9kB/wPZAf8D2QH/A+wB/wPxAf8D2QH/A9kB/wPZAf8D1gH/A+kB/wPsAf8D1gH/
|
||||
A9kB/wPZAf8D2QH/A+wB/wPxAf8D2QH/A9kB/wPZAf8D6QH/A/4N//8AaQAI/wP+Af8D8QH/A9kB/wPZ
|
||||
Af8D2QH/A9kB/wPZAf8B9QH0AfUB/wPiAf8D1gH/A9wB/wPiAf8D8QH/AfUB9AH1Af8D4gH/A9wB/wPZ
|
||||
Af8D3AH/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wP+Cf//AGkABP8D/gH/A/kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPiAf8D+QH/A/EB/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wPxAf8B9QH0
|
||||
AfUB/wPpAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wPZAf8B9QH0AfUB/wP+Bf//AGkABP8D/gH/A/kB/wPp
|
||||
Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPsAf8D/gH/A/4Z/wP+Af8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZ
|
||||
Af8D2QH/A+IB/wP5Af8D/gX//wBpAAP+Af8D8QH/A+IB/wH1AfQB9QH/AfUB9AH1Af8D4gH/A9kB/wPZ
|
||||
Af8D8QH/A/4p/wP+Af8D8QH/A9kB/wPZAf8D4gH/AfUB9AH1Af8B9QH0AfUB/wPiAf8D8QH/A/4B//8A
|
||||
aQAD/gH/A+IB/wPWAf8D2QH/A+IB/wH1AfQB9QH/A/EB/wPsAf8D/jH/A/4B/wPsAf8D8QH/A/kB/wPp
|
||||
Af8D2QH/A9YB/wPiAf8D/gH//wBpAAP5Af8D3AH/A9kB/wPZAf8D2QH/A9kB/wPsAf8D/jn/A/4B/wPx
|
||||
Af8D3AH/A9kB/wPZAf8D2QH/A9kB/wP5Af//AGkAA/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wP+
|
||||
Of8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+wB//8AaQAD6QH/A9kB/wPZAf8D2QH/A9kB/wPZ
|
||||
Af8D+UH/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A+IB//8AaQAD4gH/A9kB/wPZAf8D2QH/A9kB/wPi
|
||||
Af8D/kH/A/4B/wPiAf8D2QH/A9kB/wPZAf8D2QH/A+IB//8AaQAB9QH0AfUB/wPxAf8D8QH/A/EB/wPx
|
||||
Af8B9QH0AfUB/wP+Qf8D/gH/AfUB9AH1Af8D8QH/A/EB/wPxAf8D8QH/AfUB9AH1Af//AGkAA+kB/wPi
|
||||
Af8D4gH/A+IB/wPiAf8D7AH/A/5B/wP+Af8D7AH/A+IB/wPiAf8D4gH/A+IB/wPpAf//AGkAA+IB/wPW
|
||||
Af8D2QH/A9kB/wPWAf8D3AH/A/5B/wP+Af8D4gH/A9YB/wPZAf8D2QH/A9YB/wPiAf//AGkAA+kB/wPZ
|
||||
Af8D2QH/A9kB/wPZAf8D2QH/A/lB/wP5Af8D3AH/A9kB/wPZAf8D2QH/A9kB/wPiAf//AGkAA/EB/wPZ
|
||||
Af8D2QH/A9kB/wPZAf8D1gH/A+wB/wP+Of8D/gH/A+wB/wPWAf8D2QH/A9kB/wPZAf8D2QH/A+wB//8A
|
||||
aQAD+QH/A9wB/wPZAf8D2QH/A9kB/wHoAeQB6AH/AfUB9AH1Af8B+QH8Afk5/wP+Af8D+QH/A+kB/wPZ
|
||||
Af8D2QH/A9kB/wPZAf8D+QH//wBpAAP+Af8D4gH/A9YB/wHhAd4B4QH/AfgB8gH3Af8B6gH4AesB/wF8
|
||||
Ad4BgQH/AYUB2gGKAf8D/jH/A/4B/wPpAf8D4gH/AfUB9AH1Af8B9QH0AfUB/wPiAf8D1gH/A+IB/wP+
|
||||
Af//AGkAA/4B/wH1AfQB9QH/AfAB6wHvAf8B8AH5AfEB/wG8AfsBwQH/AYkB+gGRAf8BagHoAXQB/wE1
|
||||
AcUBPgH/AZsB4gGgAf8D/in/A/4B/wPxAf8D2QH/A9kB/wPZAf8D6QH/A/kB/wPxAf8B9QH0AfUB/wP+
|
||||
Af//AGkABP8D/gH/AeAB+AHiAf8BkgH7AZkB/wGDAfkBjAH/AYMB+QGMAf8BiQH6AZEB/wFqAegBdAH/
|
||||
ATUBxQE+Af8BjwHdAZQB/wP+Af8D/hn/A/4B/wP+Af8D7AH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A/EB/wP+Bf//AGkABP8D/gH/AeoB+AHrAf8BkgH7AZkB/wGDAfkBjAH/AYkB+gGRAf8BiQH6AZEB/wGJ
|
||||
AfoBkQH/AWoB6AF0Af8BoQHqAaYB/wGqAdIBqwH/AYIBvQGDAf8B2wHsAdsB/wH5AfwB+QH/A/4B/wP+
|
||||
Af8D/gH/A/kB/wPsAf8D7AH/A/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wP5Af8D/gX//wBpAAj/
|
||||
A/4B/wHYAfoB2wH/AYkB+gGRAf8BiQH6AZEB/wGJAfoBkQH/AYMB+QGMAf8BmgH5AaEB/wHmAfsB6AH/
|
||||
AUIBogFEAf8BDwGGAREB/wEhAYwBIwH/ATQBlQE2Af8BkgHJAZMB/wH4AfIB+AH/A9wB/wPZAf8D2QH/
|
||||
A9kB/wP5Af8D4gH/A9kB/wPZAf8D2QH/A9kB/wPxAf8D/gn//wBpAAz/A/4B/wHRAfoB1AH/AYkB+gGR
|
||||
Af8BgwH5AYwB/wGDAfkBjAH/AdgB+gHbAf8BmQHLAZkB/wEyAaMBNAH/ATsBqQE9Af8BMgGjATQB/wEc
|
||||
AZABHgH/AXwBwgF9Af8B9AHwAfQB/wPWAf8D2QH/A9kB/wPZAf8D4gH/AfUB9AH1Af8D2QH/A9kB/wPZ
|
||||
Af8D7AH/A/4N//8AaQAQ/wP+Af8B2AH6AdsB/wGSAfsBmQH/AaoB/AGxAf8B0gHqAdIB/wFDAasBRQH/
|
||||
ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/ATIBowE0Af8BiQHIAYoB/wH0AfAB9AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D8QH/A+kB/wPZAf8D8QH/A/4R//8AaQAU/wP+Af8B6gH4AesB/wHqAfgB6wH/AXwBwgF9
|
||||
Af8BKQGgASwB/wE7AakBPQH/ATsBqQE9Af8BOwGpAT0B/wEuAaIBMgH/AYkByAGKAf8B9AHwAfQB/wPZ
|
||||
Af8D2QH/A9kB/wPZAf8D1gH/A+IB/wP5Af8D+QH/A/4V//8AaQAY/wP+Af8D/gH/Ac4B6wHQAf8BhAHI
|
||||
AYYB/wFLAbABTQH/ATgBqAE6Af8BLgGiATIB/wEnAaABKQH/AYQByAGGAf8B8QHsAfEB/wPWAf8D1gH/
|
||||
A9kB/wPcAf8D4gH/AfUB9AH1Af8D/gH/A/4Z//8AaQAg/wP+Af8D/gH/AeoB+AHrAf8BuQHgAboB/wGS
|
||||
AdABkwH/AW0BwAFvAf8BpAHYAaUB/wH0AfAB9AH/A+IB/wPpAf8D8QH/A/kB/wP+Af8D/iH//wBpACD/
|
||||
A/4B/wP+Af8B2wHsAdsB/wGgAdEBoQH/AXIBvAF0Af8BSQGlAUwB/wGZAcsBmQH/AaoB0gGrAf8BQgGi
|
||||
AUQB/wFqAbQBawH/AZkBywGZAf8B2wHsAdsB/wP+Af8D/kH/A/4B/wP+Af8B3AHwAd0B/wGgAdEBoQH/
|
||||
AXIBvAF0Af8BSQGlAUwB/wGZAcsBmQH/AaoB0gGrAf8BQgGiAUQB/wFqAbQBawH/AZkBywGZAf8B2wHs
|
||||
AdsB/wP+Af8D/kH/A/4B/wP+Af8B4AH4AeIB/wG0AewBuAH/AZAB5gGWAf8BbAHbAXQB/wGkAesBqQH/
|
||||
AfQB8AH0Af8D4gH/A+IB/wPsAf8D+QH/A/4B/wP+Qf8D/gH/A/4B/wP5Af8D8QH/A+kB/wPiAf8D7AH/
|
||||
A/EB/wPiAf8D4gH/A+wB/wP5Af8D/gH/A/45/wP+Af8D/gH/Ab8B4AHAAf8BYQGxAWIB/wEqAZoBLQH/
|
||||
ARwBkAEeAf8BFwGMARkB/wEQAYgBEQH/AYUBwgGGAf8BkgHJAZMB/wEKAYMBDAH/ARMBiAEVAf8BEwGI
|
||||
ARUB/wEiAZIBJAH/AVkBrAFbAf8BswHbAbQB/wP+Af8D/jH/A/4B/wP+Af8BvwHgAcAB/wFhAbEBYgH/
|
||||
ASoBmgEtAf8BHAGQAR4B/wEXAYwBGQH/ARABiAERAf8BhQHCAYYB/wGSAckBkwH/AQoBgwEMAf8BEwGI
|
||||
ARUB/wETAYgBFQH/ASIBkgEkAf8BWQGsAVsB/wGzAdsBtAH/A/4B/wP+Mf8D/gH/A/4B/wHNAfMB0AH/
|
||||
AYMB4QGJAf8BWgHdAWMB/wFLAdkBVAH/AUkB0gFSAf8BQgHQAUsB/wGVAeoBmwH/AfEB7AHxAf8D1gH/
|
||||
A9kB/wPZAf8D2QH/A+IB/wPxAf8D/gH/A/4x/wP+Af8D/gH/AfUB9AH1Af8D4gH/A9kB/wPZAf8D2QH/
|
||||
A9YB/wPpAf8D7AH/A9YB/wPZAf8D2QH/A9kB/wPiAf8D8QH/A/4B/wP+Lf8D/gH/AckB4gHJAf8BuQHg
|
||||
AboB/wGSAckBkwH/ARMBiAEVAf8BIgGSASQB/wEiAZIBJAH/ASIBkgEkAf8BFwGMARkB/wGJAcIBigH/
|
||||
AZkBywGZAf8BEwGIARUB/wEiAZIBJAH/ASIBkgEkAf8BGgGMARwB/wEKAYMBDAH/AWoBtAFrAf8ByQHi
|
||||
AckB/wHBAeIBwgH/A/4p/wP+Af8ByQHiAckB/wG/AeABwAH/AZIByQGTAf8BEwGIARUB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BIgGSASQB/wEXAYwBGQH/AYkBwgGKAf8BmQHLAZkB/wETAYgBFQH/ASIBkgEkAf8BIgGS
|
||||
ASQB/wEaAYwBHAH/AQoBgwEMAf8BagG0AWsB/wHWAfQB2AH/AdAB8wHTAf8D/in/A/4B/wHJAeIByQH/
|
||||
AbgB3QG5Af8BrQHyAbIB/wFLAdkBVAH/AVUB2wFeAf8BVQHbAV4B/wFVAdsBXgH/AUkB0gFSAf8BmAHq
|
||||
AZ0B/wHxAewB8QH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/AfUB9AH1Af8B9QH0AfUB/wP+Kf8D/gH/
|
||||
AfUB9AH1Af8B9QH0AfUB/wPsAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wPpAf8D7AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPWAf8D4gH/AfUB9AH1Af8B9QH0AfUB/wP+Jf8D/gH/AasB2AGsAf8BLgGcATEB/wE5AaEBOwH/
|
||||
AdcB6gHYAf8BTwGqAVEB/wEiAZIBJAH/AScBlgEpAf8BIgGSASQB/wEXAYwBGQH/AYkBwgGKAf8BmQHL
|
||||
AZkB/wETAYgBFQH/ASIBkgEkAf8BIgGSASQB/wEaAYwBHAH/ASwBlQEuAf8B0AHnAdAB/wFJAaUBTAH/
|
||||
ARoBjAEcAf8BmQHLAZkB/wP+If8D/gH/AasB2AGsAf8BLgGcATEB/wE5AaEBOwH/AdcB6gHYAf8BTwGq
|
||||
AVEB/wEiAZIBJAH/AScBlgEpAf8BIgGSASQB/wEXAYwBGQH/AYkBwgGKAf8BmQHLAZkB/wETAYgBFQH/
|
||||
ASIBkgEkAf8BIgGSASQB/wEaAYwBHAH/ASwBlQEuAf8B0gHqAdIB/wFsAdsBdAH/AUIBywFKAf8BrAHq
|
||||
AbAB/wP+If8D/gH/AasB2AGsAf8BLgGcATEB/wE5AaEBOwH/AdwB8AHdAf8BfAHnAYMB/wFVAdsBXgH/
|
||||
AVoB3QFjAf8BVQHbAV4B/wFJAdIBUgH/AZUB6gGbAf8B8QHsAfEB/wPZAf8D2QH/A9kB/wPZAf8D3AH/
|
||||
AfUB9AH1Af8D4gH/A9kB/wPsAf8D/iH/A/4B/wPxAf8D2QH/A9wB/wP5Af8D4gH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPpAf8D7AH/A9kB/wPZAf8D2QH/A9kB/wPcAf8B9QH0AfUB/wPiAf8D2QH/A+wB/wP+Hf8D/gH/
|
||||
AZoB0gGbAf8BIwGZASYB/wEmAZgBKQH/AR8BkgEhAf8BkgHJAZMB/wG5AeABugH/ASIBkgEkAf8BJgGY
|
||||
ASkB/wEmAZgBKQH/ARwBkAEeAf8BiQHIAYoB/wGaAdIBmwH/ARwBkAEeAf8BJgGYASkB/wEiAZIBJAH/
|
||||
ARMBiAEVAf8BlgHJAZgB/wGqAdIBqwH/ARMBiAEVAf8BGgGMARwB/wETAYgBFQH/AYcBwgGIAf8D/hn/
|
||||
A/4B/wGaAdIBmwH/ASMBmQEmAf8BJgGYASkB/wEfAZIBIQH/AZIByQGTAf8BuAHdAbkB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BJgGYASkB/wEcAZABHgH/AYkByAGKAf8BmgHSAZsB/wEcAZABHgH/ASYBmAEpAf8BIgGS
|
||||
ASQB/wETAYgBFQH/AZABxQGRAf8BvAHxAcAB/wFCAdABSwH/AUIBywFKAf8BPAHLAUUB/wGbAeIBoAH/
|
||||
A/4Z/wP+Af8BmgHSAZsB/wEjAZkBJgH/ASYBmAEpAf8BHwGSASEB/wGJAcIBigH/Ac4B+gHRAf8BVQHb
|
||||
AV4B/wFaAd0BYwH/AVoB4AFjAf8BWgHgAWMB/wGlAfIBqgH/AfEB7AHxAf8D1gH/A9kB/wPZAf8D2QH/
|
||||
A+wB/wPxAf8D2QH/A9kB/wPZAf8D6QH/A/4Z/wP+Af8D7AH/A9kB/wPZAf8D2QH/A+wB/wPxAf8D2QH/
|
||||
A9kB/wPZAf8D1gH/A+kB/wPsAf8D1gH/A9kB/wPZAf8D2QH/A+wB/wPxAf8D2QH/A9kB/wPZAf8D6QH/
|
||||
A/4V/wP+Af8BqwHYAawB/wEmAZgBKQH/ASoBmgEtAf8BKgGaAS0B/wEqAZoBLQH/ATEBnQEzAf8B0gHq
|
||||
AdIB/wFpAbsBawH/ASMBmQEmAf8BSAGtAUsB/wFiAboBYwH/AbkB4AG6Af8BwQHiAcIB/wFtAcABbwH/
|
||||
AVIBsgFUAf8BMgGjATQB/wFTAakBVQH/AdsB7AHbAf8BPwGdAUEB/wEaAYwBHAH/ASIBkgEkAf8BGgGM
|
||||
ARwB/wESAYQBFAH/AZIByQGTAf8D/hH/A/4B/wGrAdgBrAH/ASYBmAEpAf8BKgGaAS0B/wEuAZwBMQH/
|
||||
ASoBmgEtAf8BMQGdATMB/wHSAeoB0gH/AWkBuwFrAf8BIwGZASYB/wFIAa0BSwH/AWIBugFjAf8BuQHg
|
||||
AboB/wHBAeIBwgH/AW0BwAFvAf8BUgGyAVQB/wEyAaMBNAH/AU8BqgFRAf8B3AHwAd0B/wFlAdoBbQH/
|
||||
AUIB0AFLAf8BSQHSAVIB/wFCAdABSwH/ATwBywFFAf8BqQHpAa0B/wP+Ef8D/gH/AasB2AGsAf8BJgGY
|
||||
ASkB/wEqAZoBLQH/ASoBmgEtAf8BKgGaAS0B/wExAZ0BMwH/AdIB6gHSAf8BlAHwAZoB/wFnAewBcQH/
|
||||
AYIB8QGKAf8BmgH5AaEB/wHRAfoB1AH/AfQB8AH0Af8D4gH/A9wB/wPZAf8D3AH/A/kB/wPcAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A+wB/wP+Ef8D/gH/A/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D4gH/
|
||||
A9YB/wPcAf8D4gH/A/EB/wH1AfQB9QH/A+IB/wPcAf8D2QH/A9wB/wP5Af8D3AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D/g3/A/4B/wHcAfAB3QH/ATIBowE0Af8BJgGYASkB/wEuAZwBMQH/AS4BnAExAf8BLgGc
|
||||
ATEB/wEfAZIBIQH/AWEBsQFiAf8B0gHqAdIB/wGrAdgBrAH/AegB9QHoAf8D/gH/A/4B/wP+Af8D/gH/
|
||||
AfAB+QHxAf8BswHbAbQB/wHLAegBywH/AZIB0AGTAf8BHwGSASEB/wEfAZIBIQH/ASIBkgEkAf8BIQGM
|
||||
ASMB/wEaAYwBHAH/ARoBjAEcAf8ByQHiAckB/wP+Cf8D/gH/AdwB8AHdAf8BMgGjATQB/wEmAZgBKQH/
|
||||
AS4BnAExAf8BLgGcATEB/wEuAZwBMQH/AR8BkgEhAf8BYQGxAWIB/wHSAeoB0gH/AasB2AGsAf8B6gH4
|
||||
AesB/wP+Af8D/gH/A/4B/wP+Af8B8AH5AfEB/wGzAdsBtAH/AcsB6AHLAf8BxQH6AckB/wFaAeABYwH/
|
||||
AUkB0gFSAf8BSQHSAVIB/wFJAdIBUgH/AUIBywFKAf8BQgHLAUoB/wHWAfQB2AH/A/4J/wP+Af8B3AHw
|
||||
Ad0B/wEyAaMBNAH/ASYBmAEpAf8BLgGcATEB/wEuAZwBMQH/AS4BnAExAf8BHwGSASEB/wFhAbEBYgH/
|
||||
AeAB+AHiAf8BxQH6AckB/wHwAfkB8QH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D8QH/AfUB9AH1Af8D6QH/
|
||||
A9YB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D/gn/A/4B/wP5Af8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D4gH/A/kB/wPxAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D8QH/AfUB9AH1Af8D6QH/
|
||||
A9YB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D/gn/A/4B/wHgAfEB4QH/AZIByQGTAf8BMgGj
|
||||
ATQB/wEjAZkBJgH/AS4BnAExAf8BJgGYASkB/wEmAZgBKQH/AZIByQGTAf8D/gH/A/4Z/wP+Af8D/gH/
|
||||
AasB2AGsAf8BRQGwAUcB/wEqAZoBLQH/AR8BigEhAf8BFwGMARkB/wEaAYwBHAH/AWoBtAFrAf8B3AHw
|
||||
Ad0B/wP+Cf8D/gH/AeAB8QHhAf8BkgHJAZMB/wEyAaMBNAH/ASMBmQEmAf8BKgGaAS0B/wEmAZgBKQH/
|
||||
ASYBmAEpAf8BkgHJAZMB/wP+Af8D/hn/A/4B/wP+Af8B0QH6AdQB/wGaAfkBoQH/AWsB5QF0Af8BSAHS
|
||||
AVEB/wFCAdABSwH/AUIBywFKAf8BgQHgAYYB/wHgAfgB4gH/A/4J/wP+Af8B4AHxAeEB/wGSAckBkwH/
|
||||
ATIBowE0Af8BIwGZASYB/wEuAZwBMQH/ASoBmgEtAf8BJgGYASkB/wGSAckBkwH/A/4B/wP+Gf8D/gH/
|
||||
A/4B/wPsAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPiAf8D+QH/A/4J/wP+Af8B8AH5AfEB/wHxAewB8QH/
|
||||
AdwB2gHcAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wP+Af8D/hn/A/4B/wP+Af8D7AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D4gH/A/kB/wP+Bf8D/gH/AbkB4AG6Af8BUgGyAVQB/wHBAeIBwgH/AdIB6gHSAf8BcgG8
|
||||
AXQB/wEjAZkBJgH/ARwBkAEeAf8BqgHSAasB/wP+Kf8D/gH/AcEB4gHCAf8BRQGwAUcB/wEiAZIBJAH/
|
||||
AVMBqQFVAf8BwQHiAcIB/wHJAeIByQH/AVMBqQFVAf8BqgHSAasB/wP+Af8D/gH/AbkB4AG6Af8BUgGy
|
||||
AVQB/wHBAeIBwgH/AdIB6gHSAf8BcgG8AXQB/wEjAZkBJgH/ARwBkAEeAf8BqgHSAasB/wP+Kf8D/gH/
|
||||
Ad0B+wHgAf8BmgH5AaEB/wFaAeABYwH/AWwB2wF0Af8BxQH6AckB/wH4AfIB+AH/A+IB/wPxAf8D/gH/
|
||||
A/4B/wG5AeABugH/AVIBsgFUAf8BwQHiAcIB/wHSAeoB0gH/AXIBvAF0Af8BIwGZASYB/wEcAZABHgH/
|
||||
AaoB0gGrAf8D/in/A/4B/wPxAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPxAf8D/gH/
|
||||
A/4B/wHRAfoB1AH/AYIB8QGKAf8BzgH6AdEB/wH4AfIB+AH/AegB5AHoAf8D2QH/A9kB/wPxAf8D/in/
|
||||
A/4B/wPxAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPxAf8D/gH/A/4B/wFyAbwBdAH/
|
||||
ASMBmQEmAf8BKgGaAS0B/wFwAbkBcgH/AdIB6gHSAf8BswHbAbQB/wGZAcsBmQH/A/4x/wP+Af8BswHb
|
||||
AbQB/wGzAdsBtAH/AdsB7AHbAf8BeQG8AXsB/wEiAZIBJAH/AQoBgwEMAf8BUwGpAVUB/wP+Af8D/gH/
|
||||
AXIBvAF0Af8BIwGZASYB/wEqAZoBLQH/AXABuQFyAf8B0gHqAdIB/wGzAdsBtAH/AZkBywGZAf8D/jH/
|
||||
A/4B/wHRAfoB1AH/Ac4B+gHRAf8B8AH5AfEB/wHxAewB8QH/A9kB/wPWAf8D4gH/A/4B/wP+Af8BcgG8
|
||||
AXQB/wEjAZkBJgH/ASoBmgEtAf8BcAG5AXIB/wHSAeoB0gH/AbMB2wG0Af8BmQHLAZkB/wP+Mf8D/gH/
|
||||
A+wB/wPxAf8D+QH/A+kB/wPZAf8D1gH/A+IB/wP+Af8D/gH/AZ4B8wGkAf8BagHoAXQB/wFqAegBdAH/
|
||||
AZQB8AGaAf8B4AH4AeIB/wH0AfAB9AH/A+wB/wP+Mf8D/gH/A+wB/wPxAf8D+QH/A+kB/wPZAf8D1gH/
|
||||
A+IB/wP+Af8B4AHxAeEB/wE/AakBQQH/ATIBowE0Af8BMgGjATQB/wEqAZoBLQH/ASYBmAEpAf8BmQHL
|
||||
AZkB/wP+Of8D/gH/AcEB4gHCAf8BPwGpAUEB/wETAYgBFQH/AR8BigEhAf8BGgGMARwB/wEiAZIBJAH/
|
||||
AdIB6gHSAf8B4AHxAeEB/wE/AakBQQH/ATIBowE0Af8BMgGjATQB/wEqAZoBLQH/ASYBmAEpAf8BmQHL
|
||||
AZkB/wP+Of8D/gH/AfQB8AH0Af8D3AH/A9kB/wPZAf8D2QH/A9kB/wP5Af8B4AHxAeEB/wE/AakBQQH/
|
||||
ATIBowE0Af8BMgGjATQB/wEqAZoBLQH/ASYBmAEpAf8BmQHLAZkB/wP+Of8D/gH/A/EB/wPcAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A/kB/wHqAfgB6wH/AXoB8gGBAf8BdQHxAX4B/wFxAesBegH/AWoB6AF0Af8BWgHd
|
||||
AWMB/wGkAesBqQH/A/45/wP+Af8D8QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D+QH/AasB2AGsAf8BLgGi
|
||||
ATIB/wE2AaQBOQH/ATYBpAE5Af8BMgGjATQB/wETAYgBFQH/AZIByQGTAf8D/jn/A/4B/wGzAdsBtAH/
|
||||
ATIBowE0Af8BIgGSASQB/wEiAZIBJAH/ASIBkgEkAf8BEwGIARUB/wGSAckBkwH/AasB2AGsAf8BLgGi
|
||||
ATIB/wE2AaQBOQH/ATYBpAE5Af8BMgGjATQB/wETAYgBFQH/AZIByQGTAf8D/jn/A/4B/wPsAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPsAf8BqwHYAawB/wEuAaIBMgH/ATYBpAE5Af8BNgGkATkB/wEyAaMBNAH/
|
||||
ARMBiAEVAf8BkgHJAZMB/wP+Of8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wHKAfkBzQH/
|
||||
AXUB8QF+Af8BegHyAYEB/wF6AfIBgQH/AXEB6wF6Af8BQAHPAUoB/wGkAeYBqAH/A/45/wP+Af8D7AH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D7AH/AYQByAGGAf8BKQGgASwB/wE2AaQBOQH/ATYBpAE5Af8BKgGa
|
||||
AS0B/wEhAYwBIwH/AdsB7AHbQf8B6AH1AegB/wFLAbABTQH/ASYBmAEpAf8BIgGSASQB/wEiAZIBJAH/
|
||||
ARMBiAEVAf8BagG0AWsB/wGEAcgBhgH/ASkBoAEsAf8BNgGkATkB/wE2AaQBOQH/ASoBmgEtAf8BIQGM
|
||||
ASMB/wHbAewB20H/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wGEAcgBhgH/ASkBoAEsAf8BNgGk
|
||||
ATkB/wE2AaQBOQH/ASoBmgEtAf8BIQGMASMB/wHbAewB20H/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A+IB/wGqAfwBsQH/AXUB8QF+Af8BegHyAYEB/wF6AfIBgQH/AWgB5QFxAf8BQgHLAUoB/wHgAfEB4UH/
|
||||
A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wFpAbsBawH/AS4BogEyAf8BNgGkATkB/wE2AaQBOQH/
|
||||
ASIBkgEkAf8BPgGbAUAB/wH5AfwB+UH/A/4B/wFtAcABbwH/ASMBmQEmAf8BHwGKASEB/wEfAZIBIQH/
|
||||
ARcBjAEZAf8BSQGlAUwB/wFpAbsBawH/AS4BogEyAf8BNgGkATkB/wE2AaQBOQH/ASIBkgEkAf8BPgGb
|
||||
AUAB/wH5AfwB+UH/A/4B/wPiAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wFpAbsBawH/AS4BogEyAf8BNgGk
|
||||
ATkB/wE2AaQBOQH/ASIBkgEkAf8BPgGbAUAB/wH5AfwB+UH/A/4B/wPiAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A+IB/wGaAfkBoQH/AXoB8gGBAf8BegHyAYEB/wF6AfIBgQH/AVoB4AFjAf8BWwHQAWIB/wH5AfwB+UH/
|
||||
A/4B/wPiAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wHLAegBywH/AbkB4AG6Af8BuQHgAboB/wG5AeABugH/
|
||||
AbMB2wG0Af8BwQHiAcIB/wP+Qf8D/gH/AdIB6gHSAf8BuAHdAbkB/wGzAdsBtAH/AbMB2wG0Af8BswHb
|
||||
AbQB/wG/AeABwAH/AcsB6AHLAf8BuQHgAboB/wG5AeABugH/AbkB4AG6Af8BswHbAbQB/wHBAeIBwgH/
|
||||
A/5B/wP+Af8B9QH0AfUB/wPxAf8D8QH/A/EB/wPxAf8B9QH0AfUB/wHLAegBywH/AbkB4AG6Af8BuQHg
|
||||
AboB/wG5AeABugH/AbMB2wG0Af8BwQHiAcIB/wP+Qf8D/gH/AfUB9AH1Af8D8QH/A/EB/wPxAf8D8QH/
|
||||
AfUB9AH1Af8B3QH7AeAB/wHRAfoB1AH/AdQB/AHYAf8B1AH8AdgB/wHFAfIByAH/Ac0B8wHQAf8D/kH/
|
||||
A/4B/wH1AfQB9QH/A/EB/wPxAf8D8QH/A/EB/wH1AfQB9QH/AZIB0AGTAf8BfAHCAX0B/wF8AcIBfQH/
|
||||
AXwBwgF9Af8BaQG7AWsB/wGJAcIBigH/A/5B/wP+Af8BzgH6AdEB/wGeAfMBpAH/AYwB5gGSAf8BjAHm
|
||||
AZIB/wGMAeYBkgH/AZwB7AGhAf8BkgHQAZMB/wF8AcIBfQH/AXwBwgF9Af8BfAHCAX0B/wFpAbsBawH/
|
||||
AYkBwgGKAf8D/kH/A/4B/wPsAf8D4gH/A+IB/wPiAf8D4gH/A+kB/wGSAdABkwH/AXwBwgF9Af8BfAHC
|
||||
AX0B/wF8AcIBfQH/AWkBuwFrAf8BiQHCAYoB/wP+Qf8D/gH/A+wB/wPiAf8D4gH/A+IB/wPiAf8D6QH/
|
||||
AZIByQGTAf8BdQHAAXYB/wF4AcABeQH/AXwBwgF9Af8BagG0AWsB/wGIAb8BiQH/A/5B/wP+Af8D7AH/
|
||||
A+IB/wPiAf8D4gH/A+IB/wPpAf8BaQG7AWsB/wEpAaABLAH/ATIBowE0Af8BMgGjATQB/wEcAZABHgH/
|
||||
ATQBlQE2Af8B+QH8AflB/wP+Af8BngHzAaQB/wFfAeIBaQH/AUkB0gFSAf8BSwHZAVQB/wFCAdABSwH/
|
||||
AWwB2wF0Af8BaQG7AWsB/wEpAaABLAH/ATIBowE0Af8BMgGjATQB/wEcAZABHgH/ATQBlQE2Af8B8AH5
|
||||
AfFB/wP+Af8D4gH/A9YB/wPZAf8D2QH/A9YB/wPiAf8BaQG7AWsB/wEpAaABLAH/ATIBowE0Af8BMgGj
|
||||
ATQB/wEcAZABHgH/ATQBlQE2Af8B8AH5AfFB/wP+Af8D4gH/A9YB/wPZAf8D2QH/A9YB/wPiAf8BaQG7
|
||||
AWsB/wEpAaABLAH/ATIBowE0Af8BMgGjATQB/wEcAZABHgH/ATQBlQE2Af8B8AH5AfFB/wP+Af8D4gH/
|
||||
A9YB/wPZAf8D2QH/A9YB/wPiAf8BiQHIAYoB/wEyAaMBNAH/ATsBqQE9Af8BOwGpAT0B/wEyAaMBNAH/
|
||||
AR8BigEhAf8B1wHqAdhB/wHvAfwB8AH/AYIB8QGKAf8BXwHiAWkB/wFVAdsBXgH/AVUB2wFeAf8BSQHS
|
||||
AVIB/wGMAeYBkgH/AYkByAGKAf8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BMgGjATQB/wEfAYoBIQH/
|
||||
AdcB6gHYQf8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D4gH/AYkByAGKAf8BMgGjATQB/wE7AakBPQH/
|
||||
ATsBqQE9Af8BMgGjATQB/wEfAYoBIQH/AdcB6gHYQf8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D4gH/
|
||||
AYkByAGKAf8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BMgGjATQB/wEfAYoBIQH/AdcB6gHYQf8D+QH/
|
||||
A9wB/wPZAf8D2QH/A9kB/wPZAf8D4gH/AbMB2wG0Af8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BOwGp
|
||||
AT0B/wEKAYMBDAH/AYkBwgGKAf8D/jn/A/4B/wHFAfoByQH/AWcB7AFxAf8BWgHdAWMB/wFaAd0BYwH/
|
||||
AVUB2wFeAf8BSwHZAVQB/wGwAewBtAH/AbMB2wG0Af8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BOQGh
|
||||
ATsB/wEKAYMBDAH/AYkBwgGKAf8D/jn/A/4B/wPsAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wPsAf8BswHb
|
||||
AbQB/wEyAaMBNAH/ATsBqQE9Af8BOwGpAT0B/wE5AaEBOwH/AQoBgwEMAf8BiQHCAYoB/wP+Of8D/gH/
|
||||
A+wB/wPWAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wGzAdsBtAH/ATIBowE0Af8BOwGpAT0B/wE7AakBPQH/
|
||||
ATkBoQE7Af8BCgGDAQwB/wGJAcIBigH/A/45/wP+Af8D7AH/A9YB/wPZAf8D2QH/A9kB/wPZAf8D7AH/
|
||||
AegB9QHoAf8BSwGwAU0B/wE7AakBPQH/ATIBowE0Af8BMgGjATQB/wFnAbYBaQH/AckB4gHJAf8B+QH8
|
||||
Afk5/wP+Af8B6gH4AesB/wGeAfMBpAH/AVoB3QFjAf8BVQHbAV4B/wFVAdsBXgH/AVoB3QFjAf8B4AH4
|
||||
AeIB/wHoAfUB6AH/AUsBsAFNAf8BOwGpAT0B/wEyAaMBNAH/ATIBowE0Af8BZwG2AWkB/wHJAeIByQH/
|
||||
AfkB/AH5Of8D/gH/A/kB/wPpAf8D2QH/A9kB/wPZAf8D2QH/A/kB/wHoAfUB6AH/AUsBsAFNAf8BOwGp
|
||||
AT0B/wEyAaMBNAH/ATIBowE0Af8BZwG2AWkB/wHJAeIByQH/AfkB/AH5Of8D/gH/A/kB/wPpAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A/kB/wHoAfUB6AH/AUsBsAFNAf8BOwGpAT0B/wEyAaMBNAH/ATIBowE0Af8BZwG2
|
||||
AWkB/wHJAeIByQH/AfkB/AH5Of8D/gH/A/kB/wPpAf8D2QH/A9kB/wPZAf8D2QH/A/kB/wP+Af8BfAHC
|
||||
AX0B/wEpAaABLAH/AVsBsQFdAf8BuQHgAboB/wHgAfEB4QH/AWEBsQFiAf8BdAG1AXUB/wP+Mf8D/gH/
|
||||
A+kB/wPiAf8B+AHyAfgB/wHRAfoB1AH/AXwB5wGDAf8BSwHZAVQB/wGDAeEBiQH/A/4B/wP+Af8BfAHC
|
||||
AX0B/wEpAaABLAH/AVsBsQFdAf8BuQHgAboB/wHgAfEB4QH/AWEBsQFiAf8BdAG1AXUB/wP+Mf8D/gH/
|
||||
A+kB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPWAf8D4gH/A/4B/wP+Af8BfAHCAX0B/wEpAaABLAH/
|
||||
AVsBsQFdAf8BuQHgAboB/wHgAfEB4QH/AWEBsQFiAf8BdAG1AXUB/wP+Mf8D/gH/A+kB/wPiAf8B9QH0
|
||||
AfUB/wH1AfQB9QH/A+IB/wPWAf8D4gH/A/4B/wP+Af8BfAHCAX0B/wEpAaABLAH/AVsBsQFdAf8BuQHg
|
||||
AboB/wHgAfEB4QH/AWEBsQFiAf8BdAG1AXUB/wP+Mf8D/gH/A+kB/wPiAf8B9QH0AfUB/wH1AfQB9QH/
|
||||
A+IB/wPWAf8D4gH/A/4B/wP+Af8BzgHrAdAB/wGfAdUBoQH/AdwB8AHdAf8BmgHSAZsB/wFDAasBRQH/
|
||||
ASYBmAEpAf8BEgGEARQB/wGQAcUBkQH/A/4p/wP+Af8D8QH/A9kB/wPZAf8D2QH/Ae0B6AHtAf8B9QH0
|
||||
AfUB/wG0AfMBuAH/AdAB8wHTAf8D/gH/A/4B/wHLAegBywH/AZ8B1QGhAf8B3AHwAd0B/wGaAdIBmwH/
|
||||
AUMBqwFFAf8BJgGYASkB/wESAYQBFAH/AZABxQGRAf8D/in/A/4B/wPxAf8D2QH/A9kB/wPZAf8D6QH/
|
||||
A/kB/wPxAf8B9QH0AfUB/wP+Af8D/gH/AcsB6AHLAf8BnwHVAaEB/wHcAfAB3QH/AZoB0gGbAf8BQwGr
|
||||
AUUB/wEmAZgBKQH/ARIBhAEUAf8BkAHFAZEB/wP+Kf8D/gH/A/EB/wPZAf8D2QH/A9kB/wPpAf8D+QH/
|
||||
A/EB/wH1AfQB9QH/A/4B/wP+Af8BywHoAcsB/wGfAdUBoQH/AdwB8AHdAf8BmgHSAZsB/wFDAasBRQH/
|
||||
ASYBmAEpAf8BEgGEARQB/wGQAcUBkQH/A/4p/wP+Af8D8QH/A9kB/wPZAf8D2QH/A+kB/wP5Af8D8QH/
|
||||
AfUB9AH1Af8D/gX/A/4B/wHSAeoB0gH/AVIBsgFUAf8BMgGjATQB/wE7AakBPQH/AT8BqQFBAf8BLgGc
|
||||
ATEB/wESAYQBFAH/AYIBvQGDAf8D/gH/A/4Z/wP+Af8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9wB/wH0AfAB9AH/A/4J/wP+Af8B0gHqAdIB/wFSAbIBVAH/ATIBowE0Af8BOwGpAT0B/wE/AakBQQH/
|
||||
AS4BnAExAf8BEgGEARQB/wF/AbwBgQH/A/4B/wP+Gf8D/gH/A/4B/wPsAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D8QH/A/4J/wP+Af8B0gHqAdIB/wFSAbIBVAH/ATIBowE0Af8BOwGpAT0B/wE/AakBQQH/
|
||||
AS4BnAExAf8BEgGEARQB/wF/AbwBgQH/A/4B/wP+Gf8D/gH/A/4B/wPsAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D8QH/A/4J/wP+Af8B0gHqAdIB/wFSAbIBVAH/ATIBowE0Af8BOwGpAT0B/wE/AakBQQH/
|
||||
AS4BnAExAf8BEgGEARQB/wF/AbwBgQH/A/4B/wP+Gf8D/gH/A/4B/wPsAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D8QH/A/4J/wP+Af8B4AHxAeEB/wFLAbABTQH/ATgBqAE6Af8BPwGpAUEB/wE7AakBPQH/
|
||||
AT8BqQFBAf8BIwGZASYB/wGJAcIBigH/AaoB0gGrAf8BggG9AYMB/wHbAewB2wH/AfkB/AH5Af8D/gH/
|
||||
A/4B/wP+Af8D+QH/A+wB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A/kB/wP+Cf8D/gH/
|
||||
AeAB8QHhAf8BSwGwAU0B/wE4AagBOgH/AT8BqQFBAf8BOwGpAT0B/wE/AakBQQH/ASMBmQEmAf8BiQHC
|
||||
AYoB/wGqAdIBqwH/AYIBvQGDAf8B2wHsAdsB/wH5AfwB+QH/A/4B/wP+Af8D/gH/A/kB/wPsAf8D7AH/
|
||||
A/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wP5Af8D/gn/A/4B/wHgAfEB4QH/AUsBsAFNAf8BOAGo
|
||||
AToB/wE/AakBQQH/ATsBqQE9Af8BPwGpAUEB/wEjAZkBJgH/AYkBwgGKAf8BqgHSAasB/wGCAb0BgwH/
|
||||
AdsB7AHbAf8B+QH8AfkB/wP+Af8D/gH/A/4B/wP5Af8D7AH/A+wB/wPxAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D+QH/A/4J/wP+Af8B4AHxAeEB/wFLAbABTQH/ATsBqQE9Af8BPwGpAUEB/wE7AakBPQH/
|
||||
AT8BqQFBAf8BIwGZASYB/wGJAcIBigH/AaoB0gGrAf8BggG9AYMB/wHbAewB2wH/AfkB/AH5Af8D/gH/
|
||||
A/4B/wP+Af8D+QH/A+wB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A/kB/wP+Df8D/gH/
|
||||
AbkB4AG6Af8BOwGpAT0B/wE7AakBPQH/AT8BqQFBAf8BNgGkATkB/wFfAboBYQH/AeAB8QHhAf8BQgGi
|
||||
AUQB/wEQAYgBEQH/ASEBjAEjAf8BNAGVATYB/wGSAckBkwH/AfgB8gH4Af8D3AH/A9kB/wPZAf8D2QH/
|
||||
A/kB/wPiAf8D2QH/A9kB/wPZAf8D2QH/A/EB/wP+Ef8D/gH/AbkB4AG6Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AT8BqQFBAf8BNgGkATkB/wFfAboBYQH/AeAB8QHhAf8BQgGiAUQB/wEPAYYBEQH/ASEBjAEjAf8BNAGV
|
||||
ATYB/wGSAckBkwH/AfgB8gH4Af8D3AH/A9kB/wPZAf8D2QH/A/kB/wPiAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A/EB/wP+Ef8D/gH/AbkB4AG6Af8BOwGpAT0B/wE7AakBPQH/AT8BqQFBAf8BNgGkATkB/wFfAboBYQH/
|
||||
AeAB8QHhAf8BQgGiAUQB/wEPAYYBEQH/ASEBjAEjAf8BNAGVATYB/wGSAckBkwH/AfgB8gH4Af8D3AH/
|
||||
A9kB/wPZAf8D2QH/A/kB/wPiAf8D2QH/A9kB/wPZAf8D2QH/A/EB/wP+Ef8D/gH/AbkB4AG6Af8BOwGp
|
||||
AT0B/wE7AakBPQH/AT8BqQFBAf8BNgGkATkB/wFfAboBYQH/AeAB8QHhAf8BQgGiAUQB/wEPAYYBEQH/
|
||||
ASEBjAEjAf8BNAGVATYB/wGSAckBkwH/AfgB8gH4Af8D3AH/A9kB/wPZAf8D2QH/A/kB/wPiAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A/EB/wP+Ff8D/gH/AbMB2wG0Af8BOwGpAT0B/wE4AagBOgH/ATYBpAE5Af8BuQHg
|
||||
AboB/wGaAdIBmwH/ATIBowE0Af8BOwGpAT0B/wEyAaMBNAH/ARwBkAEeAf8BfAHCAX0B/wH0AfAB9AH/
|
||||
A9YB/wPZAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wPZAf8D2QH/A9kB/wPsAf8D/hn/A/4B/wGzAdsBtAH/
|
||||
ATsBqQE9Af8BOAGoAToB/wE2AaQBOQH/AbkB4AG6Af8BmgHSAZsB/wEyAaMBNAH/ATsBqQE9Af8BMgGj
|
||||
ATQB/wEcAZABHgH/AXwBwgF9Af8B9AHwAfQB/wPWAf8D2QH/A9kB/wPZAf8D4gH/AfUB9AH1Af8D2QH/
|
||||
A9kB/wPZAf8D7AH/A/4Z/wP+Af8BswHbAbQB/wE7AakBPQH/ATgBqAE6Af8BNgGkATkB/wG5AeABugH/
|
||||
AZoB0gGbAf8BMgGjATQB/wE7AakBPQH/ATIBowE0Af8BHAGQAR4B/wF8AcIBfQH/AfQB8AH0Af8D1gH/
|
||||
A9kB/wPZAf8D2QH/A+IB/wH1AfQB9QH/A9kB/wPZAf8D2QH/A+wB/wP+Gf8D/gH/AbMB2wG0Af8BOwGp
|
||||
AT0B/wE4AagBOgH/ATYBpAE5Af8BuQHgAboB/wGaAdIBmwH/ATIBowE0Af8BOwGpAT0B/wEyAaMBNAH/
|
||||
ARwBkAEeAf8BfAHCAX0B/wH0AfAB9AH/A9YB/wPZAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D/h3/A/4B/wHBAeIBwgH/AUsBsAFNAf8BbQHAAW8B/wHSAeoB0gH/AUMBqwFFAf8BOwGp
|
||||
AT0B/wE7AakBPQH/ATsBqQE9Af8BLgGiATIB/wGJAcgBigH/AfQB8AH0Af8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPxAf8D6QH/A9kB/wPxAf8D/iH/A/4B/wHBAeIBwgH/AUsBsAFNAf8BbQHAAW8B/wHSAeoB0gH/
|
||||
AUMBqwFFAf8BOwGpAT0B/wE7AakBPQH/ATsBqQE9Af8BLgGiATIB/wGJAcgBigH/AfQB8AH0Af8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPxAf8D6QH/A9kB/wPxAf8D/iH/A/4B/wHBAeIBwgH/AUsBsAFNAf8BbQHA
|
||||
AW8B/wHSAeoB0gH/AUMBqwFFAf8BOwGpAT0B/wE7AakBPQH/ATsBqQE9Af8BLgGiATIB/wGJAcgBigH/
|
||||
AfQB8AH0Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPxAf8D6QH/A9kB/wPxAf8D/iH/A/4B/wHBAeIBwgH/
|
||||
AUsBsAFNAf8BbQHAAW8B/wHSAeoB0gH/AUMBqwFFAf8BOwGpAT0B/wE7AakBPQH/ATsBqQE9Af8BMgGj
|
||||
ATQB/wGJAcgBigH/AfQB8AH0Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPxAf8D6QH/A9kB/wPxAf8D/iX/
|
||||
A/4B/wHgAfEB4QH/AdwB8AHdAf8BfAHCAX0B/wEpAaABLAH/ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AS4BogEyAf8BiQHIAYoB/wH0AfAB9AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/A/kB/wP5Af8D/in/
|
||||
A/4B/wHgAfEB4QH/AdwB8AHdAf8BfAHCAX0B/wEpAaABLAH/ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AS4BogEyAf8BiQHIAYoB/wH0AfAB9AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/A/kB/wP5Af8D/in/
|
||||
A/4B/wHgAfEB4QH/AdwB8AHdAf8BfAHCAX0B/wEpAaABLAH/ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AS4BogEyAf8BiQHIAYoB/wH0AfAB9AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/A/kB/wP5Af8D/in/
|
||||
A/4B/wHgAfEB4QH/AdwB8AHdAf8BfAHCAX0B/wEpAaABLAH/ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AS4BogEyAf8BiQHIAYoB/wH0AfAB9AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D4gH/A/kB/wP5Af8D/i3/
|
||||
A/4B/wP+Af8BzgHrAdAB/wGEAcgBhgH/AUsBsAFNAf8BOAGoAToB/wEuAaIBMgH/AScBoAEpAf8BhAHI
|
||||
AYYB/wHxAewB8QH/A9YB/wPWAf8D2QH/A9wB/wPiAf8B9AHwAfQB/wP+Af8D/jH/A/4B/wP+Af8BzgHr
|
||||
AdAB/wGEAcgBhgH/AUsBsAFNAf8BOAGoAToB/wEuAaIBMgH/AScBoAEpAf8BhAHIAYYB/wH0AfAB9AH/
|
||||
A9YB/wPWAf8D2QH/A9wB/wPiAf8B9QH0AfUB/wP+Af8D/jH/A/4B/wP+Af8BzgHrAdAB/wGEAcgBhgH/
|
||||
AUsBsAFNAf8BOAGoAToB/wEuAaIBMgH/AScBoAEpAf8BhAHIAYYB/wHxAewB8QH/A9YB/wPWAf8D2QH/
|
||||
A9wB/wPiAf8B9QH0AfUB/wP+Af8D/jH/A/4B/wP+Af8BzgHrAdAB/wGEAcgBhgH/AUsBsAFNAf8BOAGo
|
||||
AToB/wEuAaIBMgH/AScBoAEpAf8BhAHIAYYB/wHxAewB8QH/A9YB/wPWAf8D2QH/A9wB/wPiAf8B9QH0
|
||||
AfUB/wP+Af8D/jn/A/4B/wP+Af8B8AH5AfEB/wG5AeABugH/AZIB0AGTAf8BbQHAAW8B/wGkAdgBpQH/
|
||||
AfQB8AH0Af8D4gH/A+kB/wPxAf8D+QH/A/4B/wP+Qf8D/gH/A/4B/wHqAfgB6wH/AbkB4AG6Af8BkgHQ
|
||||
AZMB/wFtAcABbwH/AaQB2AGlAf8B9AHwAfQB/wPiAf8D6QH/A/EB/wP5Af8D/gH/A/5B/wP+Af8D/gH/
|
||||
AeoB+AHrAf8BuQHgAboB/wGSAdABkwH/AW0BwAFvAf8BpAHYAaUB/wH0AfAB9AH/A+IB/wPpAf8D8QH/
|
||||
A/kB/wP+Af8D/kH/A/4B/wP+Af8B6gH4AesB/wG5AeABugH/AZIB0AGTAf8BbQHAAW8B/wGkAdgBpQH/
|
||||
AfQB8AH0Af8D4gH/A+kB/wPxAf8D+QH/A/4B/wP+Qf8D/gH/A/4B/wHgAfgB4gH/AbQB7AG4Af8BkAHm
|
||||
AZYB/wFsAdsBdAH/AbEB8QG1Af8BoAHRAaEB/wFCAaIBRAH/AWoBtAFrAf8BmQHLAZkB/wHbAewB2wH/
|
||||
A/4B/wP+Qf8D/gH/A/4B/wHbAewB2wH/AaAB0QGhAf8BcgG8AXQB/wFJAaUBTAH/AZkBywGZAf8BqgHS
|
||||
AasB/wFCAaIBRAH/AWoBtAFrAf8BmQHLAZkB/wHbAewB2wH/A/4B/wP+Qf8D/gH/A/4B/wHcAfAB3QH/
|
||||
AaAB0QGhAf8BcgG8AXQB/wFJAaUBTAH/AZkBywGZAf8BqgHSAasB/wFCAaIBRAH/AWoBtAFrAf8BmQHL
|
||||
AZkB/wHbAewB2wH/A/4B/wP+Qf8D/gH/A/4B/wHcAfAB3QH/AaAB0QGhAf8BcgG8AXQB/wFJAaUBTAH/
|
||||
AZkBywGZAf8BqgHSAasB/wFCAaIBRAH/AWoBtAFrAf8BmQHLAZkB/wHbAewB2wH/A/4B/wP+Of8D/gH/
|
||||
A/4B/wHNAfMB0AH/AYMB4QGJAf8BWgHdAWMB/wFLAdkBVAH/AUkB0gFSAf8BQgHQAUsB/wGhAeoBpgH/
|
||||
AZIByQGTAf8BCgGDAQwB/wETAYgBFQH/ARMBiAEVAf8BIgGSASQB/wFZAawBWwH/AbMB2wG0Af8D/gH/
|
||||
A/4x/wP+Af8D/gH/Ab8B4AHAAf8BYQGxAWIB/wEqAZoBLQH/ARoBjAEcAf8BFwGMARkB/wEQAYgBEQH/
|
||||
AYUBwgGGAf8BkgHJAZMB/wEKAYMBDAH/ARMBiAEVAf8BEwGIARUB/wEiAZIBJAH/AVkBrAFbAf8BswHb
|
||||
AbQB/wP+Af8D/jH/A/4B/wP+Af8BvwHgAcAB/wFhAbEBYgH/ASoBmgEtAf8BGgGMARwB/wEXAYwBGQH/
|
||||
ARABiAERAf8BhQHCAYYB/wGSAckBkwH/AQoBgwEMAf8BEwGIARUB/wETAYgBFQH/ASIBkgEkAf8BWQGs
|
||||
AVsB/wGzAdsBtAH/A/4B/wP+Mf8D/gH/A/4B/wHBAeIBwgH/AWEBsQFiAf8BKgGaAS0B/wEcAZABHgH/
|
||||
ARcBjAEZAf8BEAGIAREB/wGFAcIBhgH/AZYByQGYAf8BCgGDAQwB/wETAYgBFQH/ARMBiAEVAf8BIgGS
|
||||
ASQB/wFZAawBWwH/AbMB2wG0Af8D/gH/A/4t/wP+Af8B9QH0AfUB/wH4AfIB+AH/AakB6QGtAf8BSwHZ
|
||||
AVQB/wFVAdsBXgH/AVUB2wFeAf8BVQHbAV4B/wFJAdIBUgH/AaQB6wGpAf8BlgHJAZgB/wETAYgBFQH/
|
||||
ASIBkgEkAf8BHwGSASEB/wEaAYwBHAH/AQoBgwEMAf8BagG0AWsB/wHJAeIByQH/AcEB4gHCAf8D/in/
|
||||
A/4B/wHJAeIByQH/AbkB4AG6Af8BkgHJAZMB/wETAYgBFQH/ASIBkgEkAf8BIgGSASQB/wEiAZIBJAH/
|
||||
ARcBjAEZAf8BiQHCAYoB/wGZAcsBmQH/ARMBiAEVAf8BIgGSASQB/wEfAZIBIQH/ARoBjAEcAf8BCgGD
|
||||
AQwB/wFqAbQBawH/AckB4gHJAf8BwQHiAcIB/wP+Kf8D/gH/AckB4gHJAf8BvwHgAcAB/wGSAckBkwH/
|
||||
ARMBiAEVAf8BIgGSASQB/wEiAZIBJAH/ASIBkgEkAf8BFwGMARkB/wGJAcIBigH/AZkBywGZAf8BEwGI
|
||||
ARUB/wEiAZIBJAH/ASIBkgEkAf8BGgGMARwB/wEKAYMBDAH/AWoBtAFrAf8ByQHiAckB/wHBAeIBwgH/
|
||||
A/4p/wP+Af8ByQHiAckB/wG5AeABugH/AZIByQGTAf8BEwGIARUB/wEiAZIBJAH/ASIBkgEkAf8BIgGS
|
||||
ASQB/wEXAYwBGQH/AYkBwgGKAf8BmQHLAZkB/wETAYgBFQH/ASIBkgEkAf8BHwGSASEB/wEaAYwBHAH/
|
||||
AQoBgwEMAf8BagG0AWsB/wHJAeIByQH/AcEB4gHCAf8D/iX/A/4B/wPxAf8D2QH/A9wB/wHvAfwB8AH/
|
||||
AXUB5QF9Af8BVQHbAV4B/wFaAd0BYwH/AVUB2wFeAf8BSQHSAVIB/wGkAesBqQH/AZIByQGTAf8BEwGI
|
||||
ARUB/wEiAZIBJAH/ASIBkgEkAf8BGgGMARwB/wEsAZUBLgH/AdAB5wHQAf8BSQGlAUwB/wEaAYwBHAH/
|
||||
AZkBywGZAf8D/iH/A/4B/wGrAdgBrAH/AS4BnAExAf8BOQGhATsB/wHXAeoB2AH/AU8BqgFRAf8BIgGS
|
||||
ASQB/wEnAZYBKQH/AScBlgEpAf8BFwGMARkB/wGJAcIBigH/AZkBywGZAf8BEwGIARUB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BGgGMARwB/wEsAZUBLgH/AdAB5wHQAf8BSQGlAUwB/wEaAYwBHAH/AZkBywGZAf8D/iH/
|
||||
A/4B/wGrAdgBrAH/AS4BnAExAf8BOQGhATsB/wHXAeoB2AH/AU8BqgFRAf8BIgGSASQB/wEnAZYBKQH/
|
||||
ASIBkgEkAf8BFwGMARkB/wGJAcIBigH/AZkBywGZAf8BEwGIARUB/wEiAZIBJAH/ASIBkgEkAf8BGgGM
|
||||
ARwB/wEsAZUBLgH/AdAB5wHQAf8BSQGlAUwB/wEaAYwBHAH/AZkBywGZAf8D/iH/A/4B/wGrAdgBrAH/
|
||||
AS4BnAExAf8BOQGhATsB/wHXAeoB2AH/AU8BqgFRAf8BIgGSASQB/wEnAZYBKQH/AScBlgEpAf8BFwGM
|
||||
ARkB/wGJAcIBigH/AZkBywGZAf8BEwGIARUB/wEiAZIBJAH/ASIBkgEkAf8BGgGMARwB/wEsAZUBLgH/
|
||||
AdAB5wHQAf8BSQGlAUwB/wEaAYwBHAH/AZkBywGZAf8D/h3/A/4B/wPsAf8D2QH/A9kB/wPZAf8B8QHs
|
||||
AfEB/wHFAfIByAH/AVUB2wFeAf8BWgHdAWMB/wFaAeABYwH/AVoB4AFjAf8BsQH7AbYB/wGZAcsBmQH/
|
||||
ARwBkAEeAf8BJwGWASkB/wEiAZIBJAH/ARMBiAEVAf8BlgHJAZgB/wGqAdIBqwH/ARMBiAEVAf8BGgGM
|
||||
ARwB/wETAYgBFQH/AYcBwgGIAf8D/hn/A/4B/wGaAdIBmwH/ASMBmQEmAf8BJgGYASkB/wEfAZIBIQH/
|
||||
AZIByQGTAf8BuAHdAbkB/wEiAZIBJAH/AScBlgEpAf8BJgGYASkB/wEcAZABHgH/AYkByAGKAf8BmgHS
|
||||
AZsB/wEcAZABHgH/AScBlgEpAf8BIgGSASQB/wETAYgBFQH/AZYByQGYAf8BqgHSAasB/wETAYgBFQH/
|
||||
ARoBjAEcAf8BEgGEARQB/wGHAcIBiAH/A/4Z/wP+Af8BmgHSAZsB/wEjAZkBJgH/ASYBmAEpAf8BHwGS
|
||||
ASEB/wGSAckBkwH/AbgB3QG5Af8BIgGSASQB/wEnAZYBKQH/ASYBmAEpAf8BHAGQAR4B/wGJAcgBigH/
|
||||
AZoB0gGbAf8BHAGQAR4B/wEnAZYBKQH/ASIBkgEkAf8BEwGIARUB/wGWAckBmAH/AaoB0gGrAf8BEwGI
|
||||
ARUB/wEaAYwBHAH/ARIBhAEUAf8BhwHCAYgB/wP+Gf8D/gH/AZoB0gGbAf8BIwGZASYB/wEmAZgBKQH/
|
||||
AR8BkgEhAf8BkgHJAZMB/wG4Ad0BuQH/ASIBkgEkAf8BJwGWASkB/wEmAZgBKQH/ARwBkAEeAf8BiQHI
|
||||
AYoB/wGaAdIBmwH/ARwBkAEeAf8BJwGWASkB/wEiAZIBJAH/ARMBiAEVAf8BlgHJAZgB/wGqAdIBqwH/
|
||||
ARMBiAEVAf8BGgGMARwB/wETAYgBFQH/AYcBwgGIAf8D/hX/A/4B/wPxAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
AdwB2gHcAf8B9QH0AfUB/wGKAewBkQH/AWcB7AFxAf8BggHxAYoB/wGaAfkBoQH/AdgB+gHbAf8BwQHi
|
||||
AcIB/wFtAcABbwH/AVIBsgFUAf8BMgGjATQB/wFTAakBVQH/AdsB7AHbAf8BPwGdAUEB/wEaAYwBHAH/
|
||||
ASIBkgEkAf8BGgGMARwB/wESAYQBFAH/AZYByQGYAf8D/hH/A/4B/wGrAdgBrAH/ASYBmAEpAf8BKgGa
|
||||
AS0B/wEqAZoBLQH/ASoBmgEtAf8BMQGdATMB/wHSAeoB0gH/AWkBuwFrAf8BIwGZASYB/wFIAa0BSwH/
|
||||
AWIBugFjAf8BuQHgAboB/wHBAeIBwgH/AW0BwAFvAf8BUgGyAVQB/wEyAaMBNAH/AVMBqQFVAf8B2wHs
|
||||
AdsB/wE/AZ0BQQH/ARoBjAEcAf8BIgGSASQB/wEaAYwBHAH/ARIBhAEUAf8BlgHJAZgB/wP+Ef8D/gH/
|
||||
AasB2AGsAf8BJgGYASkB/wEqAZoBLQH/ASoBmgEtAf8BKgGaAS0B/wExAZ0BMwH/AdIB6gHSAf8BaQG7
|
||||
AWsB/wEjAZkBJgH/AUoBrAFNAf8BYgG6AWMB/wG5AeABugH/AcEB4gHCAf8BbQHAAW8B/wFSAbIBVAH/
|
||||
ATIBowE0Af8BUwGpAVUB/wHbAewB2wH/AT8BnQFBAf8BGgGMARwB/wEiAZIBJAH/ARoBjAEcAf8BEgGE
|
||||
ARQB/wGWAckBmAH/A/4R/wP+Af8BqwHYAawB/wEmAZgBKQH/ASoBmgEtAf8BKgGaAS0B/wEqAZoBLQH/
|
||||
ATEBnQEzAf8B0gHqAdIB/wFpAbsBawH/ASMBmQEmAf8BSAGtAUsB/wFiAboBYwH/AbkB4AG6Af8BwQHi
|
||||
AcIB/wFtAcABbwH/AVIBsgFUAf8BMgGjATQB/wFTAakBVQH/AdsB7AHbAf8BPwGdAUEB/wEaAYwBHAH/
|
||||
ASIBkgEkAf8BGgGMARwB/wETAYgBFQH/AZYByQGYAf8D/g3/A/4B/wP5Af8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D4gH/AeAB+AHiAf8BxQH6AckB/wHwAfkB8QH/A/4B/wP+Af8D/gH/A/4B/wHwAfkB8QH/
|
||||
AbMB2wG0Af8BywHoAcsB/wGSAdABkwH/AR8BkgEhAf8BHwGSASEB/wEfAZIBIQH/ASEBjAEjAf8BGgGM
|
||||
ARwB/wEaAYwBHAH/AckB4gHJAf8D/gn/A/4B/wHbAewB2wH/ATIBowE0Af8BJgGYASkB/wEuAZwBMQH/
|
||||
AS4BnAExAf8BLgGcATEB/wEfAZIBIQH/AWEBsQFiAf8B0gHqAdIB/wGrAdgBrAH/AegB9QHoAf8D/gH/
|
||||
A/4B/wP+Af8D/gH/AfAB+QHxAf8BswHbAbQB/wHLAegBywH/AZIB0AGTAf8BHwGSASEB/wEfAZIBIQH/
|
||||
AR8BkgEhAf8BHwGSASEB/wEaAYwBHAH/ARoBjAEcAf8ByQHiAckB/wP+Cf8D/gH/AdwB8AHdAf8BMgGj
|
||||
ATQB/wEmAZgBKQH/AS4BnAExAf8BLgGcATEB/wEuAZwBMQH/AR8BkgEhAf8BYQGxAWIB/wHSAeoB0gH/
|
||||
AasB2AGsAf8B6AH1AegB/wP+Af8D/gH/A/4B/wP+Af8B8AH5AfEB/wGzAdsBtAH/AcsB6AHLAf8BkgHQ
|
||||
AZMB/wEfAZIBIQH/AR8BkgEhAf8BIgGSASQB/wEiAZIBJAH/ARoBjAEcAf8BGgGMARwB/wHJAeIByQH/
|
||||
A/4J/wP+Af8B3AHwAd0B/wEyAaMBNAH/ASYBmAEpAf8BLgGcATEB/wEuAZwBMQH/AS4BnAExAf8BHwGS
|
||||
ASEB/wFhAbEBYgH/AdIB6gHSAf8BqwHYAawB/wHqAfgB6wH/A/4B/wP+Af8D/gH/A/4B/wHqAfgB6wH/
|
||||
AbMB2wG0Af8BywHoAcsB/wGSAdABkwH/AR8BkgEhAf8BHwGSASEB/wEiAZIBJAH/ASEBjAEjAf8BGgGM
|
||||
ARwB/wEaAYwBHAH/AckB4gHJAf8D/gn/A/4B/wP5Af8D6QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D7AH/
|
||||
A/4B/wP+Gf8D/gH/A/4B/wGrAdgBrAH/AUUBsAFHAf8BKgGaAS0B/wEfAZIBIQH/ARcBjAEZAf8BGgGM
|
||||
ARwB/wFqAbQBawH/AdsB7AHbAf8D/gn/A/4B/wHgAfEB4QH/AYkByAGKAf8BMgGjATQB/wEjAZkBJgH/
|
||||
AS4BnAExAf8BKgGaAS0B/wEnAZYBKQH/AZIByQGTAf8D/gH/A/4Z/wP+Af8D/gH/AasB2AGsAf8BRQGw
|
||||
AUcB/wEqAZoBLQH/AR8BkgEhAf8BFwGMARkB/wEaAYwBHAH/AWoBtAFrAf8B2wHsAdsB/wP+Cf8D/gH/
|
||||
AeAB8QHhAf8BkgHJAZMB/wEyAaMBNAH/ASMBmQEmAf8BLgGcATEB/wEqAZoBLQH/AScBlgEpAf8BkgHJ
|
||||
AZMB/wP+Af8D/hn/A/4B/wP+Af8BqwHYAawB/wFFAbABRwH/ASoBmgEtAf8BHwGKASEB/wEXAYwBGQH/
|
||||
ARoBjAEcAf8BagG0AWsB/wHcAfAB3QH/A/4J/wP+Af8B4AHxAeEB/wGSAckBkwH/ATIBowE0Af8BIwGZ
|
||||
ASYB/wEuAZwBMQH/ASoBmgEtAf8BJwGWASkB/wGSAckBkwH/A/4B/wP+Gf8D/gH/A/4B/wGrAdgBrAH/
|
||||
AUUBsAFHAf8BKgGaAS0B/wEfAYoBIQH/ARcBjAEZAf8BGgGMARwB/wFqAbQBawH/AdwB8AHdAf8D/gX/
|
||||
A/4B/wPxAf8D4gH/AfUB9AH1Af8B9QH0AfUB/wPiAf8D2QH/A9kB/wPxAf8D/in/A/4B/wHBAeIBwgH/
|
||||
AUUBsAFHAf8BIgGSASQB/wFTAakBVQH/AcEB4gHCAf8ByQHiAckB/wFTAakBVQH/AaoB0gGrAf8D/gH/
|
||||
A/4B/wHRAfoB1AH/AYkB8wGQAf8B1AH8AdgB/wHSAeoB0gH/AXIBvAF0Af8BIgGSASQB/wEcAZABHgH/
|
||||
AaoB0gGrAf8D/in/A/4B/wHBAeIBwgH/AUUBsAFHAf8BIgGSASQB/wFTAakBVQH/AcEB4gHCAf8ByQHi
|
||||
AckB/wFTAakBVQH/AaoB0gGrAf8D/gH/A/4B/wG5AeABugH/AVYBsQFZAf8BwQHiAcIB/wHSAeoB0gH/
|
||||
AXIBvAF0Af8BIwGZASYB/wEcAZABHgH/AaoB0gGrAf8D/in/A/4B/wHBAeIBwgH/AUUBsAFHAf8BIgGS
|
||||
ASQB/wFTAakBVQH/AcEB4gHCAf8ByQHiAckB/wFTAakBVQH/AaoB0gGrAf8D/gH/A/4B/wG5AeABugH/
|
||||
AVIBsgFUAf8BwQHiAcIB/wHSAeoB0gH/AXIBvAF0Af8BIwGZASYB/wEcAZABHgH/AaoB0gGrAf8D/in/
|
||||
A/4B/wHBAeIBwgH/AUUBsAFHAf8BIgGSASQB/wFTAakBVQH/AcEB4gHCAf8ByQHiAckB/wFTAakBVQH/
|
||||
AaoB0gGrAf8D/gH/A/4B/wPiAf8D1gH/A9kB/wPiAf8B9QH0AfUB/wPxAf8D7AH/A/4x/wP+Af8BswHb
|
||||
AbQB/wGzAdsBtAH/AdsB7AHbAf8BeQG8AXsB/wEiAZIBJAH/AQoBgwEMAf8BUwGpAVUB/wP+Af8D/gH/
|
||||
AZ4B8wGkAf8BagHoAXQB/wFqAegBdAH/AZ4B8wGkAf8B4AH4AeIB/wGzAdsBtAH/AZkBywGZAf8D/jH/
|
||||
A/4B/wGzAdsBtAH/AbMB2wG0Af8B2wHsAdsB/wF5AbwBewH/ASIBkgEkAf8BCgGDAQwB/wFTAakBVQH/
|
||||
A/4B/wP+Af8BcgG8AXQB/wEjAZkBJgH/ASoBmgEtAf8BcAG5AXIB/wHSAeoB0gH/AbMB2wG0Af8BmQHL
|
||||
AZkB/wP+Mf8D/gH/AbMB2wG0Af8BswHbAbQB/wHbAewB2wH/AXkBvAF7Af8BIgGSASQB/wEKAYMBDAH/
|
||||
AVMBqQFVAf8D/gH/A/4B/wFyAbwBdAH/ASMBmQEmAf8BKgGaAS0B/wFwAbkBcgH/AdIB6gHSAf8BswHb
|
||||
AbQB/wGZAcsBmQH/A/4x/wP+Af8BswHbAbQB/wGzAdsBtAH/AdsB7AHbAf8BeQG8AXsB/wEiAZIBJAH/
|
||||
AQoBgwEMAf8BUwGpAVUB/wP+Af8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D7AH/A/45/wP+Af8BwQHi
|
||||
AcIB/wFCAaIBRAH/ARMBiAEVAf8BHwGKASEB/wEaAYwBHAH/ASIBkgEkAf8B0gHqAdIB/wHqAfgB6wH/
|
||||
AXoB8gGBAf8BdQHxAX4B/wFxAesBegH/AWoB6AF0Af8BWgHgAWMB/wGsAeoBsAH/A/45/wP+Af8BwQHi
|
||||
AcIB/wFCAaIBRAH/ARMBiAEVAf8BHwGKASEB/wEaAYwBHAH/ASIBkgEkAf8B0gHqAdIB/wHgAfEB4QH/
|
||||
AT8BqQFBAf8BMgGjATQB/wEyAaMBNAH/ASoBmgEtAf8BJgGYASkB/wGZAcsBmQH/A/45/wP+Af8BwQHi
|
||||
AcIB/wE/AakBQQH/ARMBiAEVAf8BHwGKASEB/wEaAYwBHAH/ASIBkgEkAf8B0gHqAdIB/wHgAfEB4QH/
|
||||
AT8BqQFBAf8BMgGjATQB/wEyAaMBNAH/ASoBmgEtAf8BJgGYASkB/wGZAcsBmQH/A/45/wP+Af8BwQHi
|
||||
AcIB/wE/AakBQQH/ARMBiAEVAf8BHwGKASEB/wEaAYwBHAH/ASIBkgEkAf8B0gHqAdIB/wPxAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPsAf8D/jn/A/4B/wGzAdsBtAH/ATIBowE0Af8BIgGSASQB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BEwGIARUB/wGSAckBkwH/AcgB9AHMAf8BdQHxAX4B/wF6AfIBgQH/AXoB8gGBAf8BcQHr
|
||||
AXoB/wFAAc8BSgH/AaQB5gGoAf8D/jn/A/4B/wGzAdsBtAH/ATIBowE0Af8BIgGSASQB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BEwGIARUB/wGSAckBkwH/AasB2AGsAf8BLgGiATIB/wE2AaQBOQH/ATYBpAE5Af8BMgGj
|
||||
ATQB/wESAYQBFAH/AZIByQGTAf8D/jn/A/4B/wGzAdsBtAH/ATIBowE0Af8BIgGSASQB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BEwGIARUB/wGSAckBkwH/AasB2AGsAf8BLgGiATIB/wE2AaQBOQH/ATYBpAE5Af8BMgGj
|
||||
ATQB/wETAYgBFQH/AZIByQGTAf8D/jn/A/4B/wGzAdsBtAH/ATIBowE0Af8BIgGSASQB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BEwGIARUB/wGSAckBkwH/A+kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A/lB/wHoAfUB6AH/
|
||||
AUsBsAFNAf8BJgGYASkB/wEfAZIBIQH/AR8BkgEhAf8BEwGIARUB/wFqAbQBawH/AaoB/AGxAf8BdQHx
|
||||
AX4B/wF6AfIBgQH/AXoB8gGBAf8BaAHlAXEB/wFCAcsBSgH/AeAB8QHhQf8B6AH1AegB/wFLAbABTQH/
|
||||
ASYBmAEpAf8BHwGSASEB/wEfAZIBIQH/ARMBiAEVAf8BagG0AWsB/wGEAcgBhgH/ASkBoAEsAf8BNgGk
|
||||
ATkB/wE2AaQBOQH/ASoBmgEtAf8BIgGSASQB/wHbAewB20H/AegB9QHoAf8BSwGwAU0B/wEmAZgBKQH/
|
||||
ASIBkgEkAf8BIgGSASQB/wETAYgBFQH/AWoBtAFrAf8BhAHIAYYB/wEpAaABLAH/ATYBpAE5Af8BNgGk
|
||||
ATkB/wEqAZoBLQH/ASEBjAEjAf8B2wHsAdtB/wHoAfUB6AH/AUsBsAFNAf8BJgGYASkB/wEiAZIBJAH/
|
||||
ASIBkgEkAf8BEwGIARUB/wFqAbQBawH/A+IB/wPZAf8D2QH/A9kB/wPZAf8D4gH/A/5B/wP+Af8BbQHA
|
||||
AW8B/wEmAZgBKQH/AR8BigEhAf8BHwGSASEB/wEXAYwBGQH/AUkBpQFMAf8BmgH5AaEB/wF4AfIBgQH/
|
||||
AXoB8gGBAf8BegHyAYEB/wFaAeABYwH/AVkBzwFhAf8B+QH8AflB/wP+Af8BbQHAAW8B/wEmAZgBKQH/
|
||||
AR8BigEhAf8BHwGSASEB/wEXAYwBGQH/AUkBpQFMAf8BaQG7AWsB/wEuAaIBMgH/ATYBpAE5Af8BNgGk
|
||||
ATkB/wEiAZIBJAH/AT8BnQFBAf8B+QH8AflB/wP+Af8BbQHAAW8B/wEmAZgBKQH/AR8BigEhAf8BIgGS
|
||||
ASQB/wEXAYwBGQH/AUkBpQFMAf8BaQG7AWsB/wEuAaIBMgH/ATYBpAE5Af8BNgGkATkB/wEiAZIBJAH/
|
||||
AT4BmwFAAf8B+QH8AflB/wP+Af8BbQHAAW8B/wEjAZkBJgH/AR8BigEhAf8BHwGSASEB/wEXAYwBGQH/
|
||||
AUkBpQFMAf8B9QH0AfUB/wPxAf8D8QH/A/EB/wPxAf8B9QH0AfUB/wP+Qf8D/gH/AdIB6gHSAf8BuAHd
|
||||
AbkB/wGzAdsBtAH/AbMB2wG0Af8BswHbAbQB/wHBAeIBwgH/Ad0B+wHgAf8B0QH6AdQB/wHRAfoB1AH/
|
||||
AdQB/AHYAf8ByAH0AcwB/wHIAfQBzAH/A/5B/wP+Af8B0gHqAdIB/wG5AeABugH/AbMB2wG0Af8BswHb
|
||||
AbQB/wGzAdsBtAH/AcEB4gHCAf8ByQHiAckB/wG5AeABugH/AbkB4AG6Af8BuQHgAboB/wGzAdsBtAH/
|
||||
AcEB4gHCAf8D/kH/A/4B/wHSAeoB0gH/AbkB4AG6Af8BswHbAbQB/wGzAdsBtAH/AbMB2wG0Af8BvwHg
|
||||
AcAB/wHJAeIByQH/AbkB4AG6Af8BuQHgAboB/wG5AeABugH/AbMB2wG0Af8BwQHiAcIB/wP+Qf8D/gH/
|
||||
AdIB6gHSAf8BuAHdAbkB/wGzAdsBtAH/AbMB2wG0Af8BswHbAbQB/wHBAeIBwgH/A+kB/wPiAf8D4gH/
|
||||
A+IB/wPiAf8D7AH/A/5B/wP+Af8BpAHYAaUB/wFwAbkBcgH/AWoBtAFrAf8BagG0AWsB/wFqAbQBawH/
|
||||
AX8BvAGBAf8B7QHoAe0B/wHoAeQB6AH/AegB5AHoAf8B6AHkAegB/wHoAeQB6AH/AfEB7AHxAf8D/kH/
|
||||
A/4B/wGkAdgBpQH/AXABuQFyAf8BagG0AWsB/wFqAbQBawH/AWoBtAFrAf8BfwG8AYEB/wGSAdABkwH/
|
||||
AXwBwgF9Af8BfAHCAX0B/wF8AcIBfQH/AWkBuwFrAf8BiQHCAYoB/wP+Qf8D/gH/AaQB2AGlAf8BcAG5
|
||||
AXIB/wFqAbQBawH/AWoBtAFrAf8BagG0AWsB/wF/AcEBgQH/AZIB0AGTAf8BfAHCAX0B/wF8AcIBfQH/
|
||||
AXwBwgF9Af8BaQG7AWsB/wGJAcIBigH/A/5B/wP+Af8BpAHYAaUB/wFwAbkBcgH/AWoBtAFrAf8BagG0
|
||||
AWsB/wFqAbQBawH/AX8BvAGBAf8D4gH/A9YB/wPZAf8D2QH/A9YB/wPcAf8D/kH/A/4B/wFiAboBYwH/
|
||||
AR8BkgEhAf8BGgGMARwB/wEcAZABHgH/ARMBiAEVAf8BSQGlAUwB/wPiAf8D1gH/A9kB/wPZAf8D1gH/
|
||||
A9wB/wP+Qf8B+QH8AfkB/wFiAboBYwH/AR8BkgEhAf8BGgGMARwB/wEcAZABHgH/ARMBiAEVAf8BSQGl
|
||||
AUwB/wFpAbsBawH/ASkBoAEsAf8BMgGjATQB/wEyAaMBNAH/ARwBkAEeAf8BNAGVATYB/wH5AfwB+UH/
|
||||
AfkB/AH5Af8BYgG6AWMB/wEfAZIBIQH/ARoBjAEcAf8BHAGQAR4B/wETAYgBFQH/AUkBpQFMAf8BaQG7
|
||||
AWsB/wEpAaABLAH/ATIBowE0Af8BMgGjATQB/wEcAZABHgH/ATQBlQE2Af8B+QH8AflB/wH7Af4B/AH/
|
||||
AWIBugFjAf8BHwGSASEB/wEaAYwBHAH/ARwBkAEeAf8BEwGIARUB/wFJAaUBTAH/A+kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A/lB/wHgAfEB4QH/AUMBqwFFAf8BKgGaAS0B/wEiAZIBJAH/ASIBkgEkAf8BGgGM
|
||||
ARwB/wFwAbkBcgH/A+kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A/lB/wHgAfEB4QH/AUMBqwFFAf8BKgGa
|
||||
AS0B/wEiAZIBJAH/ASIBkgEkAf8BFwGMARkB/wFwAbkBcgH/AYkByAGKAf8BMgGjATQB/wE7AakBPQH/
|
||||
ATsBqQE9Af8BMgGjATQB/wEfAYoBIQH/AdcB6gHYQf8B5wH1AegB/wFDAasBRQH/ASoBmgEtAf8BIgGS
|
||||
ASQB/wEiAZIBJAH/ARcBjAEZAf8BcAG5AXIB/wGJAcgBigH/ATIBowE0Af8BOwGpAT0B/wE7AakBPQH/
|
||||
ATIBowE0Af8BHwGKASEB/wHXAeoB2EH/AeAB8QHhAf8BQwGrAUUB/wEqAZoBLQH/ASIBkgEkAf8BIgGS
|
||||
ASQB/wEXAYwBGQH/AXABuQFyAf8D8QH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D7AH/A/45/wP+Af8BqwHY
|
||||
AawB/wEjAZkBJgH/AScBlgEpAf8BJwGWASkB/wEnAZYBKQH/ARoBjAEcAf8BmQHLAZkB/wPxAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9YB/wPsAf8D/jn/A/4B/wGrAdgBrAH/ASMBmQEmAf8BJwGWASkB/wEnAZYBKQH/
|
||||
AScBlgEpAf8BGgGMARwB/wGZAcsBmQH/AbMB2wG0Af8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BOwGp
|
||||
AT0B/wEKAYMBDAH/AYkBwgGKAf8D/jn/A/4B/wGrAdgBrAH/ASMBmQEmAf8BJwGWASkB/wEnAZYBKQH/
|
||||
AScBlgEpAf8BGgGMARwB/wGZAcsBmQH/AbMB2wG0Af8BMgGjATQB/wE7AakBPQH/ATsBqQE9Af8BOwGp
|
||||
AT0B/wEKAYMBDAH/AYkBwgGKAf8D/jn/A/4B/wGrAdgBrAH/ASMBmQEmAf8BJwGWASkB/wEnAZYBKQH/
|
||||
AScBlgEpAf8BGgGMARwB/wGZAcsBmQH/A/4B/wPcAf8D2QH/A9kB/wPZAf8D4gH/AfUB9AH1Af8D/jn/
|
||||
AfkB/AH5Af8B2wHsAdsB/wF/AcEBgQH/AScBlgEpAf8BHwGSASEB/wEiAZIBJAH/ASoBmgEtAf8B2wHs
|
||||
AdsB/wP5Af8D3AH/A9kB/wPZAf8D2QH/A+IB/wH1AfQB9QH/A/45/wH5AfwB+QH/AdsB7AHbAf8BfwHB
|
||||
AYEB/wEnAZYBKQH/AR8BkgEhAf8BIgGSASQB/wEqAZoBLQH/AdsB7AHbAf8B5wH1AegB/wFKAawBTQH/
|
||||
ATsBqQE9Af8BMgGjATQB/wEyAaMBNAH/AWEBsQFiAf8ByQHiAckB/wP+Of8B+QH8AfkB/wHbAewB2wH/
|
||||
AX8BwQGBAf8BJwGWASkB/wEfAZIBIQH/ASIBkgEkAf8BKgGaAS0B/wHbAewB2wH/AeAB8QHhAf8BSwGw
|
||||
AU0B/wE7AakBPQH/ATIBowE0Af8BMgGjATQB/wFnAbYBaQH/AckB4gHJAf8B+QH8Afk5/wH5AfwB+QH/
|
||||
AdsB7AHbAf8BfwHBAYEB/wEnAZYBKQH/AR8BkgEhAf8BIgGSASQB/wEqAZoBLQH/AdsB7AHbAf8D/gH/
|
||||
A+IB/wPWAf8D4gH/A/EB/wP5Af8D4gH/A+kB/wP+Mf8D/gH/AYkByAGKAf8BWwGxAV0B/wHSAeoB0gH/
|
||||
AckB4gHJAf8BWwGxAV0B/wETAYgBFQH/AWEBsQFiAf8D/gH/A/4B/wPiAf8D1gH/A+IB/wPxAf8D+QH/
|
||||
A+IB/wPpAf8D/jH/A/4B/wGJAcgBigH/AVsBsQFdAf8B0gHqAdIB/wHJAeIByQH/AVsBsQFdAf8BEwGI
|
||||
ARUB/wFhAbEBYgH/A/4B/wP+Af8BfAHCAX0B/wEpAaABLAH/AVsBsQFdAf8BuQHgAboB/wHqAfgB6wH/
|
||||
AYMB4QGJAf8BhQHaAYoB/wP+Mf8D/gH/AYkByAGKAf8BWwGxAV0B/wHSAeoB0gH/AckB4gHJAf8BWwGx
|
||||
AV0B/wETAYgBFQH/AWEBsQFiAf8D/gH/A/4B/wF8AcIBfQH/ASkBoAEsAf8BWwGxAV0B/wG5AeABugH/
|
||||
AeAB8QHhAf8BYQGxAWIB/wF0AbUBdQH/A/4x/wP+Af8BiQHIAYoB/wFbAbEBXQH/AdIB6gHSAf8ByQHi
|
||||
AckB/wFbAbEBXQH/ARMBiAEVAf8BYQGxAWIB/wP+Af8D/gH/AfUB9AH1Af8D7AH/A/kB/wPsAf8D3AH/
|
||||
A9kB/wPZAf8D7AH/A/4p/wP+Af8BoAHRAaEB/wEjAZkBJgH/ASIBkgEkAf8BKgGaAS0B/wF8AcIBfQH/
|
||||
AdIB6gHSAf8BoAHRAaEB/wHBAeIBwgH/A/4B/wP+Af8B9QH0AfUB/wPsAf8D+QH/A+wB/wPcAf8D2QH/
|
||||
A9kB/wPsAf8D/in/A/4B/wGgAdEBoQH/ASIBkgEkAf8BIgGSASQB/wEqAZoBLQH/AXwBwgF9Af8B0gHq
|
||||
AdIB/wGgAdEBoQH/AcEB4gHCAf8D/gH/A/4B/wHLAegBywH/AZoB0gGbAf8B4AH4AeIB/wHFAfoByQH/
|
||||
AZIB+wGZAf8BagHoAXQB/wE1AcUBPgH/AZsB4gGgAf8D/in/A/4B/wGgAdEBoQH/ASMBmQEmAf8BIgGS
|
||||
ASQB/wEqAZoBLQH/AXwBwgF9Af8B0gHqAdIB/wGgAdEBoQH/AcEB4gHCAf8D/gH/A/4B/wHOAesB0AH/
|
||||
AZoB0gGbAf8B3AHwAd0B/wGaAdIBmwH/AUUBsAFHAf8BJgGYASkB/wESAYQBFAH/AZABxQGRAf8D/in/
|
||||
A/4B/wGgAdEBoQH/ASMBmQEmAf8BIgGSASQB/wEqAZoBLQH/AXwBwgF9Af8B0gHqAdIB/wGgAdEBoQH/
|
||||
AcEB4gHCAf8D/gX/A/4B/wH1AfQB9QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+kB/wP+Af8D/hn/
|
||||
A/4B/wP+Af8BmQHLAZkB/wEcAZABHgH/ASoBmgEtAf8BLgGcATEB/wEqAZoBLQH/AR8BkgEhAf8BLgGc
|
||||
ATEB/wG4Ad0BuQH/A/4J/wP+Af8B9QH0AfUB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPpAf8D/gH/
|
||||
A/4Z/wP+Af8D/gH/AZkBywGZAf8BHAGQAR4B/wEqAZoBLQH/AS4BnAExAf8BKgGaAS0B/wEfAZIBIQH/
|
||||
AS4BnAExAf8BuAHdAbkB/wP+Cf8D/gH/AeoB+AHrAf8BkgH7AZkB/wGDAfkBjAH/AYMB+QGMAf8BiQH6
|
||||
AZEB/wFqAegBdAH/ATUBxQE+Af8BjwHdAZQB/wP+Af8D/hn/A/4B/wP+Af8BmQHLAZkB/wEcAZABHgH/
|
||||
ASoBmgEtAf8BLgGcATEB/wEqAZoBLQH/AR8BkgEhAf8BLgGcATEB/wG4Ad0BuQH/A/4J/wP+Af8B0gHq
|
||||
AdIB/wFSAbIBVAH/ATIBowE0Af8BOwGpAT0B/wE/AakBQQH/AS4BnAExAf8BEgGEARQB/wF/AbwBgQH/
|
||||
A/4B/wP+Gf8D/gH/A/4B/wGZAcsBmQH/ARwBkAEeAf8BKgGaAS0B/wEuAZwBMQH/ASoBmgEtAf8BHwGS
|
||||
ASEB/wEuAZwBMQH/AbgB3QG5Af8D/gn/A/4B/wP5Af8D3AH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D6QH/
|
||||
A/EB/wPsAf8D+QH/A/4B/wP+Af8D/gH/AfkB/AH5Af8B4AHvAeAB/wGJAcIBigH/AZYByQGYAf8BqgHS
|
||||
AasB/wEjAZkBJgH/AS4BnAExAf8BLgGcATEB/wEqAZoBLQH/ASYBmAEpAf8BMQGdATMB/wHSAeoB0gH/
|
||||
A/4J/wP+Af8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D1gH/A+kB/wPxAf8D7AH/A/kB/wP+Af8D/gH/
|
||||
A/4B/wH5AfwB+QH/AeAB7wHgAf8BiQHCAYoB/wGWAckBmAH/AaoB0gGrAf8BIwGZASYB/wEuAZwBMQH/
|
||||
AS4BnAExAf8BKgGaAS0B/wEmAZgBKQH/AS4BnAExAf8B0gHqAdIB/wP+Cf8D/gH/AeoB+AHrAf8BkgH7
|
||||
AZkB/wGDAfkBjAH/AYkB+gGRAf8BiQH6AZEB/wGJAfoBkQH/AWoB6AF0Af8BmAHlAZwB/wH1AfQB9QH/
|
||||
A+wB/wP5Af8D/gH/A/4B/wP+Af8B+QH8AfkB/wHgAfEB4QH/AYkBwgGKAf8BlgHJAZgB/wGqAdIBqwH/
|
||||
ASMBmQEmAf8BLgGcATEB/wEuAZwBMQH/ASoBmgEtAf8BJgGYASkB/wEuAZwBMQH/AdIB6gHSAf8D/gn/
|
||||
A/4B/wHgAfEB4QH/AUsBsAFNAf8BOAGoAToB/wE/AakBQQH/ATsBqQE9Af8BPwGpAUEB/wEjAZkBJgH/
|
||||
AYkBwgGKAf8BqgHSAasB/wGCAb0BgwH/AdsB7AHbAf8B+QH8AfkB/wP+Af8D/gH/A/4B/wHgAfEB4QH/
|
||||
AZ4B8wGkAf8BqQHpAa0B/wGqAdIBqwH/ASIBkgEkAf8BLgGcATEB/wEuAZwBMQH/ASoBmgEtAf8BJgGY
|
||||
ASkB/wEuAZwBMQH/AdIB6gHSAf8D/g3/A/4B/wPxAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wP5Af8D3AH/
|
||||
A9YB/wPZAf8D3AH/AfgB8gH4Af8BqgHSAasB/wE0AZUBNgH/ASEBjAEjAf8BEwGIARUB/wEqAZoBLQH/
|
||||
AdIB6gHSAf8BcgG8AXQB/wEmAZgBKQH/AS4BnAExAf8BKgGaAS0B/wEmAZgBKQH/AasB2AGsAf8D/hH/
|
||||
A/4B/wPxAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wP5Af8D3AH/A9YB/wPZAf8D3AH/AfgB8gH4Af8BqgHS
|
||||
AasB/wE0AZUBNgH/ASEBjAEjAf8BEwGIARUB/wEqAZoBLQH/AdIB6gHSAf8BcgG8AXQB/wEmAZgBKQH/
|
||||
AS4BnAExAf8BKgGaAS0B/wEmAZgBKQH/AasB2AGsAf8D/hH/A/4B/wHYAfoB2wH/AYkB+gGRAf8BiQH6
|
||||
AZEB/wGJAfoBkQH/AYMB+QGMAf8BmgH5AaEB/wHwAfkB8QH/AeEB3gHhAf8D1gH/AdwB2gHcAf8D3AH/
|
||||
AfgB8gH4Af8BqgHSAasB/wE0AZUBNgH/ASEBjAEjAf8BEwGIARUB/wEqAZoBLQH/AdIB6gHSAf8BcgG8
|
||||
AXQB/wEmAZgBKQH/AS4BnAExAf8BKgGaAS0B/wEmAZgBKQH/AasB2AGsAf8D/hH/A/4B/wG5AeABugH/
|
||||
ATsBqQE9Af8BOwGpAT0B/wE/AakBQQH/ATYBpAE5Af8BXwG6AWEB/wHgAfEB4QH/AUIBogFEAf8BEAGI
|
||||
AREB/wEfAYoBIQH/ATQBlQE2Af8BmQHLAZkB/wG5AewBvAH/AUwBzQFUAf8BTAHNAVQB/wFMAc0BVAH/
|
||||
AWIB4gFsAf8B4AH4AeIB/wFyAbwBdAH/ASYBmAEpAf8BLgGcATEB/wEqAZoBLQH/ASYBmAEpAf8BqwHY
|
||||
AawB/wP+Ff8D/gH/A/EB/wPZAf8D2QH/A9kB/wPxAf8D7AH/A9kB/wPZAf8D2QH/A9YB/wHxAewB8QH/
|
||||
AZIByQGTAf8BFwGRARoB/wEuAZwBMQH/ATIBowE0Af8BKgGaAS0B/wFyAbwBdAH/AdIB6gHSAf8BMgGj
|
||||
ATQB/wEmAZgBKQH/ASoBmgEtAf8BoAHRAaEB/wP+Gf8D/gH/A/EB/wPZAf8D2QH/A9kB/wPxAf8D7AH/
|
||||
A9kB/wPZAf8D2QH/A9YB/wHxAewB8QH/AZIByQGTAf8BFwGRARoB/wEuAZwBMQH/ATIBowE0Af8BKgGa
|
||||
AS0B/wFyAbwBdAH/AdIB6gHSAf8BMgGjATQB/wEmAZgBKQH/ASoBmgEtAf8BoAHRAaEB/wP+Gf8D/gH/
|
||||
AdEB+gHUAf8BiQH6AZEB/wGDAfkBjAH/AYMB+QGMAf8B0QH6AdQB/wHxAewB8QH/A9kB/wPZAf8D2QH/
|
||||
A9YB/wHxAewB8QH/AZIByQGTAf8BFwGRARoB/wEuAZwBMQH/ATIBowE0Af8BKgGaAS0B/wFyAbwBdAH/
|
||||
AdIB6gHSAf8BMgGjATQB/wEmAZgBKQH/ASoBmgEtAf8BoAHRAaEB/wP+Gf8D/gH/AbMB2wG0Af8BOwGp
|
||||
AT0B/wE4AagBOgH/ATYBpAE5Af8BuQHgAboB/wGaAdIBmwH/ATIBowE0Af8BOwGpAT0B/wEyAaMBNAH/
|
||||
ARwBkAEeAf8BhQHCAYYB/wG0AfMBuAH/AVQB4AFdAf8BagHoAXQB/wFxAesBegH/AWoB6AF0Af8BngHz
|
||||
AaQB/wHSAeoB0gH/ATIBowE0Af8BJgGYASkB/wEqAZoBLQH/AaAB0QGhAf8D/h3/A/4B/wPxAf8D3AH/
|
||||
A+IB/wH1AfQB9QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8B8QHsAfEB/wGaAdIBmwH/ASkBoAEsAf8BNgGk
|
||||
ATkB/wE2AaQBOQH/ATIBowE0Af8BKgGaAS0B/wG5AeABugH/AYkByAGKAf8BNgGkATkB/wGzAdsBtAH/
|
||||
A/4h/wP+Af8D8QH/A9wB/wPiAf8B9QH0AfUB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfEB7AHxAf8BmgHS
|
||||
AZsB/wEpAaABLAH/ATYBpAE5Af8BNgGkATkB/wEyAaMBNAH/ASoBmgEtAf8BuQHgAboB/wGJAcgBigH/
|
||||
ATYBpAE5Af8BswHbAbQB/wP+If8D/gH/AdgB+gHbAf8BkgH7AZkB/wGkAfoBqwH/AfUB9AH1Af8B3AHa
|
||||
AdwB/wPZAf8D2QH/A9kB/wPZAf8B8QHsAfEB/wGaAdIBmwH/ASkBoAEsAf8BNgGkATkB/wE2AaQBOQH/
|
||||
ATIBowE0Af8BKgGaAS0B/wG5AeABugH/AYkByAGKAf8BNgGkATkB/wGzAdsBtAH/A/4h/wP+Af8BwQHi
|
||||
AcIB/wFLAbABTQH/AW0BwAFvAf8B0gHqAdIB/wFDAasBRQH/ATsBqQE9Af8BOwGpAT0B/wE7AakBPQH/
|
||||
AS4BogEyAf8BkgHJAZMB/wHFAfoByQH/AXUB8QF+Af8BegHyAYEB/wF6AfIBgQH/AXEB6wF6Af8BagHo
|
||||
AXQB/wHRAfoB1AH/AYUBwgGGAf8BNgGkATkB/wGzAdsBtAH/A/4l/wP+Af8D+QH/A/kB/wPiAf8D1gH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wHxAewB8QH/AZoB0gGbAf8BKQGgASwB/wE2AaQBOQH/ATYBpAE5Af8BMgGj
|
||||
ATQB/wEjAZkBJgH/AVYBsQFZAf8B4AHxAeEB/wHgAfEB4QH/A/4p/wP+Af8D+QH/A/kB/wPiAf8D1gH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wHxAewB8QH/AZoB0gGbAf8BKQGgASwB/wE2AaQBOQH/ATYBpAE5Af8BMgGj
|
||||
ATQB/wEjAZkBJgH/AVYBsQFZAf8B4AHxAeEB/wHgAfEB4QH/A/4p/wP+Af8B6gH4AesB/wHqAfgB6wH/
|
||||
AegB5AHoAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wHxAewB8QH/AZoB0gGbAf8BKQGgASwB/wE2AaQBOQH/
|
||||
ATYBpAE5Af8BMgGjATQB/wEjAZkBJgH/AVYBsQFZAf8B4AHxAeEB/wHgAfEB4QH/A/4p/wP+Af8B4AHx
|
||||
AeEB/wHcAfAB3QH/AXwBwgF9Af8BKQGgASwB/wE7AakBPQH/ATsBqQE9Af8BOwGpAT0B/wEuAaIBMgH/
|
||||
AZIByQGTAf8BxQH6AckB/wF1AfEBfgH/AXoB8gGBAf8BegHyAYEB/wFxAesBegH/AWoB6AF0Af8BggHx
|
||||
AYoB/wHgAfEB4QH/AdwB8AHdAf8D/i3/A/4B/wP+Af8B9QH0AfUB/wPpAf8D3AH/A9kB/wPWAf8D1gH/
|
||||
AfEB7AHxAf8BmgHSAZsB/wEjAZkBJgH/ASkBoAEsAf8BMgGjATQB/wFDAasBRQH/AXwBwgF9Af8BxwHl
|
||||
AcgB/wP+Af8D/jH/A/4B/wP+Af8B9QH0AfUB/wPpAf8D3AH/A9kB/wPWAf8D1gH/AfEB7AHxAf8BmgHS
|
||||
AZsB/wEjAZkBJgH/ASkBoAEsAf8BMgGjATQB/wFDAasBRQH/AXwBwgF9Af8BxwHlAcgB/wP+Af8D/jH/
|
||||
A/4B/wP+Af8B9QH0AfUB/wHoAeQB6AH/A9wB/wPZAf8D1gH/A9YB/wHxAewB8QH/AZoB0gGbAf8BIwGZ
|
||||
ASYB/wEpAaABLAH/ATIBowE0Af8BQwGrAUUB/wF8AcIBfQH/AccB5QHIAf8D/gH/A/4x/wP+Af8D/gH/
|
||||
Ac4B6wHQAf8BhAHIAYYB/wFLAbABTQH/ATgBqAE6Af8BLgGiATIB/wEnAaABKQH/AYkByAGKAf8BxQH6
|
||||
AckB/wF1AfEBfgH/AXUB8QF+Af8BdQHxAX4B/wGCAfEBigH/AaUB8gGqAf8B2AH6AdsB/wP+Af8D/jn/
|
||||
A/4B/wP+Af8D/gH/A/EB/wPpAf8D4gH/AfgB8gH4Af8BswHbAbQB/wFpAbsBawH/AY4BzQGQAf8BuQHg
|
||||
AboB/wHoAfUB6AH/A/4B/wP+Qf8D/gH/A/4B/wP+Af8D8QH/A+kB/wPiAf8B+AHyAfgB/wGzAdsBtAH/
|
||||
AWkBuwFrAf8BjgHNAZAB/wG5AeABugH/AegB9QHoAf8D/gH/A/5B/wP+Af8D/gH/A/4B/wH1AfQB9QH/
|
||||
A+wB/wPiAf8B+AHyAfgB/wGzAdsBtAH/AWkBuwFrAf8BjgHNAZAB/wG5AeABugH/AegB9QHoAf8D/gH/
|
||||
A/5B/wP+Af8D/gH/AeoB+AHrAf8BuQHgAboB/wGSAdABkwH/AW0BwAFvAf8BqgHSAasB/wHRAfoB1AH/
|
||||
AZ4B8wGkAf8BtAHzAbgB/wHRAfoB1AH/AfAB+QHxAf8D/gH/A/5J/wP+Af8D9gH/A+wB/wPjAf8D9QH/
|
||||
A/cB/wPiAf8D6wH/A/YB/wP+Sf8D/gH/A/4B/wP5Af8D8QH/A+kB/wPiAf8D7AH/A/EB/wPiAf8D4gH/
|
||||
A+wB/wP5Af8D/gH/A/5B/wP+Af8D/gH/A/kB/wPxAf8D6QH/A+IB/wPsAf8D8QH/A+IB/wPiAf8D7AH/
|
||||
A/kB/wP+Af8D/kH/A/4B/wP+Af8D+QH/A/EB/wPpAf8D4gH/A+wB/wPxAf8D4gH/A+IB/wPsAf8D+QH/
|
||||
A/4B/wP+Qf8D+wH/A+cB/wPbAf8D2gH/A9oB/wPaAf8D8AH/A/QB/wPaAf8D2gH/A9oB/wPbAf8D5gH/
|
||||
A/k5/wP+Af8D/gH/AfUB9AH1Af8D4gH/A9kB/wPZAf8D2QH/A9YB/wPpAf8D7AH/A9YB/wPZAf8D2QH/
|
||||
A9kB/wPiAf8D8QH/A/4B/wP+Mf8D/gH/A/4B/wH1AfQB9QH/A+IB/wPZAf8D2QH/A9kB/wPWAf8D6QH/
|
||||
A+wB/wPWAf8D2QH/A9kB/wPZAf8D4gH/A/EB/wP+Af8D/jH/A/4B/wP+Af8B9QH0AfUB/wPiAf8D2QH/
|
||||
A9kB/wPZAf8D1gH/A+kB/wPsAf8D1gH/A9kB/wPZAf8D2QH/A+IB/wPxAf8D/gH/A/4x/wP9Af8D+wH/
|
||||
A/MB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A/AB/wP0Af8D2gH/A9oB/wPaAf8D2gH/A9oB/wPsAf8D/QH/
|
||||
A/wt/wP+Af8B9QH0AfUB/wH1AfQB9QH/A+wB/wPWAf8D2QH/A9kB/wPZAf8D2QH/A+kB/wPsAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9YB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A/4p/wP+Af8B9QH0AfUB/wH1AfQB9QH/
|
||||
A+wB/wPWAf8D2QH/A9kB/wPZAf8D2QH/A+kB/wPsAf8D2QH/A9kB/wPZAf8D2QH/A9YB/wPiAf8B9QH0
|
||||
AfUB/wH1AfQB9QH/A/4p/wP+Af8B9QH0AfUB/wH1AfQB9QH/A+wB/wPWAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A+kB/wPsAf8D2QH/A9kB/wPZAf8D2QH/A9YB/wHoAeQB6AH/AdAB8wHTAf8BzQHzAdAB/wP+Kf8D9wH/
|
||||
A9sB/wPeAf8D/gH/A+IB/wPaAf8D2gH/A9oB/wPaAf8D8AH/A/QB/wPaAf8D2gH/A9oB/wPaAf8D3QH/
|
||||
A/0B/wPlAf8D2gH/A/Ul/wP+Af8D8QH/A9kB/wPcAf8D+QH/A+IB/wPZAf8D2QH/A9kB/wPZAf8D6QH/
|
||||
A+wB/wPZAf8D2QH/A9kB/wPZAf8D3AH/AfUB9AH1Af8D4gH/A9kB/wPsAf8D/iH/A/4B/wPxAf8D2QH/
|
||||
A9wB/wP5Af8D4gH/A9kB/wPZAf8D2QH/A9kB/wPpAf8D7AH/A9kB/wPZAf8D2QH/A9kB/wPcAf8B9QH0
|
||||
AfUB/wPiAf8D2QH/A+wB/wP+If8D/gH/A/EB/wPZAf8D3AH/A/kB/wPiAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A+kB/wPsAf8D2QH/A9kB/wPZAf8D2QH/A9wB/wHzAfcB8wH/AWwB2wF0Af8BQgHLAUoB/wGsAeoBsAH/
|
||||
A/4h/wPzAf8D2gH/A9oB/wPaAf8D8gH/A/sB/wPaAf8D2gH/A9oB/wPaAf8D8AH/A/QB/wPaAf8D2gH/
|
||||
A9oB/wPaAf8D9QH/A/kB/wPaAf8D2gH/A9oB/wPwHf8D/gH/A+wB/wPZAf8D2QH/A9kB/wPsAf8D8QH/
|
||||
A9kB/wPZAf8D2QH/A9YB/wPpAf8D7AH/A9YB/wPZAf8D2QH/A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/
|
||||
A+kB/wP+Gf8D/gH/A+wB/wPZAf8D2QH/A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9YB/wPpAf8D7AH/
|
||||
A9YB/wPZAf8D2QH/A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A+kB/wP+Gf8D/gH/A+wB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9YB/wPpAf8D7AH/A9YB/wPZAf8D2QH/A9kB/wHxAewB8QH/
|
||||
AbQB7AG4Af8BQgHLAUoB/wFCAcsBSgH/ATwBywFFAf8BmwHiAaAB/wP+Gf8D9wH/A9oB/wPaAf8D2gH/
|
||||
A9oB/wPcAf8D/QH/A+kB/wPaAf8D3QH/A+UB/wP6Af8D+wH/A+UB/wPeAf8D2gH/A+EB/wP+Af8D4AH/
|
||||
A9oB/wPaAf8D2gH/A9oB/wP0Ff8D/gH/A/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D4gH/
|
||||
A9YB/wPcAf8D4gH/A/EB/wH1AfQB9QH/A+IB/wPcAf8D2QH/A9wB/wP5Af8D3AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D/hH/A/4B/wPxAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wH1AfQB9QH/A+IB/wPWAf8D3AH/
|
||||
A+IB/wPxAf8B9QH0AfUB/wPiAf8D3AH/A9kB/wPcAf8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D7AH/
|
||||
A/4R/wP+Af8D8QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8B9QH0AfUB/wPiAf8D1gH/A9wB/wPiAf8D8QH/
|
||||
AfUB9AH1Af8D4gH/A9wB/wPZAf8B4QHeAeEB/wHqAfgB6wH/AVoB3QFjAf8BQgHQAUsB/wFJAdIBUgH/
|
||||
AUIB0AFLAf8BPAHLAUUB/wGpAekBrQH/A/4R/wP+Af8D3AH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D6AH/
|
||||
A/0B/wP5Gf8D+QH/A/wB/wPwAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPbAf8D/Q3/A/4B/wP5Af8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D4gH/A/kB/wPxAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D8QH/
|
||||
AfUB9AH1Af8D6QH/A9YB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D/gn/A/4B/wP5Af8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D4gH/A/kB/wPxAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D8QH/
|
||||
AfUB9AH1Af8D6QH/A9YB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfUB9AH1Af8D/gn/A/4B/wP5Af8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D4gH/A/kB/wPxAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D8QH/
|
||||
AfgB8gH4Af8BvAH7AcEB/wFaAeABYwH/AUkB0gFSAf8BSQHSAVIB/wFJAdIBUgH/AUIBywFKAf8BQgHL
|
||||
AUoB/wHWAfQB2AH/A/4N/wP+Af8D8AH/A9sB/wPaAf8D2gH/A9oB/wPaAf8D9Cn/A/YB/wPbAf8D2gH/
|
||||
A9oB/wPaAf8D2gH/A+oB/wP+Df8D/gH/A/kB/wPpAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPsAf8D/gH/
|
||||
A/4Z/wP+Af8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wP5Af8D/gn/A/4B/wP5Af8D6QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D7AH/A/4B/wP+Gf8D/gH/A/4B/wPsAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPiAf8D+QH/A/4J/wP+Af8D+QH/A+kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wP+Af8D/hn/
|
||||
A/4B/wP+Af8B0QH6AdQB/wGaAfkBoQH/AWsB5QF0Af8BSAHSAVEB/wFCAdABSwH/AUIB0AFLAf8BiAHi
|
||||
AY8B/wHgAfgB4gH/A/4J/wP6Af8D4QH/A/oB/wP9Af8D6QH/A9oB/wPaAf8D+TH/A/sB/wPbAf8D2gH/
|
||||
A+QB/wP8Af8D/AH/A+UB/wP5Bf8D/gH/A/EB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPZAf8D2QH/
|
||||
A/EB/wP+Kf8D/gH/A/EB/wPZAf8D2QH/A+IB/wH1AfQB9QH/AfUB9AH1Af8D4gH/A/EB/wP+Af8D/gH/
|
||||
A/EB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPZAf8D2QH/A/EB/wP+Kf8D/gH/A/EB/wPZAf8D2QH/
|
||||
A+IB/wH1AfQB9QH/AfUB9AH1Af8D4gH/A/EB/wP+Af8D/gH/A/EB/wPiAf8B9QH0AfUB/wH1AfQB9QH/
|
||||
A+IB/wPZAf8D2QH/A/EB/wP+Kf8D/gH/Ad0B+wHgAf8BmgH5AaEB/wFaAeABYwH/AXQB3AF7Af8BzQHz
|
||||
AdAB/wHJAeIByQH/AVQBpwFVAf8BqgHSAasB/wP+Bf8D6AH/A9oB/wPaAf8D6AH/A/0B/wP5Af8D9zn/
|
||||
A/cB/wP2Af8D/gH/A+4B/wPbAf8D2gH/A+UF/wP+Af8D4gH/A9YB/wPZAf8D4gH/AfUB9AH1Af8D8QH/
|
||||
A+wB/wP+Mf8D/gH/A+wB/wPxAf8D+QH/A+kB/wPZAf8D1gH/A+IB/wP+Af8D/gH/A+IB/wPWAf8D2QH/
|
||||
A+IB/wH1AfQB9QH/A/EB/wPsAf8D/jH/A/4B/wPsAf8D8QH/A/kB/wPpAf8D2QH/A9YB/wPiAf8D/gH/
|
||||
A/4B/wPiAf8D1gH/A9kB/wPiAf8B9QH0AfUB/wPxAf8D7AH/A/4x/wP+Af8B0QH6AdQB/wHUAfwB2AH/
|
||||
AdsB7AHbAf8BcgG8AXQB/wEfAYoBIQH/AQoBgwEMAf8BUwGpAVUB/wP+Af8D/gH/A9wB/wPaAf8D2gH/
|
||||
A9oB/wPaAf8D9kH/A/oB/wPdAf8D2gH/A9oB/wPaAf8D2wH/A/0B/wP5Af8D3AH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D/jn/A/4B/wPxAf8D3AH/A9kB/wPZAf8D2QH/A9kB/wP5Af8D+QH/A9wB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D7AH/A/45/wP+Af8D8QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D+QH/A/kB/wPcAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A+wB/wP+Of8D/gH/AbkB4AG6Af8BQAGnAUIB/wETAYgBFQH/AR8BigEhAf8BGgGM
|
||||
ARwB/wEiAZIBJAH/AdIB6gHSAf8D+AH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D9kH/A/kB/wPaAf8D2gH/
|
||||
A9oB/wPaAf8D2gH/A/UB/wPxAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPsAf8D/jn/A/4B/wPsAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D7AH/A/45/wP+Af8D7AH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPZAf8D7AH/A/EB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+wB/wP+Of8D/gH/
|
||||
AbMB2wG0Af8BMgGjATQB/wEiAZIBJAH/ASIBkgEkAf8BIgGSASQB/wETAYgBFQH/AZIByQGTAf8D7QH/
|
||||
A9oB/wPaAf8D2gH/A9oB/wPcSf8D3QH/A9oB/wPaAf8D2gH/A9oB/wPrAf8D6QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D+UH/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wPpAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wP5Qf8D+QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D4gH/A+kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A/lB/wHoAfUB6AH/AUsBsAFNAf8BJgGYASkB/wEiAZIBJAH/ASIBkgEkAf8BEwGIARUB/wFqAbQBawH/
|
||||
A+YB/wPaAf8D2gH/A9oB/wPaAf8D4kn/A+YB/wPaAf8D2gH/A9oB/wPaAf8D4wH/A+IB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D4gH/A/5B/wP+Af8D4gH/A9kB/wPZAf8D2QH/A9kB/wPiAf8D4gH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPiAf8D/kH/A/4B/wPiAf8D2QH/A9kB/wPZAf8D2QH/A+IB/wPiAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A+IB/wP+Qf8D/gH/AW0BwAFvAf8BJgGYASkB/wEfAYoBIQH/AR8BkgEhAf8BFwGMARkB/wFJAaUBTAH/
|
||||
A/sB/wP5Af8D+QH/A/kB/wP5Af8D/Un/A/0B/wP5Af8D+QH/A/kB/wP5Af8D+wH/AfUB9AH1Af8D8QH/
|
||||
A/EB/wPxAf8D8QH/AfUB9AH1Af8D/kH/A/4B/wH1AfQB9QH/A/EB/wPxAf8D8QH/A/EB/wH1AfQB9QH/
|
||||
AfUB9AH1Af8D8QH/A/EB/wPxAf8D8QH/AfUB9AH1Af8D/kH/A/4B/wH1AfQB9QH/A/EB/wPxAf8D8QH/
|
||||
AfQB8QHzAf8B9QH0AfUB/wH1AfQB9QH/A/EB/wPxAf8D8QH/A/EB/wH1AfQB9QH/A/5B/wP+Af8B0gHq
|
||||
AdIB/wG4Ad0BuQH/AbMB2wG0Af8BswHbAbQB/wGzAdsBtAH/AcEB4gHCAf8D8AH/A+kB/wPqAf8D6gH/
|
||||
A+kB/wP0Sf8D9gH/A+kB/wPqAf8D6gH/A+kB/wPvAf8D6QH/A+IB/wPiAf8D4gH/A+IB/wPsAf8D/kH/
|
||||
A/4B/wPsAf8D4gH/A+IB/wPiAf8D4gH/A+kB/wPpAf8D4gH/A+IB/wPiAf8D4gH/A+wB/wP+Qf8D/gH/
|
||||
AcUB+gHJAf8BlAHwAZoB/wGDAeEBiQH/AYMB4QGJAf8BgQHgAYYB/wGSAeYBmAH/A+kB/wPiAf8D4gH/
|
||||
A+IB/wPiAf8D7AH/A/5B/wP+Af8BpAHYAaUB/wFwAbkBcgH/AWoBtAFrAf8BagG0AWsB/wFqAbQBawH/
|
||||
AX8BvAGBAf8D5gH/A9oB/wPaAf8D2gH/A9oB/wPhSf8D5QH/A9oB/wPaAf8D2gH/A9oB/wPjAf8D4gH/
|
||||
A9YB/wPZAf8D2QH/A9YB/wPcAf8D/kH/A/4B/wPiAf8D1gH/A9kB/wPZAf8D1gH/A+IB/wPiAf8D1gH/
|
||||
A9kB/wPZAf8D1gH/A9wB/wP+Qf8D/gH/AZoB+QGhAf8BXwHiAWkB/wFJAdIBUgH/AUsB2QFUAf8BQgHQ
|
||||
AUsB/wFsAdsBdAH/A+IB/wPWAf8D2QH/A9kB/wPWAf8D3AH/A/5B/wP+Af8BYgG6AWMB/wEfAZIBIQH/
|
||||
ARoBjAEcAf8BHAGQAR4B/wETAYgBFQH/AUkBpQFMAf8D7gH/A9oB/wPaAf8D2gH/A9oB/wPbAf8D/kX/
|
||||
A90B/wPaAf8D2gH/A9oB/wPaAf8D6wH/A+kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A/lB/wP5Af8D3AH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPiAf8D6QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D+UH/Ae8B/AHwAf8BggHx
|
||||
AYoB/wFiAeIBbAH/AVUB2wFeAf8BVQHbAV4B/wFJAdIBUgH/AYwB5gGSAf8D6QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D+UH/AeAB8QHhAf8BQwGrAUUB/wEqAZoBLQH/ASIBkgEkAf8BIgGSASQB/wEaAYwBHAH/
|
||||
AXABuQFyAf8D+AH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D9kH/A/kB/wPaAf8D2gH/A9oB/wPaAf8D2gH/
|
||||
A/YB/wPxAf8D2QH/A9kB/wPZAf8D2QH/A9YB/wPsAf8D/jn/A/4B/wPsAf8D1gH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPsAf8D8QH/A9kB/wPZAf8D2QH/A9kB/wPWAf8D7AH/A/45/wP+Af8BxQH6AckB/wFnAewBcQH/
|
||||
AVoB3QFjAf8BWgHdAWMB/wFVAdsBXgH/AUsB2QFUAf8BsAHsAbQB/wPxAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9YB/wPsAf8D/jn/A/4B/wGrAdgBrAH/ASMBmQEmAf8BJwGWASkB/wEnAZYBKQH/AScBlgEpAf8BGgGM
|
||||
ARwB/wGZAcsBmQH/A/4B/wPdAf8D2gH/A9oB/wPaAf8D5gH/A/1B/wP+Af8D7AH/A9sB/wPaAf8D2gH/
|
||||
A9wB/wP+Af8D+QH/A9wB/wPZAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wP+Of8D/gH/A/kB/wPpAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A/kB/wP5Af8D3AH/A9kB/wPZAf8D2QH/A+IB/wH1AfQB9QH/A/45/wH5AfwB+QH/
|
||||
AeAB+AHiAf8BpQHyAaoB/wFaAd0BYwH/AVUB2wFeAf8BVQHbAV4B/wFaAd0BYwH/AeAB+AHiAf8D+QH/
|
||||
A9wB/wPZAf8D2QH/A9kB/wPiAf8B9QH0AfUB/wP+Of8B+QH8AfkB/wHbAewB2wH/AX8BwQGBAf8BJwGW
|
||||
ASkB/wEfAZIBIQH/ASIBkgEkAf8BKgGaAS0B/wHbAewB2wX/A+oB/wPaAf8D4AH/A/kB/wP+Af8D6gH/
|
||||
A/A5/wPzAf8D5AH/A/0B/wP8Af8D5QH/A9oB/wPnBf8D/gH/A+IB/wPWAf8D4gH/A/EB/wP5Af8D4gH/
|
||||
A+kB/wP+Mf8D/gH/A+kB/wPiAf8B9QH0AfUB/wH1AfQB9QH/A+IB/wPWAf8D4gH/A/4B/wP+Af8D4gH/
|
||||
A9YB/wPiAf8D8QH/A/kB/wPiAf8D6QH/A/4x/wP+Af8BiQHIAYoB/wFZAawBWwH/AckB4gHJAf8B2AH6
|
||||
AdsB/wGDAesBiwH/AUsB2QFUAf8BgwHhAYkB/wP+Af8D/gH/A+IB/wPWAf8D4gH/A/EB/wP5Af8D4gH/
|
||||
A+kB/wP+Mf8D/gH/AYkByAGKAf8BWwGxAV0B/wHSAeoB0gH/AckB4gHJAf8BWwGxAV0B/wETAYgBFQH/
|
||||
AWEBsQFiAf8D/gX/A/wB/wPyAf8D/gH/A/MB/wPcAf8D2gH/A9oB/wP3Mf8D+QH/A9oB/wPaAf8D2gH/
|
||||
A+4B/wP+Af8D9gH/A/sF/wP+Af8B9QH0AfUB/wPsAf8D+QH/A+wB/wPcAf8D2QH/A9kB/wPsAf8D/in/
|
||||
A/4B/wPxAf8D2QH/A9kB/wPZAf8D6QH/A/kB/wPxAf8B9QH0AfUB/wP+Af8D/gH/AfUB9AH1Af8D7AH/
|
||||
A/kB/wPsAf8D3AH/A9kB/wPZAf8D7AH/A/4p/wP+Af8BoAHRAaEB/wEjAZkBJgH/ASIBkgEkAf8BKgGa
|
||||
AS0B/wF5AbwBewH/AdcB6gHYAf8BvAHxAcAB/wHQAfMB0wH/A/4B/wP+Af8B9QH0AfUB/wPsAf8D+QH/
|
||||
A+wB/wPcAf8D2QH/A9kB/wPsAf8D/in/A/4B/wGgAdEBoQH/ASMBmQEmAf8BIgGSASQB/wEqAZoBLQH/
|
||||
AXwBwgF9Af8B0gHqAdIB/wGgAdEBoQH/AcEB4gHCAf8D/gn/A/wB/wPeAf8D2gH/A9oB/wPaAf8D2gH/
|
||||
A9oB/wPyKf8D9gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2wH/A/oN/wP+Af8B9QH0AfUB/wPcAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A9kB/wPpAf8D/gH/A/4Z/wP+Af8D/gH/A+wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPxAf8D/gn/A/4B/wH1AfQB9QH/A9wB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A+kB/wP+Af8D/hn/
|
||||
A/4B/wP+Af8BmQHLAZkB/wEcAZABHgH/ASoBmgEtAf8BLgGcATEB/wEqAZoBLQH/AR8BkgEhAf8BLgGc
|
||||
ATEB/wG4Ad0BuQH/A/4J/wP+Af8B9QH0AfUB/wPcAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPpAf8D/gH/
|
||||
A/4Z/wP+Af8D/gH/AZkBywGZAf8BHAGQAR4B/wEqAZoBLQH/AS4BnAExAf8BKgGaAS0B/wEfAZIBIQH/
|
||||
AS4BnAExAf8BuAHdAbkB/wP+Df8D/gH/A90B/wPaAf8D2gH/A9oB/wPaAf8D2gH/A/IB/wP6Af8D9Rn/
|
||||
A/YB/wP2Af8D+AH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D3AH/A/0N/wP+Af8D+QH/A9wB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D1gH/A+kB/wPxAf8D7AH/A/kB/wP+Af8D/gH/A/4B/wH7Af4B/AH/AeAB8QHhAf8BmwHi
|
||||
AaAB/wGhAeoBpgH/AfQB8AH0Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D+QH/A/4J/wP+Af8D+QH/
|
||||
A9wB/wPZAf8D2QH/A9kB/wPZAf8D1gH/A+kB/wPxAf8D7AH/A/kB/wP+Af8D/gH/A/4B/wH5AfwB+QH/
|
||||
AeAB7wHgAf8BiQHCAYoB/wGWAckBmAH/AaoB0gGrAf8BIwGZASYB/wEuAZwBMQH/AS4BnAExAf8BKgGa
|
||||
AS0B/wEmAZgBKQH/ATEBnQEzAf8B0gHqAdIB/wP+Cf8D/gH/A/kB/wPcAf8D2QH/A9kB/wPZAf8D2QH/
|
||||
A9YB/wPpAf8D8QH/A+wB/wP5Af8D/gH/A/4B/wP+Af8B+QH8AfkB/wHgAe8B4AH/AYkBwgGKAf8BlgHJ
|
||||
AZgB/wGqAdIBqwH/ASMBmQEmAf8BLgGcATEB/wEuAZwBMQH/ASoBmgEtAf8BJgGYASkB/wExAZ0BMwH/
|
||||
AdIB6gHSAf8D/hH/A/kB/wPaAf8D2gH/A9oB/wPaAf8D4gH/A/4B/wPgAf8D2gH/A9sB/wPhAf8D+AH/
|
||||
A/oB/wPhAf8D3AH/A9oB/wPcAf8D/QH/A+kB/wPaAf8D2gH/A9oB/wPaAf8D9xX/A/4B/wPxAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/A+IB/wP5Af8D3AH/A9YB/wPZAf8D3AH/AfgB8gH4Af8BtAHsAbgB/wFTAc0BWwH/
|
||||
AUgBzQFRAf8BQgHQAUsB/wFaAeABYwH/AeAB+AHiAf8B6AHkAegB/wPZAf8D2QH/A9kB/wPZAf8D8QH/
|
||||
A/4R/wP+Af8D8QH/A9kB/wPZAf8D2QH/A9kB/wPiAf8D+QH/A9wB/wPWAf8D2QH/A9wB/wH4AfIB+AH/
|
||||
AaoB0gGrAf8BNAGVATYB/wEhAYwBIwH/ARMBiAEVAf8BKgGaAS0B/wHSAeoB0gH/AXIBvAF0Af8BJgGY
|
||||
ASkB/wEuAZwBMQH/ASoBmgEtAf8BJgGYASkB/wGrAdgBrAH/A/4R/wP+Af8D8QH/A9kB/wPZAf8D2QH/
|
||||
A9kB/wPiAf8D+QH/A9wB/wPWAf8D2QH/A9wB/wH4AfIB+AH/AaoB0gGrAf8BNAGVATYB/wEhAYwBIwH/
|
||||
ARMBiAEVAf8BKgGaAS0B/wHSAeoB0gH/AXIBvAF0Af8BJgGYASkB/wEuAZwBMQH/ASoBmgEtAf8BJgGY
|
||||
ASkB/wGrAdgBrAH/A/4Z/wP3Af8D2gH/A9oB/wPaAf8D+gH/A/MB/wPaAf8D2gH/A9oB/wPaAf8D8AH/
|
||||
A/QB/wPaAf8D2gH/A9oB/wPaAf8D6gH/A/0B/wPbAf8D2gH/A9oB/wP0Hf8D/gH/A/EB/wPZAf8D2QH/
|
||||
A9kB/wPxAf8D7AH/A9kB/wPZAf8D2QH/A9YB/wHxAewB8QH/Aa0B8gGyAf8BVAHgAV0B/wFqAegBdAH/
|
||||
AXEB6wF6Af8BagHoAXQB/wGYAfMBnwH/AfUB9AH1Af8B3AHaAdwB/wPZAf8D2QH/A+wB/wP+Gf8D/gH/
|
||||
A/EB/wPZAf8D2QH/A9kB/wPxAf8D7AH/A9kB/wPZAf8D2QH/A9YB/wHxAewB8QH/AZIByQGTAf8BFwGR
|
||||
ARoB/wEuAZwBMQH/ATIBowE0Af8BKgGaAS0B/wFyAbwBdAH/AdIB6gHSAf8BMgGjATQB/wEmAZgBKQH/
|
||||
ASoBmgEtAf8BoAHRAaEB/wP+Gf8D/gH/A/EB/wPZAf8D2QH/A9kB/wPxAf8D7AH/A9kB/wPZAf8D2QH/
|
||||
A9YB/wHxAewB8QH/AZIByQGTAf8BFwGRARoB/wEuAZwBMQH/ATIBowE0Af8BKgGaAS0B/wFyAbwBdAH/
|
||||
AdIB6gHSAf8BMgGjATQB/wEmAZgBKQH/ASoBmgEtAf8BoAHRAaEB/wP+If8D+gH/A9wB/wPmAf8D/QH/
|
||||
A9wB/wPaAf8D2gH/A9oB/wPaAf8D8AH/A/QB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A/sB/wPvAf8D2wH/
|
||||
A/gl/wP+Af8D8QH/A9wB/wPiAf8B9QH0AfUB/wPZAf8D2QH/A9kB/wPZAf8D2QH/AfEB7AHxAf8BwQH9
|
||||
AcUB/wF1AfEBfgH/AXoB8gGBAf8BeAHyAYEB/wFxAesBegH/AWoB6AF0Af8BygH5Ac0B/wHtAegB7QH/
|
||||
A9kB/wPxAf8D/iH/A/4B/wPxAf8D3AH/A+IB/wH1AfQB9QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8B8QHs
|
||||
AfEB/wGaAdIBmwH/ASkBoAEsAf8BNgGkATkB/wE2AaQBOQH/ATIBowE0Af8BKgGaAS0B/wG5AeABugH/
|
||||
AYkByAGKAf8BNgGkATkB/wGzAdsBtAH/A/4h/wP+Af8D8QH/A9wB/wPiAf8B9QH0AfUB/wPZAf8D2QH/
|
||||
A9kB/wPZAf8D2QH/AfEB7AHxAf8BmgHSAZsB/wEpAaABLAH/ATYBpAE5Af8BNgGkATkB/wEyAaMBNAH/
|
||||
ASoBmgEtAf8BuQHgAboB/wGJAcgBigH/ATYBpAE5Af8BswHbAbQB/wP+Kf8D/gH/A/4B/wPrAf8D2gH/
|
||||
A9oB/wPaAf8D2gH/A9oB/wPwAf8D9AH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D4wH/A/4B/wP+Lf8D/gH/
|
||||
A/kB/wP5Af8D4gH/A9YB/wPZAf8D2QH/A9kB/wPZAf8B8QHsAfEB/wHBAf0BxQH/AXUB8QF+Af8BegHy
|
||||
AYEB/wF6AfIBgQH/AXEB6wF6Af8BagHoAXQB/wGJAfMBkAH/AfAB+QHxAf8D+QH/A/4p/wP+Af8D+QH/
|
||||
A/kB/wPiAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wHxAewB8QH/AZoB0gGbAf8BKQGgASwB/wE2AaQBOQH/
|
||||
ATYBpAE5Af8BMgGjATQB/wEjAZkBJgH/AVYBsQFZAf8B4AHxAeEB/wHgAfEB4QH/A/4p/wP+Af8D+QH/
|
||||
A/kB/wPiAf8D1gH/A9kB/wPZAf8D2QH/A9kB/wHxAewB8QH/AZoB0gGbAf8BKQGgASwB/wE2AaQBOQH/
|
||||
ATYBpAE5Af8BMgGjATQB/wEjAZkBJgH/AVYBsQFZAf8B4AHxAeEB/wHgAfEB4QH/A/41/wP8Af8D6wH/
|
||||
A90B/wPaAf8D2gH/A9oB/wPwAf8D9AH/A9oB/wPaAf8D2gH/A90B/wPqAf8D+zn/A/4B/wP+Af8B9QH0
|
||||
AfUB/wPpAf8D3AH/A9kB/wPWAf8D1gH/AfEB7AHxAf8BvAH7AcEB/wF1AfEBfgH/AXUB8QF+Af8BdQHx
|
||||
AX4B/wGCAfEBigH/AaUB8gGqAf8B2AH6AdsB/wP+Af8D/jH/A/4B/wP+Af8B9QH0AfUB/wPpAf8D3AH/
|
||||
A9kB/wPWAf8D1gH/AfEB7AHxAf8BmgHSAZsB/wEjAZkBJgH/ASkBoAEsAf8BMgGjATQB/wFDAasBRQH/
|
||||
AXwBwgF9Af8BxwHlAcgB/wP+Af8D/jH/A/4B/wP+Af8B9QH0AfUB/wPpAf8D3AH/A9kB/wPWAf8D1gH/
|
||||
AfEB7AHxAf8BmgHSAZsB/wEjAZkBJgH/ASkBoAEsAf8BMgGjATQB/wFDAasBRQH/AXwBwgF9Af8BxwHl
|
||||
AcgB/wP+Af8D/kH/A/4B/wP5Af8D7wH/A+YB/wP1Af8D+AH/A+UB/wPvAf8D+QH/A/5J/wP+Af8D/gH/
|
||||
A/4B/wPxAf8D6QH/A+IB/wHxAewB8QH/Ac4B+gHRAf8BmgH5AaEB/wG0AfsBugH/AdEB+gHUAf8B8AH5
|
||||
AfEB/wP+Af8D/kH/A/4B/wP+Af8D/gH/A/EB/wPpAf8D4gH/AfgB8gH4Af8BswHbAbQB/wFpAbsBawH/
|
||||
AY4BzQGQAf8BuQHgAboB/wHoAfUB6AH/A/4B/wP+Qf8D/gH/A/4B/wP+Af8D8QH/A+kB/wPiAf8B+AHy
|
||||
AfgB/wGzAdsBtAH/AWkBuwFrAf8BjgHNAZAB/wG5AeABugH/AegB9QHoAf8D/gH/A/4h/wFCAU0BPgcA
|
||||
AT4DAAEoAwABeAMAAXgDAAEBAQABAQUAAYABBxYAA///AP8A/wD/AP8A/wD/AIgACw==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Windows.Forms;
|
||||
using WebsitePanel.Installer.Common;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
internal class ResultViewControl : UserControl
|
||||
{
|
||||
private AppContext appContext;
|
||||
private bool isInitialized;
|
||||
|
||||
public AppContext AppContext
|
||||
{
|
||||
get { return appContext; }
|
||||
set { appContext = value; }
|
||||
}
|
||||
|
||||
protected bool IsInitialized
|
||||
{
|
||||
get { return isInitialized; }
|
||||
set { isInitialized = value; }
|
||||
}
|
||||
|
||||
public virtual void ShowControl(AppContext context)
|
||||
{
|
||||
this.AppContext = context;
|
||||
}
|
||||
}
|
||||
}
|
180
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.Designer.cs
generated
Normal file
180
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServerControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,180 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class ServerControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControl));
|
||||
this.grpConnectionSettings = new System.Windows.Forms.GroupBox();
|
||||
this.txtPassword = new System.Windows.Forms.TextBox();
|
||||
this.lblPassword = new System.Windows.Forms.Label();
|
||||
this.txtPort = new System.Windows.Forms.TextBox();
|
||||
this.lblPort = new System.Windows.Forms.Label();
|
||||
this.txtServer = new System.Windows.Forms.TextBox();
|
||||
this.lblServer = new System.Windows.Forms.Label();
|
||||
this.btnUpdate = new System.Windows.Forms.Button();
|
||||
this.btnTest = new System.Windows.Forms.Button();
|
||||
this.btnRemove = new System.Windows.Forms.Button();
|
||||
this.grpConnectionSettings.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpConnectionSettings
|
||||
//
|
||||
this.grpConnectionSettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpConnectionSettings.Controls.Add(this.txtPassword);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblPassword);
|
||||
this.grpConnectionSettings.Controls.Add(this.txtPort);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblPort);
|
||||
this.grpConnectionSettings.Controls.Add(this.txtServer);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblServer);
|
||||
this.grpConnectionSettings.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpConnectionSettings.Location = new System.Drawing.Point(14, 43);
|
||||
this.grpConnectionSettings.Name = "grpConnectionSettings";
|
||||
this.grpConnectionSettings.Size = new System.Drawing.Size(379, 122);
|
||||
this.grpConnectionSettings.TabIndex = 0;
|
||||
this.grpConnectionSettings.TabStop = false;
|
||||
this.grpConnectionSettings.Text = "Connection settings";
|
||||
//
|
||||
// txtPassword
|
||||
//
|
||||
this.txtPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtPassword.Location = new System.Drawing.Point(122, 82);
|
||||
this.txtPassword.Name = "txtPassword";
|
||||
this.txtPassword.PasswordChar = '*';
|
||||
this.txtPassword.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtPassword.TabIndex = 5;
|
||||
//
|
||||
// lblPassword
|
||||
//
|
||||
this.lblPassword.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblPassword.Location = new System.Drawing.Point(16, 82);
|
||||
this.lblPassword.Name = "lblPassword";
|
||||
this.lblPassword.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblPassword.TabIndex = 4;
|
||||
this.lblPassword.Text = "Password";
|
||||
//
|
||||
// txtPort
|
||||
//
|
||||
this.txtPort.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtPort.Location = new System.Drawing.Point(122, 55);
|
||||
this.txtPort.Name = "txtPort";
|
||||
this.txtPort.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtPort.TabIndex = 3;
|
||||
//
|
||||
// lblPort
|
||||
//
|
||||
this.lblPort.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblPort.Location = new System.Drawing.Point(16, 55);
|
||||
this.lblPort.Name = "lblPort";
|
||||
this.lblPort.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblPort.TabIndex = 2;
|
||||
this.lblPort.Text = "Port";
|
||||
//
|
||||
// txtServer
|
||||
//
|
||||
this.txtServer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtServer.Location = new System.Drawing.Point(122, 28);
|
||||
this.txtServer.Name = "txtServer";
|
||||
this.txtServer.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtServer.TabIndex = 1;
|
||||
//
|
||||
// lblServer
|
||||
//
|
||||
this.lblServer.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblServer.Location = new System.Drawing.Point(16, 28);
|
||||
this.lblServer.Name = "lblServer";
|
||||
this.lblServer.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblServer.TabIndex = 0;
|
||||
this.lblServer.Text = "Server";
|
||||
//
|
||||
// btnUpdate
|
||||
//
|
||||
this.btnUpdate.Image = ((System.Drawing.Image)(resources.GetObject("btnUpdate.Image")));
|
||||
this.btnUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnUpdate.Location = new System.Drawing.Point(148, 171);
|
||||
this.btnUpdate.Name = "btnUpdate";
|
||||
this.btnUpdate.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnUpdate.TabIndex = 9;
|
||||
this.btnUpdate.Text = "Update";
|
||||
this.btnUpdate.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnTest
|
||||
//
|
||||
this.btnTest.Image = ((System.Drawing.Image)(resources.GetObject("btnTest.Image")));
|
||||
this.btnTest.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnTest.Location = new System.Drawing.Point(14, 171);
|
||||
this.btnTest.Name = "btnTest";
|
||||
this.btnTest.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnTest.TabIndex = 8;
|
||||
this.btnTest.Text = "Test connection";
|
||||
this.btnTest.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRemove
|
||||
//
|
||||
this.btnRemove.Image = ((System.Drawing.Image)(resources.GetObject("btnRemove.Image")));
|
||||
this.btnRemove.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnRemove.Location = new System.Drawing.Point(14, 9);
|
||||
this.btnRemove.Name = "btnRemove";
|
||||
this.btnRemove.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnRemove.TabIndex = 10;
|
||||
this.btnRemove.Text = "Remove server";
|
||||
this.btnRemove.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ServerControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnRemove);
|
||||
this.Controls.Add(this.btnUpdate);
|
||||
this.Controls.Add(this.btnTest);
|
||||
this.Controls.Add(this.grpConnectionSettings);
|
||||
this.Name = "ServerControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpConnectionSettings.ResumeLayout(false);
|
||||
this.grpConnectionSettings.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpConnectionSettings;
|
||||
private System.Windows.Forms.TextBox txtPassword;
|
||||
private System.Windows.Forms.Label lblPassword;
|
||||
private System.Windows.Forms.TextBox txtPort;
|
||||
private System.Windows.Forms.Label lblPort;
|
||||
private System.Windows.Forms.TextBox txtServer;
|
||||
private System.Windows.Forms.Label lblServer;
|
||||
private System.Windows.Forms.Button btnUpdate;
|
||||
private System.Windows.Forms.Button btnTest;
|
||||
private System.Windows.Forms.Button btnRemove;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
internal partial class ServerControl : ResultViewControl
|
||||
{
|
||||
public ServerControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,178 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnUpdate.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAj9JREFUOE+lk82L
|
||||
UlEYxmtRGBTlv5CIFti+VQtDF65NUAIh2rRoQHBjs1RQBwYcFGli/Nh4NRyvCaNgk9JVm4RmIMfE8VvE
|
||||
r2Bma4r5dM4lxeJOmy48XDjnPL/347znKoAr//VRwGXSaDQ3/rXPB18e+AksRt/PMZvNMJlM0Gg0JgzD
|
||||
9EKh0Ger1Rra2Hj5XK/XP/obuAL8mC0W5W9lDIdDTKdTcg5wOByIx+Not9vodNqIRMJQqVTP1iErwPnF
|
||||
BfL5PM7OzsjhDubzOUwmE7xeLzKZDEqlrzg8fA+1Wv1GEDAYDJDLcTg5OSH/HGq1GpxOJ9LpNAF8AEf2
|
||||
Eol3MBqNHkEAqRmVSgXZbBaxWAxhhuHNhUKBGBNIJg9AegKDwSAMODr6hDqJOh6P+TKKxSJSqRTCYQbB
|
||||
YJCYQ/D7/dDpdMIAlmVRPj1FvV7n0282m+h2u+j1eqhWq/D5fHC73dBqtcKA3d3XfFRqol1vtVr0KnkY
|
||||
zWjPt4etrS0olUq3YA9sNhsPoGZqoFGXmdC1QCAAu90OhUIRJJN7k0j0xyBtbr7iATQyFTVR0VJoJrQH
|
||||
dC7kcvkBMT8kkhPdWc2BxWKZlstl9Pt93rRMncLoFbNsDNvb25DJZBFivP8b8mAFEIvFMp3uyVOO4wKl
|
||||
UqlBAbSB1Dwajcg1JuHxeCCVSt8S8z2iu0TXBB9SMBi47nK5FPE4++L4+AtLShly3Efsx/YhkUgYYry1
|
||||
bOSlL3G909Fo9PbOzs5js9lsEYlE0vW9X7L1rrIM3ozpAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqNJREFUOE+dk2tI
|
||||
k2EUgN/SrOxqF7uYCZkVRRcryR9GEqGlRPdBBBoUlSQJkf0pIixKqX6ERUwyKJCViRAUWKbWWubu63NT
|
||||
29q0TSelZrMbmvX0bYb19dMDL+85h/d5zvnzCjHCAP6SA3L1+Vcf/oF2Wr46aAi85HHPI8rfl6H2F1Pk
|
||||
LeBEay7ZThWZrlSOWPfLxD+C3h8faf3qxvLJyNOuKso7yrjx7ioX3Gc4/uYoex3bUElbqX1fzZ2OUtbV
|
||||
LVcKvN/eYftkprbrCRX+u6i917joPstJZx7ZTSp2vE7H2mMKQjAIGVUblQJ74DV13dUyrKFEhos8BeQ7
|
||||
j5Elwxm2VOo/6IbgX1BoKyChOkYp0PbUUdGp4ab3BufenuaAYx/bpTSSTMu45y0bhi+ZLiKMgsW6eUpB
|
||||
ZWc5xW1XONp0kL3SztDU2IZZ5DYeCk0Nxm2plLB6QaRLsEQXqxQ88Fcg9dq47CwkybCUyBfhxGhn4Ovz
|
||||
huAWfzMzn01iQrNg4ltZUP/fBoauhqExPyFfykPUCCp95aHWwPcBUrXrCHcIprWEEdUWxgp9vHKDPHsO
|
||||
7o+uIYkcD9sf0D/YH8qvS1cRZkG0M4I4dxQJHdFssKxVCna3ZDK/dg46n3ZYEkwCfQESXs5liiuMeM9M
|
||||
VvsWkvJhBbsbM5SCtKYURukEs7XTeNZeMyypdN0n3CaI80wl0RvPps5kdvWmc7g5SylY6VjAOIMgwiKY
|
||||
bBjDLU8J5nYTKfo1TPAIFvlms75zFXu6t5DzJYtT7hNKQWL9IqKejyNaN57pryKYLG8zvW4sU02jiZOi
|
||||
SGxayGZXCtmtKvL9uRRZzysFVru1xNBoUBv/HIPdoNY79GqjfAd7JrtRbbab1Ra7RR18K0nSdY1GkzzC
|
||||
j6zEfgNB/y51tqL5CQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnRemove.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA+NJREFUOE89jmlM
|
||||
GwQYhj9iKbBgskgky7jdkjknCmwglMIqoDCQa61QObQMSLElhEMJ0LkSaDkHowdyDNlCgQETVgcydBgR
|
||||
4tzCOCz3gJbSFTXgohhRM/C1McYfz8/neV+rnA+Laf8AV13dXvA5+Ht/4+DpvonBsNpkMq1Nh2yZ5kN2
|
||||
tj8xbWx2rK2Zu4xnGGBYM+n+5CQZDBvEYDCI3st83yq3SDqzs7uP5c1f8fX0Jrq+0KG6YwwfKLQQV2r2
|
||||
RLKrW7kVTTMltc3D9a0dTQUS6bmkC0JKzRQRSeVVz6rbusw7vwFL5j9xffxn5HdvIbXtMc43bSJctQF2
|
||||
3SpOV83j5YpZxBQ2IiUtvYebLCBechpR32dDx0cnHv71YG0Pma16CFrWUXLzMUr6zRB1m5DYbkToxwb4
|
||||
NBhwSr2FCFE5IqNjykKjYiksKo5oRjfH0Y6v4N0mA5QjP6Ltm23k9pgQ36xHqHIdgYp1nLFwqkEPz0Yj
|
||||
zosl8AtgpZ/2Z9OZgCCi5eVFgVB5H+q72xBrjHjpo0U4F8/D+eIiXEqX4SJ/BLeaNThf1sOn2YCSahV4
|
||||
Cfw3uPxk4vFTiMYmvisv7ZxBtEIPxzwdXEsW4CFdgodsBe4Vq3C3yC51ejx3xYSgri10aoeeSstkx6Xl
|
||||
FXSpTE50o3+w61yNDs/nL8Bd8p9cbpErH8G9dg1H6zfg3baJvN45aPrHcW9waE/Z2MjJys6mlBTLA+mV
|
||||
T+YDyybhU7mKE5UGuFVuwLnKAKcaPY7UGxHUuow76jYsiTKhS03CLJeL2aysP2olksJYLpcoNiG5JSk9
|
||||
az69QPp7mrQJSTVaxCi/BadlBa+26HFNrsBaUQFWVSpMR0ZiSiDAVPoFzMbHQyQURlBAcCj5ss4y/FjB
|
||||
HhFRb4Xw+fyiTKFwKiOnAPkXy3EvS4iFoiLsmM14qFDgtkaDu5bA2uHDqIuO1lLg629SQoqApLJK6rzR
|
||||
6zk4ONTTPzDwQ2lFNSR5+ZjMyMADX1+MRkejc2ICA3I55ohgsnDNz2+OSuVV1N7RRZ29N52Gvxzdnf5e
|
||||
h7mFRfTd0kKlVGEsLAwjTk7oVqtxSyzGoiWyVViIHUtAHRb2OSUmJRP37USK5yU41jUoDYN3RvCp9jba
|
||||
Nd1QXNegLy4OX1nuDoeH/7u86e+PJzwejI6OqJPJ4okVyCYWm02vBbAogBXoIRJnN1bVXF6yxH6R19bv
|
||||
Fl8qNQ6EhGwv29nBZGWFJ5aI0dUVypwceUhUFFHQWc7/eHl704kXT5Kn5ytML2+fIw4ODm7WNjbOR48d
|
||||
836HzZZLOZyevODgFh8vLy7D3t6eiGz/AfbnLf28f482AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
166
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.Designer.cs
generated
Normal file
166
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServersControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,166 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class ServersControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServersControl));
|
||||
this.grpConnectionSettings = new System.Windows.Forms.GroupBox();
|
||||
this.txtPassword = new System.Windows.Forms.TextBox();
|
||||
this.lblPassword = new System.Windows.Forms.Label();
|
||||
this.txtPort = new System.Windows.Forms.TextBox();
|
||||
this.lblPort = new System.Windows.Forms.Label();
|
||||
this.txtServer = new System.Windows.Forms.TextBox();
|
||||
this.lblServer = new System.Windows.Forms.Label();
|
||||
this.btnAdd = new System.Windows.Forms.Button();
|
||||
this.btnTest = new System.Windows.Forms.Button();
|
||||
this.grpConnectionSettings.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpConnectionSettings
|
||||
//
|
||||
this.grpConnectionSettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpConnectionSettings.Controls.Add(this.txtPassword);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblPassword);
|
||||
this.grpConnectionSettings.Controls.Add(this.txtPort);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblPort);
|
||||
this.grpConnectionSettings.Controls.Add(this.txtServer);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblServer);
|
||||
this.grpConnectionSettings.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpConnectionSettings.Location = new System.Drawing.Point(14, 3);
|
||||
this.grpConnectionSettings.Name = "grpConnectionSettings";
|
||||
this.grpConnectionSettings.Size = new System.Drawing.Size(379, 122);
|
||||
this.grpConnectionSettings.TabIndex = 0;
|
||||
this.grpConnectionSettings.TabStop = false;
|
||||
this.grpConnectionSettings.Text = "Connection settings";
|
||||
//
|
||||
// txtPassword
|
||||
//
|
||||
this.txtPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtPassword.Location = new System.Drawing.Point(122, 82);
|
||||
this.txtPassword.Name = "txtPassword";
|
||||
this.txtPassword.PasswordChar = '*';
|
||||
this.txtPassword.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtPassword.TabIndex = 5;
|
||||
//
|
||||
// lblPassword
|
||||
//
|
||||
this.lblPassword.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblPassword.Location = new System.Drawing.Point(16, 82);
|
||||
this.lblPassword.Name = "lblPassword";
|
||||
this.lblPassword.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblPassword.TabIndex = 4;
|
||||
this.lblPassword.Text = "Password";
|
||||
//
|
||||
// txtPort
|
||||
//
|
||||
this.txtPort.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtPort.Location = new System.Drawing.Point(122, 55);
|
||||
this.txtPort.Name = "txtPort";
|
||||
this.txtPort.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtPort.TabIndex = 3;
|
||||
//
|
||||
// lblPort
|
||||
//
|
||||
this.lblPort.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblPort.Location = new System.Drawing.Point(16, 55);
|
||||
this.lblPort.Name = "lblPort";
|
||||
this.lblPort.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblPort.TabIndex = 2;
|
||||
this.lblPort.Text = "Port";
|
||||
//
|
||||
// txtServer
|
||||
//
|
||||
this.txtServer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtServer.Location = new System.Drawing.Point(122, 28);
|
||||
this.txtServer.Name = "txtServer";
|
||||
this.txtServer.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtServer.TabIndex = 1;
|
||||
//
|
||||
// lblServer
|
||||
//
|
||||
this.lblServer.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblServer.Location = new System.Drawing.Point(16, 28);
|
||||
this.lblServer.Name = "lblServer";
|
||||
this.lblServer.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblServer.TabIndex = 0;
|
||||
this.lblServer.Text = "Server";
|
||||
//
|
||||
// btnAdd
|
||||
//
|
||||
this.btnAdd.Image = ((System.Drawing.Image)(resources.GetObject("btnAdd.Image")));
|
||||
this.btnAdd.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnAdd.Location = new System.Drawing.Point(148, 131);
|
||||
this.btnAdd.Name = "btnAdd";
|
||||
this.btnAdd.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnAdd.TabIndex = 9;
|
||||
this.btnAdd.Text = "Add server";
|
||||
this.btnAdd.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnTest
|
||||
//
|
||||
this.btnTest.Image = ((System.Drawing.Image)(resources.GetObject("btnTest.Image")));
|
||||
this.btnTest.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnTest.Location = new System.Drawing.Point(14, 131);
|
||||
this.btnTest.Name = "btnTest";
|
||||
this.btnTest.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnTest.TabIndex = 8;
|
||||
this.btnTest.Text = "Test connection";
|
||||
this.btnTest.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ServersControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnAdd);
|
||||
this.Controls.Add(this.btnTest);
|
||||
this.Controls.Add(this.grpConnectionSettings);
|
||||
this.Name = "ServersControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpConnectionSettings.ResumeLayout(false);
|
||||
this.grpConnectionSettings.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpConnectionSettings;
|
||||
private System.Windows.Forms.TextBox txtPassword;
|
||||
private System.Windows.Forms.Label lblPassword;
|
||||
private System.Windows.Forms.TextBox txtPort;
|
||||
private System.Windows.Forms.Label lblPort;
|
||||
private System.Windows.Forms.TextBox txtServer;
|
||||
private System.Windows.Forms.Label lblServer;
|
||||
private System.Windows.Forms.Button btnAdd;
|
||||
private System.Windows.Forms.Button btnTest;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
internal partial class ServersControl : ResultViewControl
|
||||
{
|
||||
public ServersControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,162 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA+VJREFUOE811G0w
|
||||
GwYcx/F/Jx7a3Ta71djQcqdDqxSreAyd624zpVSZeDYPKWsZpuqh0hJNPERYPIzSadHDViub26nWhqq6
|
||||
a0uELRFJNOFcrjN3bDe2229pd3vxefm9/93vxX9XRk4+ERn02h145+D2zs7qzs6OxuAl0hgbGjzdbWyk
|
||||
2bPbZM3ExFhnaGS0wWAYbhswjOj+gynSaLXEYDCI4lPPGBVc4is2/wRk2i2MS1bRfWcB/M4J5NZ/Bw7/
|
||||
5t9pZe3rmWXN8jxB85ig6avOc/mFQezkdIpNzSDiVggsrnbd2ni2Bcyo/4B4WIczHRqwWzQIbXyK4/Vq
|
||||
+AiX4CpYwCG+FCfzahGTkNQUzk6gUzGJRF8PDLmNPZT8c1e6hbgGBThtKnD7V1Csl3lTg6j2ZQQ2quAq
|
||||
UsFJrEVQWiE++Cg4+70PT1BgUAjR7NxcaPdduT5WonVUB/GIDmnXlxEkXgJLpABTtAQ3PcdaFVzESkSk
|
||||
5+Gop3e4u5cvvevlRySZk+Z8UvcQzfeeIbZFBbtCKSwLpLAqXoD1pV9gzZNjf6UCljVKMFuUKOHXIjI6
|
||||
hhkZk0DP0fDohPhi1xwCKhdhniPB/qJ52HJ/hm2ZDDZXFmFTpcA+oRJmQg2CulbQ03t7k1vGM+eWX6HS
|
||||
yzyijt7BIRZPCrPcedjor9r8H/P/i62FKrg3a5HcL4fwwRSGJgbXG+ob3DM5nxKbzSY6X3lVzSqbhodA
|
||||
Bke+ErZ8NawEalhWqfCWcBk+TQpUjfeAt5CLbEkSUuficH4m+/eS6uLPI0IjiIJPRdVGJ6ZMJ2ddWE8q
|
||||
qkMsvwdhdT8h8Mt5HG1UI//ba8iTJoD9KBxTuvvgyUrhI3FBnCQCnLOcEPJkBerXZBHTx98iOOSkRzQ7
|
||||
OjctPf1JamYWzl3gIn8yC5y5JCTOfgz1pgoVi1w4PTkAu0ULhImDh8n/eBDFp3CIXyOivm/6A4fvjAwP
|
||||
DA6u8yqq8FlRLlKmYzG6OoLVjRVs/7WNtc01yH6VIVDhBedOezmVC6qpraOTrnf3OAwNj+DRzCwez0rQ
|
||||
03cLdV+IETkWgiNj9nAfd8H8b1LwlkrhLnXFm5o9ONbqPUnhpyMpJCz8ubdrRHXqge9/QF//bbTf6EJr
|
||||
0w3E9bFBEwSaJPy4dg/xi6dBWoKl+hVcFJWkk7ev3wtML29ienrtS01Lr75cXvGYX12zdqmcr8svKJIG
|
||||
D7yvM194FfZyK1hpTeGgscHZaxltUSeiDMjPP+AFX5Y/uRxxJQfHg3TI6fCuw87Or5m+bvqGEcN4r4ON
|
||||
g9uxJFatX6X3kH+pby8zwCNt78tmpvo/YPIv1ugy8/qHI6sAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqNJREFUOE+dk2tI
|
||||
k2EUgN/SrOxqF7uYCZkVRRcryR9GEqGlRPdBBBoUlSQJkf0pIixKqX6ERUwyKJCViRAUWKbWWubu63NT
|
||||
29q0TSelZrMbmvX0bYb19dMDL+85h/d5zvnzCjHCAP6SA3L1+Vcf/oF2Wr46aAi85HHPI8rfl6H2F1Pk
|
||||
LeBEay7ZThWZrlSOWPfLxD+C3h8faf3qxvLJyNOuKso7yrjx7ioX3Gc4/uYoex3bUElbqX1fzZ2OUtbV
|
||||
LVcKvN/eYftkprbrCRX+u6i917joPstJZx7ZTSp2vE7H2mMKQjAIGVUblQJ74DV13dUyrKFEhos8BeQ7
|
||||
j5Elwxm2VOo/6IbgX1BoKyChOkYp0PbUUdGp4ab3BufenuaAYx/bpTSSTMu45y0bhi+ZLiKMgsW6eUpB
|
||||
ZWc5xW1XONp0kL3SztDU2IZZ5DYeCk0Nxm2plLB6QaRLsEQXqxQ88Fcg9dq47CwkybCUyBfhxGhn4Ovz
|
||||
huAWfzMzn01iQrNg4ltZUP/fBoauhqExPyFfykPUCCp95aHWwPcBUrXrCHcIprWEEdUWxgp9vHKDPHsO
|
||||
7o+uIYkcD9sf0D/YH8qvS1cRZkG0M4I4dxQJHdFssKxVCna3ZDK/dg46n3ZYEkwCfQESXs5liiuMeM9M
|
||||
VvsWkvJhBbsbM5SCtKYURukEs7XTeNZeMyypdN0n3CaI80wl0RvPps5kdvWmc7g5SylY6VjAOIMgwiKY
|
||||
bBjDLU8J5nYTKfo1TPAIFvlms75zFXu6t5DzJYtT7hNKQWL9IqKejyNaN57pryKYLG8zvW4sU02jiZOi
|
||||
SGxayGZXCtmtKvL9uRRZzysFVru1xNBoUBv/HIPdoNY79GqjfAd7JrtRbbab1Ra7RR18K0nSdY1GkzzC
|
||||
j6zEfgNB/y51tqL5CQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
250
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.Designer.cs
generated
Normal file
250
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/ServiceControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,250 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class ServiceControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServiceControl));
|
||||
this.grpConnectionSettings = new System.Windows.Forms.GroupBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.btnAdd = new System.Windows.Forms.Button();
|
||||
this.btnTest = new System.Windows.Forms.Button();
|
||||
this.lblStatus = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.textBox4 = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.grpConnectionSettings.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpConnectionSettings
|
||||
//
|
||||
this.grpConnectionSettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpConnectionSettings.Controls.Add(this.pictureBox1);
|
||||
this.grpConnectionSettings.Controls.Add(this.btnAdd);
|
||||
this.grpConnectionSettings.Controls.Add(this.btnTest);
|
||||
this.grpConnectionSettings.Controls.Add(this.lblStatus);
|
||||
this.grpConnectionSettings.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpConnectionSettings.Location = new System.Drawing.Point(14, 3);
|
||||
this.grpConnectionSettings.Name = "grpConnectionSettings";
|
||||
this.grpConnectionSettings.Size = new System.Drawing.Size(379, 66);
|
||||
this.grpConnectionSettings.TabIndex = 0;
|
||||
this.grpConnectionSettings.TabStop = false;
|
||||
this.grpConnectionSettings.Text = "Status";
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.Location = new System.Drawing.Point(13, 20);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(32, 32);
|
||||
this.pictureBox1.TabIndex = 12;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// btnAdd
|
||||
//
|
||||
this.btnAdd.Enabled = false;
|
||||
this.btnAdd.Image = ((System.Drawing.Image)(resources.GetObject("btnAdd.Image")));
|
||||
this.btnAdd.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnAdd.Location = new System.Drawing.Point(258, 20);
|
||||
this.btnAdd.Name = "btnAdd";
|
||||
this.btnAdd.Size = new System.Drawing.Size(83, 28);
|
||||
this.btnAdd.TabIndex = 11;
|
||||
this.btnAdd.Text = "Stop";
|
||||
this.btnAdd.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnTest
|
||||
//
|
||||
this.btnTest.Enabled = false;
|
||||
this.btnTest.Image = ((System.Drawing.Image)(resources.GetObject("btnTest.Image")));
|
||||
this.btnTest.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnTest.Location = new System.Drawing.Point(169, 20);
|
||||
this.btnTest.Name = "btnTest";
|
||||
this.btnTest.Size = new System.Drawing.Size(83, 28);
|
||||
this.btnTest.TabIndex = 10;
|
||||
this.btnTest.Text = "Start";
|
||||
this.btnTest.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// lblStatus
|
||||
//
|
||||
this.lblStatus.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblStatus.Location = new System.Drawing.Point(51, 26);
|
||||
this.lblStatus.Name = "lblStatus";
|
||||
this.lblStatus.Size = new System.Drawing.Size(112, 21);
|
||||
this.lblStatus.TabIndex = 0;
|
||||
this.lblStatus.Text = "Not installed";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label1.Location = new System.Drawing.Point(16, 82);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(100, 21);
|
||||
this.label1.TabIndex = 4;
|
||||
this.label1.Text = "Password";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label2.Location = new System.Drawing.Point(16, 55);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(100, 21);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "Port";
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox1.Location = new System.Drawing.Point(122, 28);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(234, 21);
|
||||
this.textBox1.TabIndex = 1;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label3.Location = new System.Drawing.Point(16, 28);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(100, 21);
|
||||
this.label3.TabIndex = 0;
|
||||
this.label3.Text = "Server";
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox2.Location = new System.Drawing.Point(122, 55);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(234, 21);
|
||||
this.textBox2.TabIndex = 3;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Image = ((System.Drawing.Image)(resources.GetObject("button2.Image")));
|
||||
this.button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.button2.Location = new System.Drawing.Point(14, 240);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(128, 28);
|
||||
this.button2.TabIndex = 11;
|
||||
this.button2.Text = "Update settings";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// textBox3
|
||||
//
|
||||
this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox3.Location = new System.Drawing.Point(122, 82);
|
||||
this.textBox3.Name = "textBox3";
|
||||
this.textBox3.PasswordChar = '*';
|
||||
this.textBox3.Size = new System.Drawing.Size(234, 21);
|
||||
this.textBox3.TabIndex = 5;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.Controls.Add(this.textBox4);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this.textBox3);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.textBox2);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.textBox1);
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.groupBox1.Location = new System.Drawing.Point(14, 81);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(379, 150);
|
||||
this.groupBox1.TabIndex = 10;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Connection settings";
|
||||
//
|
||||
// textBox4
|
||||
//
|
||||
this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox4.Location = new System.Drawing.Point(122, 109);
|
||||
this.textBox4.Name = "textBox4";
|
||||
this.textBox4.PasswordChar = '*';
|
||||
this.textBox4.Size = new System.Drawing.Size(234, 21);
|
||||
this.textBox4.TabIndex = 7;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label4.Location = new System.Drawing.Point(16, 109);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(100, 21);
|
||||
this.label4.TabIndex = 6;
|
||||
this.label4.Text = "Confirm password";
|
||||
//
|
||||
// ServiceControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.grpConnectionSettings);
|
||||
this.Name = "ServiceControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpConnectionSettings.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpConnectionSettings;
|
||||
private System.Windows.Forms.Label lblStatus;
|
||||
private System.Windows.Forms.Button btnAdd;
|
||||
private System.Windows.Forms.Button btnTest;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.TextBox textBox3;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.TextBox textBox4;
|
||||
private System.Windows.Forms.Label label4;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
internal partial class ServiceControl : ResultViewControl
|
||||
{
|
||||
public ServiceControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,223 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAACHBJREFUWEedVwtQ
|
||||
lWUa/v7D/XCJZEhtrEDyNlmZjXkpU3N07aI2o+a44q3a1PHSoDKra6toXlLJG+aqTKlcJHQhF1e8EAgE
|
||||
LIIgi4QeEgFruYU0gBy5P/u85z9nl5Oa5j/zzH/7vvd53uf9vu//fk095NFqNA5V7sYpqofPEIOv70BH
|
||||
T8/eCnDsbGio6ayvL8Uv9QVaY0Pyz0q70KeltfUhwz64Waury5LOAQNvdk2cCHz4IbBqFRASAmzaBKxb
|
||||
B6xcCXzwATBtGrrGjEFbQMDtSg+PA2uV6vPg6L/RokVT4zr8/UsxYQLw/vvAmjVAaCgQHg5ERQGRkfr1
|
||||
zp26kKVLgTlzgLffBkaMwC/PPIMzTo5/fSQRLUbj6s7nngOmTAEWLQLWrwf27gWOHAGio4GYGCAiAjh4
|
||||
UBewcSMQHKy3nTVLFzFqFDBgAPLd3bOMSvk+tBCzl+duvPgiMHky8NFHwCefADt2APv2Afv3A3v2ANu3
|
||||
61mvXq2XIChId0BKNHs28O67wPjxwCuvAP3745KX548uSg18oIgmN7egLslc6i12Ll8OrF2r13zDBj3L
|
||||
hQuBGTOAN9/U202apDs1fTowc6ZOLu/GjrWUwvz88zD7+SHR1bXMUamA+4poMBiGtbAhXn1Vzz4w0OJA
|
||||
B7O6M2+eTipZvfQS4O8P9O4N9OoF9OkD9OunPx8+HObRo9E1ciQwbBjw8stoGzwYtXxf/eSTCHFwSKOA
|
||||
nvcUUe/jc6XzhRd05VLDqVPR/s472LB4MUKWLEG7kPToAXh6os3FBU2Ojmh0ckKzszM6jEbAwwO3SbJw
|
||||
/nzskjIEBFjsb+c4qOnbF+VPPYVCb2/0U+ozCnC1E1Ht4hx4S7IaMgR47TXg9dfRQicOsbbJ167hvMmE
|
||||
g6xxg1IwEzVEJVFFVBPNxA1i1Xvv4UBSEsLT0vC1uNazJ9roVBVdMvH8g68vQp2cGkk+3k7Aj97eprpn
|
||||
nwVYL4uVHISHOfgSSG47UisqsJ9ulHcT8BOv64giIoij/8uUFEvzTuJYcTEurFgBM7P+6YknUEzyyz4+
|
||||
yKSD/kpFUEAPiwhm0vc6lYpNrbRMpg4opnjuXKSWlaH5fxKAdN6HM2ipNXNx4t/EX+bNR1R6ereWQBvv
|
||||
yuhINUtUThFFjz+Ofz32GPK9vDDNYLhJ6j9YBNxwdQ4upj2VtKnx6afBxQfgGdKRgzG3shK3u4XOqa1F
|
||||
JGeGyZr5Nk7DE7m5duRyU88xJA5VuLujhFnnc4ykEyJiN2OTejPhpK66uUUV0Z5ycYGjupEDqZlootKf
|
||||
GaCQ06ygrs7OieL6eiRt3oy4rVuRWVqKrl/R3+S0LGTfHzhITSS9QhE5HKgpxLe8jqYATsl/UICfyvPw
|
||||
yJfaXOUIr+C5hqgjqthR6n2dyOMaX8jMzd2IpDRNd+UNXOdUzRHh4hCJrpA039UVWUQSZ88/eT7F516a
|
||||
xqGjxqksd/fai6xRATMuISpo0U2iXKxzcECx1ercN97A9zU1aL8HqTjQStzgApTF9pdEtKbhMokuk/Qi
|
||||
z9/RjTNEHK/P8pmPpsk4mKouGI0tUpuLJCwgrhHXWTMTlX5PAZKJJRsic9JEVLYKlf0hzuRz7RfyXOIi
|
||||
kcO+OSQUZBApXDcSiFhenyN8NY0VVjNVkptb9Xk3N6STMIcoIIp4X0SVhQxSYCVP5zme34DaO3cs7F1d
|
||||
XRbIIZKyw8LwHdtkEyIkiw5kkTBTyBkn0WDA34lIXsfTBTpwiwL+qM45O+eelvrwYQYhduURBWIfO0jm
|
||||
ycQWfheSS0ruUQD9UUlzM6L4vfhWnCIyiDSSCflZxjlJHCOO8v4w4aEUlxA1S513cjwax2xPkzCJitOp
|
||||
OJvItdp/noH+vGABTmRl3Zfc9iKPY+QLbljOsI84lkwXhDyBOM7rwzx/xbjbeOYs4BKkZqgUzbAshoTx
|
||||
JE/kyyQijY3zGOAcsZyLSXRq6l3kl7lUX+WXTxac7otVdnk5di1bhgT2PUtwruEE40USh4ivSP4xQXJO
|
||||
MDVZ0S6/SJLHEHF8cYqNxMaTxEp+WGIzMu4m5wdLAp+SmnPOl5nNdlM0t6oKYVygYoWciCLCGXcv44cT
|
||||
I3lNcpqkhltWw2MODlcjmHm0DBQ2FvWfc7MRzRWu41f0+Vzh4vn+NJFobZvMr6epsREt3doWtbQgnjsl
|
||||
Lvr4kthH0j2MH0p4a6qTtIeJXhYBf9K0wAQKEHtE7XEilh+k1EuX7JfhceMsAiVzG0RsnAjiAmS6dctO
|
||||
7jdDh+ILvttL7KCAMMafoWf/H+JjC7ntiDAYrskAOcTGR4ijYt+gQZYay5H91luI5rNvrIhnoJOE3Iso
|
||||
eZcouyPrEc8P2i4+201sswoIYXuOfhGQRIywE7BIU2NlmuwTsJEIOUBc4OqWwS232BgjzohDDCSIJb4m
|
||||
hFyslj6Z3Aec4qK0XUiJLcSnbCMOsOC27NeQ3M1OgNws1rTNURSwh41FudgXRuwnRICQ2BBpvRanWEyE
|
||||
E38jPrcSi4BNxHpr9tN1cu5nFA1TQ+4itz1YqGnHZSzspIhQdhIbpYYiRhw5aD0Loc0lIRbXpK1kvZXY
|
||||
aCX/jHFm6+QdBNcnNe2+5NYX2ixNiw5jRxEh9ROIGJsgcccGG6lkLHYL8Tpig1yz/9T/k/MzoeYR9vvB
|
||||
+6hxGKXUjtUydQgJzt2DHYRMIDYLWYg1Y7mWtivYjz5L5twyKn4m1AKC/yi/75g+WtMygxlsi7hBSHDJ
|
||||
0kYqxIJPrc+Xs80Ygj8i7aQqJzhMuOIpxUePdvRltyD+aaZwE3d7DoMvJVaRMJhYSszl/QTCj9eaUk1s
|
||||
z02y4nqllhD9H43WvpcDbwcRgQTHmeL0V/KTwc2PktpyC2C5l+esmJpLDCb4zfnt479hJfyQufY7HQAA
|
||||
AABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA5FJREFUOE81U21M
|
||||
m1UUvg3LmJMlilvUaJzsDzr/7AeJmdkWcW5LlwmYQCmLIZotISbEqSzMQaY4iGYxTaYuQmGwQUtbPtrS
|
||||
0Q9aoKUv/aKlLf2iLYVVsTgXOhyxMWQzeTx9wZs8uSf3nue555x7jqCqqorl1+7CQravqCiPXSWvHzz6
|
||||
6msHy4v37z/89MnT3F+Psr4Ha2uW7MZG+u9cjm1ubrKtrS0mEAgYywvk8SHh6pUrpy0z9rAzmYY5nsZY
|
||||
eAm6SAoWsmejiSeq4WHZZ42NL9XX1zOxWMzq6uq2Bc4Khaz5ctOl2XAc2sgyBubCGPCEeNx1h9DrCqKX
|
||||
dl3sPgzTtvSFTz5+s6amhhdhQiJ/dP58pcntxVAwgcG5CGQ7AipfFIPeCPrprJ/ObjuD0C6mcWdQERWe
|
||||
ObOvoqKCsXdPnHjmZmdXXBNO8c55sjGcxMqDh1hd+wORRBLT8wtQ5O9I8I4nDN1CApebmq6La2sZq/zg
|
||||
XKXK6oDSv8iTDeEEcrkcqHBYTqXg83pht07DZLNvR+aNQhlKQdLVff/UyfeeYxcuXpSM+iIYJHU5Ofz6
|
||||
cJ3IjxCLxWCz2aBWq6FQKjGu1UA2xaHTFUK3N4Zbo/dwTig8zr5sbh4dptfllKfaH8Pq7xkE/H7o9Xoo
|
||||
FArIZDJoNBo4OA4W1xx6yW8gkIDUMAVRdXUd+6q1VcUXi9Dn8MPudMJoMPBkuVzOk/ORpJJJuCMxyOix
|
||||
EfoN6bgZoppqEWtpabmudPkhdQRxTc+hX2fACIX8P3lmZgbxeBwb2XVMBKPQxFagX87gR7nq37paURm7
|
||||
KZEcl2oNaDM50WacxQ2jHQOqIT5nB2dHaimJx1RQbzwJDTXWxNIqzCTw7fc3Ap82NOxmkxYzuyXt4drG
|
||||
bWifcOIHqxc/T7mgtNhg83jhjS5iciHKd+XkSgb2zDpUVg5t33zd0NHRwRgViVlMpiN3NbrH35mdkNh8
|
||||
+IXS6ck3D9VFGYhDR82TJ3OZLPSBCHr7+u719HSz9vZ2xopogOgrmdloODZkmMh2cfPodEfQN7/I//cY
|
||||
zYGJQrb+9icsFIlCqdK3tlzdW1paygoKCvhB3EXYS0tw7J2jb136/AuNdEj9j8LuwYhnAWO+ELScGz91
|
||||
316rFYmuHTpU8mx+eAl7CDSO28YBwiuEFwnFB14oPvJ2WZn49Kn3G0+WlzccfqP07J7CwhK6e37H7+Ud
|
||||
u+A/uGZ/VDhOBqoAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA3hJREFUOE9VU2tM
|
||||
m2UUfjsJ6EI1upHFmGgG/tAYSYwzJi7q2CVN6iKQ9IImZT+IoolBfvijpJiiY0sMczGTzBVoGQgtnb1N
|
||||
Li1sY6X0QkfX0dIy6J2tY6wr05Bg5hJ4PG9BE0/yfDnJ9z7Pc857ziuora1lPIqLi1lpaSl7TigsKS8v
|
||||
//Dl/fuP7i0rq/j7yZPHj3K54L3s3bFcfu32+vo649jY2GACgYAxLlBATQ37tlVVc83tjbljGYwtpGCZ
|
||||
W4IlFIODclc0tmmyWm3NTU2v1NfXM6lUymQy2baAWCxmqpYW1XR0CWYi9M+ECaEC+nwh6Ly30OMNwRpJ
|
||||
wuFy3/+soeEA50kkEsZEIhE7oVB8Mu4PYih4G4M35nfI4UI+4J/Hr34uGEaPZw7mSAoDJkvyuFi8t5qq
|
||||
ZlWHDj3b2a1Nm8PxAmGQDt9MLmMiEkMfVTBwIwL9bASDBJ73kpAtHINSqTwrl8upherqOuOUD/rAAvTc
|
||||
kUirf/wJHsnVHCzBKPpIdGA2Soign5uE4vhJe3Hl2JHD+9jnjV+cNwW2HfTkwCu4/2hbgAdNAf54GhpX
|
||||
AJ3TQWi8c+jyR3DeZsfHxz8SsW+ULSOXdnofCkShdQeRyeX/E/g3eUxCV0ML0NKl9gcX0T3uhEwiaWDK
|
||||
1lYbJ/I+NeSgHnYisfLgfwJbm5tIpDMwOj0YJLNLdJE99knIpdITTKVq/cHgC+ICOatHpvD9qAsp6r0Q
|
||||
W1tI3bkD05QXuukATSCJy7QTI/EsOodM+LROfpCd7eg4rLk8BrXdg+/GXDjtcGP5wUOs5fMwOd3QXPfB
|
||||
SLsxvJjB6FIG9iWaUOoeTnaciX7Z2LibOex2dk7T5Wmj0k86PDhzzY/+SQ867U5oaWSmSKLgyolXEncx
|
||||
lX1YaKVNrW5qb29nzGAwsKsT429ftPy+fnrcix+vz+Kc6yZ0fP50Web5OEYW05ggsiubx2gwAm1vr0On
|
||||
1e5qP3WKMaFQyBQKBbMPD39gHHWsXaBx/TIzDx3thYFKty6kYU9kMbm8iitzURiGjA5yL62srGRFRUWF
|
||||
h8i/uykE7x98782vm5utXUbzX3part9mbsE2S29g2oefu3tW6mSytlcrKoT88RKeJuziAjwpI7xE2EfY
|
||||
U7bnhbfefedAnejY0a+OVFU1vvH6a+JnSkrK6d/zO+de3Mmf+gcr/Y3/aW/RkQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="button2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAj9JREFUOE+lk82L
|
||||
UlEYxmtRGBTlv5CIFti+VQtDF65NUAIh2rRoQHBjs1RQBwYcFGli/Nh4NRyvCaNgk9JVm4RmIMfE8VvE
|
||||
r2Bma4r5dM4lxeJOmy48XDjnPL/347znKoAr//VRwGXSaDQ3/rXPB18e+AksRt/PMZvNMJlM0Gg0JgzD
|
||||
9EKh0Ger1Rra2Hj5XK/XP/obuAL8mC0W5W9lDIdDTKdTcg5wOByIx+Not9vodNqIRMJQqVTP1iErwPnF
|
||||
BfL5PM7OzsjhDubzOUwmE7xeLzKZDEqlrzg8fA+1Wv1GEDAYDJDLcTg5OSH/HGq1GpxOJ9LpNAF8AEf2
|
||||
Eol3MBqNHkEAqRmVSgXZbBaxWAxhhuHNhUKBGBNIJg9AegKDwSAMODr6hDqJOh6P+TKKxSJSqRTCYQbB
|
||||
YJCYQ/D7/dDpdMIAlmVRPj1FvV7n0282m+h2u+j1eqhWq/D5fHC73dBqtcKA3d3XfFRqol1vtVr0KnkY
|
||||
zWjPt4etrS0olUq3YA9sNhsPoGZqoFGXmdC1QCAAu90OhUIRJJN7k0j0xyBtbr7iATQyFTVR0VJoJrQH
|
||||
dC7kcvkBMT8kkhPdWc2BxWKZlstl9Pt93rRMncLoFbNsDNvb25DJZBFivP8b8mAFEIvFMp3uyVOO4wKl
|
||||
UqlBAbSB1Dwajcg1JuHxeCCVSt8S8z2iu0TXBB9SMBi47nK5FPE4++L4+AtLShly3Efsx/YhkUgYYry1
|
||||
bOSlL3G909Fo9PbOzs5js9lsEYlE0vW9X7L1rrIM3ozpAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
229
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.Designer.cs
generated
Normal file
229
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/SettingsControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,229 @@
|
|||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
partial class SettingsControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsControl));
|
||||
this.grpWebUpdate = new System.Windows.Forms.GroupBox();
|
||||
this.btnCheck = new System.Windows.Forms.Button();
|
||||
this.chkAutoUpdate = new System.Windows.Forms.CheckBox();
|
||||
this.btnUpdate = new System.Windows.Forms.Button();
|
||||
this.grpProxy = new System.Windows.Forms.GroupBox();
|
||||
this.txtPassword = new System.Windows.Forms.TextBox();
|
||||
this.lblPassword = new System.Windows.Forms.Label();
|
||||
this.txtUserName = new System.Windows.Forms.TextBox();
|
||||
this.lblUsername = new System.Windows.Forms.Label();
|
||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||
this.lblAddress = new System.Windows.Forms.Label();
|
||||
this.chkUseHTTPProxy = new System.Windows.Forms.CheckBox();
|
||||
this.btnViewLog = new System.Windows.Forms.Button();
|
||||
this.grpWebUpdate.SuspendLayout();
|
||||
this.grpProxy.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpWebUpdate
|
||||
//
|
||||
this.grpWebUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpWebUpdate.Controls.Add(this.btnCheck);
|
||||
this.grpWebUpdate.Controls.Add(this.chkAutoUpdate);
|
||||
this.grpWebUpdate.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpWebUpdate.Location = new System.Drawing.Point(14, 3);
|
||||
this.grpWebUpdate.Name = "grpWebUpdate";
|
||||
this.grpWebUpdate.Size = new System.Drawing.Size(379, 83);
|
||||
this.grpWebUpdate.TabIndex = 0;
|
||||
this.grpWebUpdate.TabStop = false;
|
||||
this.grpWebUpdate.Text = "Web update";
|
||||
//
|
||||
// btnCheck
|
||||
//
|
||||
this.btnCheck.Image = ((System.Drawing.Image)(resources.GetObject("btnCheck.Image")));
|
||||
this.btnCheck.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnCheck.Location = new System.Drawing.Point(19, 44);
|
||||
this.btnCheck.Name = "btnCheck";
|
||||
this.btnCheck.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnCheck.TabIndex = 1;
|
||||
this.btnCheck.Text = "&Check For Updates";
|
||||
this.btnCheck.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||
this.btnCheck.UseVisualStyleBackColor = true;
|
||||
this.btnCheck.Click += new System.EventHandler(this.OnCheckClick);
|
||||
//
|
||||
// chkAutoUpdate
|
||||
//
|
||||
this.chkAutoUpdate.Checked = true;
|
||||
this.chkAutoUpdate.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.chkAutoUpdate.Location = new System.Drawing.Point(19, 20);
|
||||
this.chkAutoUpdate.Name = "chkAutoUpdate";
|
||||
this.chkAutoUpdate.Size = new System.Drawing.Size(184, 18);
|
||||
this.chkAutoUpdate.TabIndex = 0;
|
||||
this.chkAutoUpdate.Text = "Automatically check for updates";
|
||||
this.chkAutoUpdate.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnUpdate
|
||||
//
|
||||
this.btnUpdate.Image = ((System.Drawing.Image)(resources.GetObject("btnUpdate.Image")));
|
||||
this.btnUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnUpdate.Location = new System.Drawing.Point(14, 236);
|
||||
this.btnUpdate.Name = "btnUpdate";
|
||||
this.btnUpdate.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnUpdate.TabIndex = 2;
|
||||
this.btnUpdate.Text = "&Save Settings";
|
||||
this.btnUpdate.Click += new System.EventHandler(this.OnUpdateClick);
|
||||
//
|
||||
// grpProxy
|
||||
//
|
||||
this.grpProxy.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.grpProxy.Controls.Add(this.txtPassword);
|
||||
this.grpProxy.Controls.Add(this.lblPassword);
|
||||
this.grpProxy.Controls.Add(this.txtUserName);
|
||||
this.grpProxy.Controls.Add(this.lblUsername);
|
||||
this.grpProxy.Controls.Add(this.txtAddress);
|
||||
this.grpProxy.Controls.Add(this.lblAddress);
|
||||
this.grpProxy.Controls.Add(this.chkUseHTTPProxy);
|
||||
this.grpProxy.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.grpProxy.Location = new System.Drawing.Point(14, 91);
|
||||
this.grpProxy.Name = "grpProxy";
|
||||
this.grpProxy.Size = new System.Drawing.Size(379, 139);
|
||||
this.grpProxy.TabIndex = 1;
|
||||
this.grpProxy.TabStop = false;
|
||||
this.grpProxy.Text = "Proxy";
|
||||
//
|
||||
// txtPassword
|
||||
//
|
||||
this.txtPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtPassword.Enabled = false;
|
||||
this.txtPassword.Location = new System.Drawing.Point(125, 101);
|
||||
this.txtPassword.Name = "txtPassword";
|
||||
this.txtPassword.PasswordChar = '*';
|
||||
this.txtPassword.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtPassword.TabIndex = 6;
|
||||
//
|
||||
// lblPassword
|
||||
//
|
||||
this.lblPassword.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblPassword.Location = new System.Drawing.Point(19, 101);
|
||||
this.lblPassword.Name = "lblPassword";
|
||||
this.lblPassword.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblPassword.TabIndex = 5;
|
||||
this.lblPassword.Text = "Password";
|
||||
//
|
||||
// txtUserName
|
||||
//
|
||||
this.txtUserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtUserName.Enabled = false;
|
||||
this.txtUserName.Location = new System.Drawing.Point(125, 74);
|
||||
this.txtUserName.Name = "txtUserName";
|
||||
this.txtUserName.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtUserName.TabIndex = 4;
|
||||
//
|
||||
// lblUsername
|
||||
//
|
||||
this.lblUsername.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblUsername.Location = new System.Drawing.Point(19, 74);
|
||||
this.lblUsername.Name = "lblUsername";
|
||||
this.lblUsername.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblUsername.TabIndex = 3;
|
||||
this.lblUsername.Text = "User name";
|
||||
//
|
||||
// txtAddress
|
||||
//
|
||||
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtAddress.Enabled = false;
|
||||
this.txtAddress.Location = new System.Drawing.Point(125, 47);
|
||||
this.txtAddress.Name = "txtAddress";
|
||||
this.txtAddress.Size = new System.Drawing.Size(234, 21);
|
||||
this.txtAddress.TabIndex = 2;
|
||||
//
|
||||
// lblAddress
|
||||
//
|
||||
this.lblAddress.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblAddress.Location = new System.Drawing.Point(19, 47);
|
||||
this.lblAddress.Name = "lblAddress";
|
||||
this.lblAddress.Size = new System.Drawing.Size(100, 21);
|
||||
this.lblAddress.TabIndex = 1;
|
||||
this.lblAddress.Text = "Address";
|
||||
//
|
||||
// chkUseHTTPProxy
|
||||
//
|
||||
this.chkUseHTTPProxy.Location = new System.Drawing.Point(19, 22);
|
||||
this.chkUseHTTPProxy.Name = "chkUseHTTPProxy";
|
||||
this.chkUseHTTPProxy.Size = new System.Drawing.Size(184, 18);
|
||||
this.chkUseHTTPProxy.TabIndex = 0;
|
||||
this.chkUseHTTPProxy.Text = "Use HTTP Proxy";
|
||||
this.chkUseHTTPProxy.UseVisualStyleBackColor = true;
|
||||
this.chkUseHTTPProxy.CheckedChanged += new System.EventHandler(this.OnUseHTTPProxyCheckedChanged);
|
||||
//
|
||||
// btnViewLog
|
||||
//
|
||||
this.btnViewLog.Image = ((System.Drawing.Image)(resources.GetObject("btnViewLog.Image")));
|
||||
this.btnViewLog.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnViewLog.Location = new System.Drawing.Point(148, 236);
|
||||
this.btnViewLog.Name = "btnViewLog";
|
||||
this.btnViewLog.Size = new System.Drawing.Size(128, 28);
|
||||
this.btnViewLog.TabIndex = 3;
|
||||
this.btnViewLog.Text = "&View System Log";
|
||||
this.btnViewLog.Click += new System.EventHandler(this.OnViewLogClick);
|
||||
//
|
||||
// SettingsControl
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnViewLog);
|
||||
this.Controls.Add(this.grpProxy);
|
||||
this.Controls.Add(this.btnUpdate);
|
||||
this.Controls.Add(this.grpWebUpdate);
|
||||
this.Name = "SettingsControl";
|
||||
this.Size = new System.Drawing.Size(406, 327);
|
||||
this.grpWebUpdate.ResumeLayout(false);
|
||||
this.grpProxy.ResumeLayout(false);
|
||||
this.grpProxy.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpWebUpdate;
|
||||
private System.Windows.Forms.Button btnUpdate;
|
||||
private System.Windows.Forms.CheckBox chkAutoUpdate;
|
||||
private System.Windows.Forms.Button btnCheck;
|
||||
private System.Windows.Forms.GroupBox grpProxy;
|
||||
private System.Windows.Forms.TextBox txtPassword;
|
||||
private System.Windows.Forms.Label lblPassword;
|
||||
private System.Windows.Forms.TextBox txtUserName;
|
||||
private System.Windows.Forms.Label lblUsername;
|
||||
private System.Windows.Forms.TextBox txtAddress;
|
||||
private System.Windows.Forms.Label lblAddress;
|
||||
private System.Windows.Forms.CheckBox chkUseHTTPProxy;
|
||||
private System.Windows.Forms.Button btnViewLog;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,182 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Threading;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Configuration;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
using WebsitePanel.Installer.Core;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
|
||||
namespace WebsitePanel.Installer.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Settings control
|
||||
/// </summary>
|
||||
internal partial class SettingsControl : ResultViewControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the SettingsControl class.
|
||||
/// </summary>
|
||||
public SettingsControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows control
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
public override void ShowControl(AppContext context)
|
||||
{
|
||||
base.ShowControl(context);
|
||||
if (!IsInitialized)
|
||||
{
|
||||
AppContext = context;
|
||||
LoadSettings();
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads application settings
|
||||
/// </summary>
|
||||
private void LoadSettings()
|
||||
{
|
||||
InstallerSection appConfig = AppConfigManager.AppConfiguration;
|
||||
chkAutoUpdate.Checked = appConfig.GetBooleanSetting(ConfigKeys.Web_AutoCheck);
|
||||
chkUseHTTPProxy.Checked = appConfig.GetBooleanSetting(ConfigKeys.Web_Proxy_UseProxy);
|
||||
txtAddress.Text = appConfig.GetStringSetting(ConfigKeys.Web_Proxy_Address);
|
||||
txtUserName.Text = appConfig.GetStringSetting(ConfigKeys.Web_Proxy_UserName);
|
||||
txtPassword.Text = appConfig.GetStringSetting(ConfigKeys.Web_Proxy_Password);
|
||||
}
|
||||
|
||||
private void OnUseHTTPProxyCheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
txtAddress.Enabled = chkUseHTTPProxy.Checked;
|
||||
txtUserName.Enabled = chkUseHTTPProxy.Checked;
|
||||
txtPassword.Enabled = chkUseHTTPProxy.Checked;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save application configuration
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnUpdateClick(object sender, EventArgs e)
|
||||
{
|
||||
KeyValueConfigurationCollection settings = AppConfigManager.AppConfiguration.Settings;
|
||||
settings[ConfigKeys.Web_AutoCheck].Value = chkAutoUpdate.Checked.ToString();
|
||||
settings[ConfigKeys.Web_Proxy_UseProxy].Value = chkUseHTTPProxy.Checked.ToString();
|
||||
settings[ConfigKeys.Web_Proxy_Address].Value = txtAddress.Text;
|
||||
settings[ConfigKeys.Web_Proxy_UserName].Value = txtUserName.Text;
|
||||
settings[ConfigKeys.Web_Proxy_Password].Value = txtPassword.Text;
|
||||
//
|
||||
AppConfigManager.SaveConfiguration(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks for updates
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnCheckClick(object sender, EventArgs e)
|
||||
{
|
||||
//start check in the separated thread
|
||||
AppContext.AppForm.StartAsyncProgress("Connecting...", true);
|
||||
ThreadStart threadDelegate = new ThreadStart(StartCheck);
|
||||
Thread newThread = new Thread(threadDelegate);
|
||||
newThread.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starts check
|
||||
/// </summary>
|
||||
private void StartCheck()
|
||||
{
|
||||
bool startUpdate = CheckForUpdate();
|
||||
if (startUpdate)
|
||||
{
|
||||
AppContext.AppForm.Close();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks for update
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private bool CheckForUpdate()
|
||||
{
|
||||
string fileName;
|
||||
bool updateAvailable = false;
|
||||
try
|
||||
{
|
||||
updateAvailable = AppContext.AppForm.CheckForUpdate(out fileName);
|
||||
AppContext.AppForm.FinishProgress();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Service error", ex);
|
||||
AppContext.AppForm.FinishProgress();
|
||||
AppContext.AppForm.ShowServerError();
|
||||
return false;
|
||||
}
|
||||
|
||||
string appName = AppContext.AppForm.Text;
|
||||
if (updateAvailable)
|
||||
{
|
||||
string message = string.Format("This version of {0} is out of date.\nWould you like to download the latest version?", appName);
|
||||
if (MessageBox.Show(AppContext.AppForm, message, appName, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
|
||||
{
|
||||
return AppContext.AppForm.StartUpdateProcess(fileName);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = string.Format("This version of {0} is up to date.", appName);
|
||||
Log.WriteInfo(message);
|
||||
AppContext.AppForm.ShowInfo(message);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void OnViewLogClick(object sender, EventArgs e)
|
||||
{
|
||||
Log.ShowLogFile();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnCheck.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA05JREFUOE+Vk2tI
|
||||
k2EYhtMF/Qqi0haVaaP80jbnnIecNQ+bh5k5yxpump+Zh2EnSbODqalBcxrNkppJTd1Sl3kIKrTylMM0
|
||||
MyxL1LKWqQyMEjpQpnefKwLzVy88f16e++J+3vd+LBb8cxi8TP5KxhrhklXLfWm0hXafP34dGB963/zh
|
||||
/Wjr9M+pJ1T754nBQsyRLd9wkFbbOW7pE6dRBCqKv0fps5H2IB/7dfUIPdsCmaoHwqR7RtczZDXV60jV
|
||||
wjmAnZmdFgHJN25xSuNBNmQi7Xot8l5qIL7cjnDNE8SUvYD4VBsiztZN27kUKikAiyrLv5DNkmvniSsS
|
||||
eL5g49FEIyan+nHXMIR9dc9AthgRWzWA3Wc6kFJ9HduOX5he5XT6KAVYZgasdk73ts9JmnHslCJ2WIY3
|
||||
3wz4OmPEgNEE5esxRLWPgtQPQlrQDaUpGrkmARwj8set7JMFZoCdKEttqWZhbeU28Hvk0EwWYNQ0CaW2
|
||||
A2SPCTsajYjQ9iMs24CMES+kjPHgmnMEa7l5p8yADWT2CHtXOVhRWngm6BB0qBInLjZB2vcJIQYTAmuG
|
||||
IS56hpDjBuRN+CF6iI1Nl/zgKChrMgNsYlN/uElugyVvAjv/OTzL+sG/MQx+zVvwda8gLOqD6HQ3BPKH
|
||||
COhdB+dGa1ir3OHgUzViBtAlKWNMUgVuZD2YUj2YkTqwZKVwjqkAL6UJ/uldECS1w0PagPXFMrDO7QVn
|
||||
jxoMbskfB2xVEeFWj00CPThherj37YR4MA7y1ydBVpfAV94Cr6g28KJbwU9sxtaEeniSNVjDVGT9duCQ
|
||||
EUS43QaxpQLrykVY3CwGrzsBW3oTETJwAJE31fBNNkCY2ozwC72I1vfDJ6Htk5X9EZEZQP3nYlt28VXC
|
||||
ow6EpBAWaiZod9zB6AiHy9N4cJ/GgPtyO/XA5Yi4RiXycCdsXQuyKR39b5AoGpPB0TUQHrWwleVihU4I
|
||||
u8Yw2Dz0hU1HAFy6EsFPq4T3/nY4h1ZpKbHrnCTOZpuCODFcrhQ7eNVi6TERrDWBoN/ngaPNhb/yPoJy
|
||||
W6ftvdUFf8SL/l3C2VFos/Gkb0wPXr31aCndP/4dsUfxhfAqfczgnFdYE6nBs7bnLdI80n9e/AKxCsOV
|
||||
gSO8kwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnUpdate.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAg1JREFUOE+tk+9L
|
||||
U1EYx/fXFPQierHeDXphtZmFUBLcjNYLLcyiH26lkIbZFMfd1cwNXS0N07iL5na31tyVkshl5Cimc7AN
|
||||
8dZWLdLSpTbb+nbvCVYnrAg88Hlznuf5POccnqNSbcR64F+GV8hiaHAeNx0Z2KxpcBYJraYkGuqjBKNh
|
||||
Goa6qSKHK+0o9vZ6sxgVAXPHPP62/I8i2FrmgplNYMv2kp+CYdfiPwWruTwE8QU273ZCV2qiBTy/gNHg
|
||||
+idYWytA4dPnL7gXmMSmXTzU6hpa4LjxDvd9OTSZUsUbFArf8DVfwIePqwTp7SKGPE+J4NTZcVpgs6bg
|
||||
dq/A0DSLaDyN8NQcxsMJPAzNYHgkTOB9EzByPwTHa8doQScnwelcgtkmgamdRNnRx9AcDGDbXjcp+BVN
|
||||
pQB9lUgL2ttmcXtwAb32N+iySrBwSbS2x3CpJYJz5ycIJ888wbETY9BXi2D0flpwuTmOvv4MurolsB0J
|
||||
qEur1kXpzBzx4wAj0ILGizH02NNgLUlS+CqVQV5+QIXsSo7A9gVJbD/jwb4KFy2ovxDF1WtzuNI2Q5KU
|
||||
wopDAoKhGF6/XyIM+KZJTCnWlTtpgUEeU7Mljsbml38U9HsiJKYt51Gy585vAnnGjQ3PcbouRJLuep/B
|
||||
1D0CziHKBAns9QCJ7dAOQLPzFi2Qp0el07aQzf9hIz6y6juAficIctTi+AAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnViewLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAiFJREFUOE+lk/9P
|
||||
EmEcx+tPdLVaqx9arbH1Rbf8ha10Za3N1dJNB6sEhkFcXid+IcRSQjlJhJqAfJETIowvhzlLZjV4znfP
|
||||
c4xDg7a2bnvfPXf7vF/vz/N8dicBnPiviwGa4ld3urhApWr3lzHuK8CyuI1nbz5jjPPAxLkguBZgdQjf
|
||||
l7zevqZHM7MPjhW5FP1SQ0pWkGQqK1gJxzAyFYaYKuInLVrLyrDwc4okpW+q3bPb35KNc1k8tTnBBQuQ
|
||||
9oC4DCR2AU+0BGFyWtIAnZITNH2jSGCxC/hIjemvQHkf2DkAkhRmsgl1DfB8qai2vVlpiK0ZIF5SYH0x
|
||||
geX0HuQfwC8C7CuAN16CwWBMagAzPaxNmVAjwUaJIFYgiFJFtusQnK9hn/Ehla+ARYakAgwmGwmHw90a
|
||||
4Ml8jiY3TO+zNYhbNQQyNbyaFcHzAvS378I8zoHjXmLYYEFkff3GsSmMurYQo8mBTB1+qSHeHUQ+l4fu
|
||||
ei9EiaBn1E+3UseVhwvU2xq9OoUhZwprOdIyT3qQ/5THJV033iUOaEcEV4d8EDOHuPhgvh0wOBGn6UQt
|
||||
ZFpdXoR+4DHM0yH6rqhiyQxwfsDdDrhvj2iFTUPreaglO8QKzvbPVtq20G/9cATQMPwplnymb6Z66tZU
|
||||
VxtAPxbcdYa+dTQyUKfkY1PoNQZO94z4q9eGfdA98uLy4Fv1sC7cc+PcHVfH5I4/09HW/nX9G9TaBKNr
|
||||
RrciAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
115
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.Designer.cs
generated
Normal file
115
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Controls/TopLogoControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,115 @@
|
|||
namespace WebsitePanel.Installer
|
||||
{
|
||||
partial class TopLogoControl
|
||||
{
|
||||
private System.Windows.Forms.Panel pnlLogo;
|
||||
private System.Windows.Forms.PictureBox imgLogo;
|
||||
private System.Windows.Forms.Label lblVersion;
|
||||
private LineBox line;
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if (components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TopLogoControl));
|
||||
this.pnlLogo = new System.Windows.Forms.Panel();
|
||||
this.progressIcon = new WebsitePanel.Installer.Controls.ProgressIcon();
|
||||
this.lblVersion = new System.Windows.Forms.Label();
|
||||
this.imgLogo = new System.Windows.Forms.PictureBox();
|
||||
this.line = new WebsitePanel.Installer.LineBox();
|
||||
this.pnlLogo.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgLogo)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlLogo
|
||||
//
|
||||
this.pnlLogo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlLogo.BackColor = System.Drawing.Color.White;
|
||||
this.pnlLogo.Controls.Add(this.progressIcon);
|
||||
this.pnlLogo.Controls.Add(this.lblVersion);
|
||||
this.pnlLogo.Controls.Add(this.imgLogo);
|
||||
this.pnlLogo.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlLogo.Name = "pnlLogo";
|
||||
this.pnlLogo.Size = new System.Drawing.Size(496, 63);
|
||||
this.pnlLogo.TabIndex = 2;
|
||||
//
|
||||
// progressIcon
|
||||
//
|
||||
this.progressIcon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.progressIcon.Location = new System.Drawing.Point(452, 15);
|
||||
this.progressIcon.Name = "progressIcon";
|
||||
this.progressIcon.Size = new System.Drawing.Size(30, 30);
|
||||
this.progressIcon.TabIndex = 4;
|
||||
this.progressIcon.Visible = false;
|
||||
//
|
||||
// lblVersion
|
||||
//
|
||||
this.lblVersion.Font = new System.Drawing.Font("Verdana", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.lblVersion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.lblVersion.Location = new System.Drawing.Point(317, 31);
|
||||
this.lblVersion.Name = "lblVersion";
|
||||
this.lblVersion.Size = new System.Drawing.Size(42, 13);
|
||||
this.lblVersion.TabIndex = 2;
|
||||
this.lblVersion.Text = "v1.0";
|
||||
//
|
||||
// imgLogo
|
||||
//
|
||||
this.imgLogo.Image = ((System.Drawing.Image)(resources.GetObject("imgLogo.Image")));
|
||||
this.imgLogo.Location = new System.Drawing.Point(13, 7);
|
||||
this.imgLogo.Name = "imgLogo";
|
||||
this.imgLogo.Size = new System.Drawing.Size(303, 48);
|
||||
this.imgLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.imgLogo.TabIndex = 0;
|
||||
this.imgLogo.TabStop = false;
|
||||
//
|
||||
// line
|
||||
//
|
||||
this.line.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.line.Location = new System.Drawing.Point(0, 61);
|
||||
this.line.Name = "line";
|
||||
this.line.Size = new System.Drawing.Size(496, 2);
|
||||
this.line.TabIndex = 3;
|
||||
this.line.TabStop = false;
|
||||
//
|
||||
// TopLogoControl
|
||||
//
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.Controls.Add(this.line);
|
||||
this.Controls.Add(this.pnlLogo);
|
||||
this.Name = "TopLogoControl";
|
||||
this.Size = new System.Drawing.Size(496, 64);
|
||||
this.pnlLogo.ResumeLayout(false);
|
||||
this.pnlLogo.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgLogo)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
private WebsitePanel.Installer.Controls.ProgressIcon progressIcon;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.Windows.Forms;
|
||||
using System.Reflection;
|
||||
|
||||
namespace WebsitePanel.Installer
|
||||
{
|
||||
/// <summary>
|
||||
/// Top logo
|
||||
/// </summary>
|
||||
internal partial class TopLogoControl : UserControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the TopLogoControl class.
|
||||
/// </summary>
|
||||
public TopLogoControl()
|
||||
{
|
||||
// This call is required by the Windows Form Designer.
|
||||
InitializeComponent();
|
||||
lblVersion.Text = "v" + this.GetType().Assembly.GetName().Version.ToString(3);
|
||||
}
|
||||
|
||||
internal void ShowProgress()
|
||||
{
|
||||
progressIcon.Visible = true;
|
||||
progressIcon.StartAnimation();
|
||||
}
|
||||
|
||||
internal void HideProgress()
|
||||
{
|
||||
progressIcon.Visible = false;
|
||||
progressIcon.StopAnimation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="imgLogo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
R0lGODlhLwEwAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8P
|
||||
DxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMj
|
||||
IyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3
|
||||
Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktL
|
||||
S0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9f
|
||||
X2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNz
|
||||
c3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeH
|
||||
h4iIiImJiYuLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5yc
|
||||
nJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7Cw
|
||||
sLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TE
|
||||
xMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY
|
||||
2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs
|
||||
7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///wAA
|
||||
ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQJAAD/ACwAAAAALwEwAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAj
|
||||
SpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0BT+htKtKjR
|
||||
o0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3DjyjVb7xcucl3x6Zvr
|
||||
FhyuYPn4ZuV37Na1otxuEQtslp24cvuUqhP3Tqljc/yicqMQwBPXZDN6HPbabhy50+TMsRNctFEADuuW
|
||||
wjONutxe1kTrzQjgpiigACjcnVUEwYKwpO5cPLDSDym9HRCW4NMcAQAnrmUAABD0NUyECeAlWP8YMcSQ
|
||||
ONaLAGSIrVQQhAkUJkjAgA13bhgA2BT1A6CEcLO/CAAAH0npoh0F5SD1DAEA1CEVNxIA0AlXqjRQATBG
|
||||
1RNMOFdJod2HIHLAimCMAKABe0npEUAA2gmggDVjTZOMVfXEAEAbRf0BgAn/lSVPCQD0cJtReXwYC1KT
|
||||
ABAALw9GOCFX23BY1DYtECDLVVQA4MIvwgSDSyVOCNhAMHyVeOJS7GizBwASAMMNY2CB0UAYNNqII1E6
|
||||
8ogWGQA40M1R+9QwAAMAwIGUFQB8gOJTEEpIVjLa1YIlAD4cxckBAAwRmVxmLpoUJABUcN5YLQBgRp03
|
||||
5rhjj2Whop0oR1H/o8AFRgAwA5xDvfMBAFVM1eiTYjUj4C2T8jAkUVkAwACMnJroKVKNhOoNWTMAcAaq
|
||||
dw6VJ6tkjTMBAHQahQkAMVwCgALUGAUMg5sclQ8zsLhyDD1H/TqUO8K4Qos2S42zyyq0KEMvUfios86m
|
||||
8LCzi4CntLMOO5sSpY8zsbhSjDxIZWnsUZ9ol0tR9TwzC8D8HkWPOu40tw/Fr0TDVDq9tFJLNkh12lS0
|
||||
FUxLVDzqwDNUPci8IgvNSfVjDS2r5GJNZv7YY7ALAHjBzjrq2GNUOsO4woov6hxVY6p4ropUPMS4Igs0
|
||||
ERO8zjp75ZOMLuAwxY8SO2JcVBQApMENoZkY/2UIAA0wS5QpNRig3QAstItYhJ/w04gIH0IwheBEVcPF
|
||||
t9oVoEIzRNWSgQijQXFBhABAcMF42xTFSg6YAiBACpU0V5TGxw7lina0DEUOICu0XjoW3xhVSAY/4DMM
|
||||
Dwwq20TJRp1DhwYfOuDEM0bZzBTOOg9FRgZY+LPKC5GHkc5RtAixwIcMPDGPP5lYYAGDCZxugSZD9WOM
|
||||
FxmA+IEhuH6drT/bMoo9GGECFgEgAT3AhVF2kYEMYCMbPygAAMZwMwAQwBhFQQf0TOEPGwCge0UhAgBs
|
||||
MKR92EE7GjBCEfIHAD8szjptMBERkBAC7YRgGkVxhgcAYAAbNIEHFwDAlf+GwgoeSmMoSWiAArSTgAYw
|
||||
QAMl60cfWHSBIhhhA9qxg+yGQrujVAIAAyDGUM6gnQ8AgQko0M4N2lGUE7rAFAlwQBCQsEMAwKBrU6qB
|
||||
dlzQBBwYTgMzIor1loK9okABAEnIBACqSIQKaKcJViNKJgxHgR8wIQYLiEBsKMGABgwAAAVogBMrMZR2
|
||||
gICHLEBCERw5oC36T1V6Ioo78NafJfzAAefiIFFmoR1c2MgCEADhUp6BKUQUpRali9sdAACCygxlHEHM
|
||||
Q1EeoaQ5mGMo5RADGHVBlEbNAAGGwGM7DmG4H0RyH0cAgAjIpDtMMIMorTgXDv0hDmy0QkCayAY2tDH/
|
||||
HX+MCwBrwIs/zqEG1x2JKF0sCj9E+AE2+mMLPJiFM+ehB+1Qoih4AAAFHFAFnaVDmwAwJlHkwQMAbKAV
|
||||
/QyGCUa4vqEMUimFJMoU1MOAN5xjKN9IJwBWQRRvfKsJcfNHP6jxCOG04xrZWAEArqDPa/wHHSRIgzMY
|
||||
040eAI5o/nhl2GLpD36MAQALmEQ8hmINICwye7QAwAGaYAFTiCMbzdhiUuxhIyMU5Q2ZiswtBECAX+wS
|
||||
jAocSje+pQaj3MODT+gm6RhxFD5oZ4jkiFAilhJPBcxzKM8QUGCJMo78hYtgPgDAESKWpR4YRR+BEBCB
|
||||
hrKMgeWmVE/YYkYB8IN6/xQlHicAAA62GC0F9MIoujBcKwTprArmrCgzBQAYjKKNCHWBKKcAI/WWUi00
|
||||
HEUeyziKMD55nZ/ZCZY92msALmEUbgQREERJawB8KxU5aHQc3gXAIIayDg4AIBBEcS8HVjOUQixSoEWJ
|
||||
hHqu6Q9v9rMo58hfGoYCDggAwA6UlWdRliEgSRUFVBPIniRLB18uAkAG0KCGNIaRiSJoxwcOVUp2aBBJ
|
||||
f2Q0AMQyCl41MD5/zANqYjgKP/RYBuKe6XrSQm6fKDcUut2gn6JwHZOWIgNTPYUep+xDbr671R5lCQdp
|
||||
G0oXKHWbtC51KrdYkSswWwABFAOhAABCZvBxAwBYgf8o6ARAE+oxjzrXmR5FFEB2CxyhPSQlCZSKTD5w
|
||||
0KdM2BYplb2sPygMAAsTpQmZorOd50GPXLgOQx4OQAEKkDztPAHARnmHN5KRCrOywG4uBgAGbmoUSwBg
|
||||
AtwYSjQkOAp6TJrSiPqB7F6alJgOZaYxYFpR2AAAFNhtGudbAaaT0uRTKYUf6cDGLyqBAQDIYcpg05bY
|
||||
/NGOXfFB0namB3804Ewvg2Iq7OhAfobiiB35bCiujkDwtHE+8g4lHipgEwtUwG9+s2BXAPArnwGAiaRk
|
||||
RwX3GAovSDeDR3S4KImecIWLsg8WACACK+g3v1cAOQDAAs0BIAABCvCAEkRhFbj/Gooz+BCEEhDqQytA
|
||||
dUZT4MyijOLi9fEHLGyYcY2v4AEfjiSvoRVkmWYKKUUawViHMgjtrJUVri1Ks5GCj1iQwQYd6DQA4oDt
|
||||
/wXQH9NogEn3rXEWBNEBCfKHl8U4FSxoaTpMUG5RpoEAAKjCH0lOQDWIwo4drghELTKAAXYxFHshhYwo
|
||||
aDEymCBB9eyBVREnCqMd7Y8fKcmAIAqA4Ifr4RlQ4xrY8EaKi5IPPixRWStQAht0AICYEyWjKnh3UUiB
|
||||
86GEQjt/BzwBDECDlg79KL72x0yLgJSKKp0o/SBFk7UDA1gZZepGEQcSPmSBGlSBDfnjeny9vm1lGC73
|
||||
IBqA/wEmEFQvv3MqnQAAAqbBDkfqcij4oIG1/PFVGxz4HSRwszOUwf/+9//dhncUWUJCRdEPw1AGrKQD
|
||||
UuIPkcdaE0cwaRQFzOB/FJhipdUUScIrszAOA1MkrjcUsCd7REF7EZBzquA6nzCBFMh/1MA0v2cUwTd8
|
||||
xQcAx1cU9LAKTdA6aoAr0EcwdAMBeWAM7JBw/WAj2pdVVKZtsfQMSxQIzbCC/NcM/eRlnDMV2oBLm1AL
|
||||
AQABf1IU7vUC6GBxdFAU+EBovdIUjTIJSHEPTXYFScENYsAiPTYUDbhoD0gUOwAASvAUCZUU96BUUSBs
|
||||
Q1FQH5hqsXcUJJhzwvBYTvGCrf9RdL8GAMR3FMa3dEdBDG1md1LnZEWxXQHQXUTxDrl1hFqlhP8RDhYA
|
||||
AJPVFFRIFfvwAwDwBUXyA4LoD8i0AKZAKB9TFF/FATW2FI3iBUihDJjyCM82fSYwMHXIaLlzV4uUdkzR
|
||||
h0jBDUBnCUbBD7BYiCGIiLXnD+WQivrRFI5IFDEoiTNYg0jRDak4h0PRZGQgLn2SOkVhDUtEikkIQNu2
|
||||
YwAQBHKVFK1IFYIAADWgR4RwFAkmAE8gABvwi0PhZVJ2FPdgiY3iAIEEZzMVAV2YZUMRBzuijBJGFM9g
|
||||
OKNgFLzwSWMIkZboD9J4FFd4X0ZBCxKkjQBwiEaRiPVzBa//5gxIoQ5bNI5DQU2iImSTaBSVOBQa6Q/5
|
||||
9o5EQWiJVRSudgDnRxRroB32mG34yFX+VQB3dxTwkHANqR1VOBXFMAAIMHLDgBRPoH4AIAVHYQ+1YgCE
|
||||
wF+VZwtEIHADFwAiYJfoEEMA8AdEQQ1ooAxwMg0rpQXw9JG6E0RTMB34EBj64AQW5Ad4ZGO6QAS76GEb
|
||||
oxT0kEYfcH79cAsbkGwyN5MiOBQ2ORTHQCgnsAtwQg6JsAQ9WVxKAQ/ioCMTYAzkcBsySIk0uHSkwAdB
|
||||
5Q/7cAoJAAChUBRuhwHMYlu+ICBVwB7xUAgGUI9dB15EQQ6QUwGi4FrsEApB8HD/OBXy/5BbAEACLWUU
|
||||
GUhwSJFU2jECVEAGVmBxAHAchVcdanABASAEY3AFNQQAVOBa0MBDOcAFY7AEDvYB6UKHB6Ro/eB2unUF
|
||||
QZBz3QA+ABACU1AGVwA1ALBkkbgDtXMUkqAdEPAEYWBWRnBwqLZMKVCa/nBzEJBzQ1EJhjMAOeAFYoAE
|
||||
QfQCRZEe67EUgQABxQkAD0AfQ+EhRIB06rR00UIBRRAGX9ADLMIEUZcKZXQFRNAu+ABoO8IFXZACD9Zk
|
||||
hvIz+BGOQ8Ef/lEUuYA5MLAFZPAENQQBrKZ2YGkVabBp7GgU0eAABRABilYU4BAGQAciLjAJrtUNF1AA
|
||||
pZAMy4dCgP9waM8UBJ/0IQpABYr2CiSXoETRDSWlHQ0gj/5ADmXgYCDCAo5wnv5wBQUABB9qFPtACBTw
|
||||
IQGABe3ABwXwAqi2BwXgAixqCgVgAVg1FLBQA5gHVk9wlkThCAWgKEuRB3y1aWS5d/5gBQWQBEjRBwVw
|
||||
AkunC0ACIhpgB6WpD3MQpABASp8qBY33aowwDzVQACeZVesapkMhCJrDLciABIbzIQTQA6wQMbWwaTpZ
|
||||
Fe/ADdxQc6wKDtwADrVYXqoQCZEwCsxgqv6QD9/ADWM1D7xQCZMgCwRmWM4gCo4ACarwq0MxD9zgDQdG
|
||||
FJVmCZ7QDFnmDawgCZAgCsuAakRxDtyWQA79mBTeYAqO0Alx5Q/rwA3iIGzsILQJKw8lm3JZdQyd4AiW
|
||||
IAtdWBQBCw5HyXcCe7XdwBg2C41FUbThIGztAAya0AiUcAsbexTO0AmXgAuotg/KoAmPoAqjIg7cgCL9
|
||||
MA51WxTtwA1fCyjRIAqPMAmrYA21Qw8Ce7L2kbiKu7iM27iO+7iQG7mSO7mUW7mWe7mYm7maOLu5nNu5
|
||||
nvu5oBu6lhsUpFu6pnu6qJu6qru6rNu6rvu6sBu7sju7tFu7tnu7uJu7uru7vNu7DxEQADs=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
255
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs
Normal file
255
WebsitePanel.Installer/Sources/WebsitePanel.Installer/Program.cs
Normal file
|
@ -0,0 +1,255 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
|
||||
using WebsitePanel.Installer.Common;
|
||||
using WebsitePanel.Installer.Services;
|
||||
using System.Xml;
|
||||
using System.Runtime.Remoting.Lifetime;
|
||||
using System.Security.Principal;
|
||||
using WebsitePanel.Installer.Core;
|
||||
using WebsitePanel.Installer.Configuration;
|
||||
using System.Reflection;
|
||||
|
||||
namespace WebsitePanel.Installer
|
||||
{
|
||||
/// <summary>
|
||||
/// Entry point class
|
||||
/// </summary>
|
||||
static class Program
|
||||
{
|
||||
public const string SetupFromXmlFileParam = "setupxml";
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
//
|
||||
Utils.FixConfigurationSectionDefinition();
|
||||
|
||||
//check security permissions
|
||||
if (!Utils.CheckSecurity())
|
||||
{
|
||||
ShowSecurityError();
|
||||
return;
|
||||
}
|
||||
|
||||
//check administrator permissions
|
||||
if (!Utils.IsAdministrator())
|
||||
{
|
||||
ShowSecurityError();
|
||||
return;
|
||||
}
|
||||
|
||||
//check for running instance
|
||||
if ( !Utils.IsNewInstance())
|
||||
{
|
||||
UiUtils.ShowRunningInstance();
|
||||
return;
|
||||
}
|
||||
|
||||
Log.WriteApplicationStart();
|
||||
//AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);
|
||||
Application.ApplicationExit += new EventHandler(OnApplicationExit);
|
||||
Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
//check OS version
|
||||
Log.WriteInfo("{0} detected", Global.OSVersion);
|
||||
|
||||
//check IIS version
|
||||
if (Global.IISVersion.Major == 0)
|
||||
Log.WriteError("IIS not found.");
|
||||
else
|
||||
Log.WriteInfo("IIS {0} detected", Global.IISVersion);
|
||||
|
||||
ApplicationForm mainForm = new ApplicationForm();
|
||||
|
||||
if (!CheckCommandLineArgument("/nocheck"))
|
||||
{
|
||||
//Check for new versions
|
||||
if (CheckForUpdate(mainForm))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Load setup parameters from an XML file
|
||||
LoadSetupXmlFile();
|
||||
//start application
|
||||
mainForm.InitializeApplication();
|
||||
Application.Run(mainForm);
|
||||
//
|
||||
Utils.SaveMutex();
|
||||
}
|
||||
|
||||
private static void LoadSetupXmlFile()
|
||||
{
|
||||
string file = GetCommandLineArgumentValue(SetupFromXmlFileParam);
|
||||
if (!string.IsNullOrEmpty(file))
|
||||
{
|
||||
if (FileUtils.FileExists(file))
|
||||
{
|
||||
try
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.Load(file);
|
||||
Global.SetupXmlDocument = doc;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("I/O error", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Application thread exception handler
|
||||
/// </summary>
|
||||
static void OnThreadException(object sender, ThreadExceptionEventArgs e)
|
||||
{
|
||||
Log.WriteError("Fatal error occured.", e.Exception);
|
||||
string message = "A fatal error has occurred. We apologize for this inconvenience.\n" +
|
||||
"Please contact Technical Support at support@websitepanel.net.\n\n" +
|
||||
"Make sure you include a copy of the Installer.log file from the\n" +
|
||||
"WebsitePanel Installer home directory.";
|
||||
MessageBox.Show(message, "WebsitePanel Installer", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Application exception handler
|
||||
/// </summary>
|
||||
static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
Log.WriteError("Fatal error occured.", (Exception)e.ExceptionObject);
|
||||
string message = "A fatal error has occurred. We apologize for this inconvenience.\n" +
|
||||
"Please contact Technical Support at support@websitepanel.net.\n\n" +
|
||||
"Make sure you include a copy of the Installer.log file from the\n" +
|
||||
"WebsitePanel Installer home directory.";
|
||||
MessageBox.Show(message, "WebsitePanel Installer", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
private static void ShowSecurityError()
|
||||
{
|
||||
string message = "You do not have the appropriate permissions to perform this operation. Make sure you are running the application from the local disk and you have local system administrator privileges.";
|
||||
MessageBox.Show(message, "WebsitePanel Installer", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Writes to log on application exit
|
||||
/// </summary>
|
||||
private static void OnApplicationExit(object sender, EventArgs e)
|
||||
{
|
||||
Log.WriteApplicationEnd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check whether application is up-to-date
|
||||
/// </summary>
|
||||
private static bool CheckForUpdate(ApplicationForm mainForm)
|
||||
{
|
||||
if (!AppConfigManager.AppConfiguration.GetBooleanSetting(ConfigKeys.Web_AutoCheck))
|
||||
return false;
|
||||
|
||||
string appName = mainForm.Text;
|
||||
string fileName;
|
||||
bool updateAvailable;
|
||||
try
|
||||
{
|
||||
updateAvailable = mainForm.CheckForUpdate(out fileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError("Update error", ex);
|
||||
mainForm.ShowServerError();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (updateAvailable)
|
||||
{
|
||||
string message = string.Format("An updated version of {0} is available now.\nWould you like to download and install the latest version?", appName);
|
||||
if (MessageBox.Show(message, appName, MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
|
||||
{
|
||||
return mainForm.StartUpdateProcess(fileName);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check for existing command line argument
|
||||
/// </summary>
|
||||
private static bool CheckCommandLineArgument(string argName)
|
||||
{
|
||||
string[] args = Environment.GetCommandLineArgs();
|
||||
for (int i = 1; i < args.Length; i++)
|
||||
{
|
||||
string arg = args[i];
|
||||
if (string.Equals(arg, argName, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check for existing command line argument
|
||||
/// </summary>
|
||||
private static string GetCommandLineArgumentValue(string argName)
|
||||
{
|
||||
string key = "/"+argName.ToLower()+":";
|
||||
string[] args = Environment.GetCommandLineArgs();
|
||||
for (int i = 1; i < args.Length; i++)
|
||||
{
|
||||
string arg = args[i].ToLower();
|
||||
if (arg.StartsWith(key))
|
||||
{
|
||||
return arg.Substring(key.Length);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// 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 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.
|
||||
//
|
||||
// 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.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 Installer")]
|
||||
[assembly: AssemblyDescription("WebsitePanel Installer")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("WebsitePanel Installer")]
|
||||
[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("45D4837C-45BA-426A-B41C-BCD17AD97FCD")]
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue