├── ThirdParty
├── NLog.dll
├── CBFS
│ ├── x64
│ │ ├── CBFS5Net.dll
│ │ ├── msvcp100.dll
│ │ └── msvcr100.dll
│ └── 32bit
│ │ ├── CBFS5Net.dll
│ │ ├── msvcp100.dll
│ │ └── msvcr100.dll
└── CBFSWixCA
│ ├── resource.h
│ ├── CBFSWixCA.rc
│ ├── CustomAction.def
│ ├── CBFS Installer
│ ├── Drivers
│ │ └── cbfs.cab
│ ├── 32bit
│ │ └── CBFSInst.dll
│ └── cbfsinst.h
│ ├── TestTheCBFSInstall
│ ├── AnyCPU
│ │ └── LiquesceSvc.exe
│ ├── TestTheCBFSInstall.wixproj.vspscc
│ └── TestTheCBFSInstall.wixproj
│ ├── CBFSWixCA.vcxproj.vspscc
│ ├── stdafx.cpp
│ ├── ExtractUtils.h
│ ├── stdafx.h
│ ├── DllMain.cpp
│ ├── targetver.h
│ ├── CBFSInstWrapper.cpp
│ ├── ExtractUtils.cpp
│ └── CBFSWixCA.vcxproj.filters
├── Liquesce
├── Liquesce.ico
├── Resources
│ ├── Liquesce.ico
│ ├── Mart-Glaze-Log.ico
│ ├── Umut-Pulat-Tulliana-2-K-ppp.ico
│ ├── Umut-Pulat-Tulliana-2-Log.ico
│ ├── Umut-Pulat-Tulliana-2-Kontact.ico
│ ├── Umut-Pulat-Tulliana-2-Nfs-mount.ico
│ ├── Umut-Pulat-Tulliana-2-K-cm-system.ico
│ ├── Umut-Pulat-Tulliana-2-K-color-edit.ico
│ ├── Umut-Pulat-Tulliana-2-Nfs-unmount.ico
│ └── Umut-Pulat-Tulliana-2-3floppy-mount.ico
├── Liquesce.csproj.vspscc
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
├── Tabs
│ ├── CurrentShares.rtf
│ ├── ITab.cs
│ ├── Welcome.rtf
│ ├── MountingPoints.cs
│ ├── Welcome.cs
│ ├── Welcome.Designer.cs
│ └── CurrentShares.cs
├── Shared
│ ├── FlickerFreeRichEditTextBox.cs
│ └── SplitContainerEx.cs
├── ExpectedDetailResult.cs
├── DragDropItem.cs
├── app.manifest
├── App.config
├── LogDisplay.cs
├── Program.cs
└── TabMainForm.cs
├── LiquesceSvc
├── Liquesce.ico
├── LiquesceSvc.csproj.vspscc
├── CachedRootPathsSystemInfo.cs
├── LowLevelOSAccess
│ ├── HGlobal.cs
│ ├── SafeHGlobalHandle.cs
│ └── Win32Structs.cs
├── LiquesceService.Designer.cs
├── ProjectInstaller.cs
├── Salt.cs
├── app.manifest
├── LiquesceCallBackFacade.cs
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
├── ProjectInstaller.Designer.cs
├── LiquesceFacade.cs
└── Program.cs
├── LiquesceTray
├── Icons
│ ├── OK.ico
│ ├── Stop.ico
│ ├── base.ico
│ ├── drop.ico
│ ├── drop.png
│ ├── info.ico
│ ├── Config.ico
│ ├── Error.ico
│ ├── Warning.ico
│ ├── backup.ico
│ ├── Liquesce.ico
│ ├── Question.ico
│ ├── free_space.ico
│ ├── pie_chart_icon.png
│ └── admin_GetBackUp.png
├── Resources
│ ├── Stop.ico
│ ├── Liquesce.ico
│ └── Question.ico
├── LiquesceTray.csproj.vspscc
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
├── DoubleProgressBar.cs
├── HiddenFormToAcceptCloseMessage.cs
├── TransparentLabel.cs
├── App.config
├── app.manifest
├── HiddenFormToAcceptCloseMessage.Designer.cs
├── FreeSpace.Designer.cs
├── StateChangeHandler.cs
├── DropZone.Designer.cs
├── WindowLocation.cs
├── DropZone.cs
└── Program.cs
├── Liquesce_Setup
├── Banner.bmp
├── Liquesce_Setup.wixproj.vspscc
├── Liquesce_Setup.wixproj
├── CBFS.wxs
├── Service.wxs
└── Client.wxs
├── LiquesceFaçade
├── Liquesce.ico
├── LiquesceFacade.csproj.vspscc
├── ILiquesce.cs
├── ILiquesceCallBack.cs
├── LiquesceProxy.cs
├── Properties
│ └── AssemblyInfo.cs
├── Utils.cs
├── LiquesceCallBackProxy.cs
└── RWLSExtension.cs
├── LiquesceTrayHelper
├── Warning.ico
├── LiquesceTrayHelper.csproj.vspscc
├── app.manifest
├── Properties
│ └── AssemblyInfo.cs
└── Program.cs
├── Liquesce.vssscc
└── README.md
/ThirdParty/NLog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/NLog.dll
--------------------------------------------------------------------------------
/Liquesce/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceSvc/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceSvc/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/OK.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/OK.ico
--------------------------------------------------------------------------------
/Liquesce_Setup/Banner.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce_Setup/Banner.bmp
--------------------------------------------------------------------------------
/LiquesceFaçade/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceFaçade/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Stop.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Stop.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/base.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/base.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/drop.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/drop.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/drop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/drop.png
--------------------------------------------------------------------------------
/LiquesceTray/Icons/info.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/info.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Config.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Config.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Error.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Error.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Warning.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Warning.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/backup.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/backup.ico
--------------------------------------------------------------------------------
/LiquesceTrayHelper/Warning.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTrayHelper/Warning.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/Question.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/Question.ico
--------------------------------------------------------------------------------
/LiquesceTray/Resources/Stop.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Resources/Stop.ico
--------------------------------------------------------------------------------
/ThirdParty/CBFS/x64/CBFS5Net.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/x64/CBFS5Net.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFS/x64/msvcp100.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/x64/msvcp100.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFS/x64/msvcr100.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/x64/msvcr100.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/resource.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFSWixCA/resource.h
--------------------------------------------------------------------------------
/LiquesceTray/Icons/free_space.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/free_space.ico
--------------------------------------------------------------------------------
/LiquesceTray/Resources/Liquesce.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Resources/Liquesce.ico
--------------------------------------------------------------------------------
/LiquesceTray/Resources/Question.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Resources/Question.ico
--------------------------------------------------------------------------------
/ThirdParty/CBFS/32bit/CBFS5Net.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/32bit/CBFS5Net.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFS/32bit/msvcp100.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/32bit/msvcp100.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFS/32bit/msvcr100.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFS/32bit/msvcr100.dll
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFSWixCA.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFSWixCA/CBFSWixCA.rc
--------------------------------------------------------------------------------
/Liquesce/Resources/Mart-Glaze-Log.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Mart-Glaze-Log.ico
--------------------------------------------------------------------------------
/LiquesceTray/Icons/pie_chart_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/pie_chart_icon.png
--------------------------------------------------------------------------------
/LiquesceTray/Icons/admin_GetBackUp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/LiquesceTray/Icons/admin_GetBackUp.png
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CustomAction.def:
--------------------------------------------------------------------------------
1 | LIBRARY "CBFSWixCA"
2 |
3 | EXPORTS
4 |
5 | InstallCBFS_CA
6 | UninstallCBFS_CA
7 |
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-ppp.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-ppp.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-Log.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-Log.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-Kontact.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-Kontact.ico
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFS Installer/Drivers/cbfs.cab:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFSWixCA/CBFS Installer/Drivers/cbfs.cab
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-Nfs-mount.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-Nfs-mount.ico
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFS Installer/32bit/CBFSInst.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFSWixCA/CBFS Installer/32bit/CBFSInst.dll
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-cm-system.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-cm-system.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-color-edit.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-K-color-edit.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-Nfs-unmount.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-Nfs-unmount.ico
--------------------------------------------------------------------------------
/Liquesce/Resources/Umut-Pulat-Tulliana-2-3floppy-mount.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/Liquesce/Resources/Umut-Pulat-Tulliana-2-3floppy-mount.ico
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/TestTheCBFSInstall/AnyCPU/LiquesceSvc.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Smurf-IV/Liquesce/HEAD/ThirdParty/CBFSWixCA/TestTheCBFSInstall/AnyCPU/LiquesceSvc.exe
--------------------------------------------------------------------------------
/Liquesce.vssscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "1"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT"
10 | }
11 |
--------------------------------------------------------------------------------
/Liquesce/Liquesce.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/LiquesceSvc/LiquesceSvc.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/LiquesceFaçade/LiquesceFacade.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/LiquesceTray/LiquesceTray.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/Liquesce_Setup/Liquesce_Setup.wixproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFSWixCA.vcxproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/LiquesceTrayHelper/LiquesceTrayHelper.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // CBFSWixCA.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/TestTheCBFSInstall/TestTheCBFSInstall.wixproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/ExtractUtils.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Scoping class to ensure that the extracted resource is tidied up
4 | class CExtractUtils
5 | {
6 | public:
7 | CExtractUtils(const HINSTANCE hInstance, const WORD & resourceID);
8 | virtual ~CExtractUtils();
9 |
10 | bool ExtractResource();
11 |
12 | TCHAR m_szOutputFilename[MAX_PATH+1];
13 |
14 | private:
15 | bool CreateTempFile();
16 | const HINSTANCE m_hInstance;
17 | const WORD m_wResourceID;
18 | };
19 |
20 |
--------------------------------------------------------------------------------
/LiquesceTray/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | True
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
11 | // Windows Header Files:
12 | #include
13 | #include
14 | #include
15 | #include
16 |
17 | // WiX Header Files:
18 | #include
19 |
20 | #include
21 | #include
22 | // TODO: reference additional headers your program requires here
23 |
24 | #include
25 |
--------------------------------------------------------------------------------
/Liquesce/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | True
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/DllMain.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "stdafx.h"
3 |
4 | /*
5 | hInst : A handle to the DLL module. The value is the base address of the DLL.
6 | The HINSTANCE of a DLL is the same as the HMODULE of the DLL, so hinstDLL
7 | can be used in calls to functions that require a module handle.
8 | */
9 | HINSTANCE g_hInst = NULL;
10 |
11 | // DllMain - Initialize and cleanup WiX custom action utils.
12 | extern "C" BOOL WINAPI DllMain(
13 | __in HINSTANCE hInst,
14 | __in ULONG ulReason,
15 | __in LPVOID
16 | )
17 | {
18 | switch(ulReason)
19 | {
20 | case DLL_PROCESS_ATTACH:
21 | g_hInst = hInst;
22 | WcaGlobalInitialize(hInst);
23 | break;
24 |
25 | case DLL_PROCESS_DETACH:
26 | g_hInst = NULL;
27 | WcaGlobalFinalize();
28 | break;
29 | }
30 |
31 | return TRUE;
32 | }
33 |
--------------------------------------------------------------------------------
/LiquesceSvc/CachedRootPathsSystemInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using LiquesceFacade;
5 |
6 | namespace LiquesceSvc
7 | {
8 | internal class CachedRootPathsSystemInfo : CacheHelper
9 | {
10 | public CachedRootPathsSystemInfo(uint cacheLifetimeSeconds)
11 | : base(cacheLifetimeSeconds, true, StringComparer.OrdinalIgnoreCase)
12 | {
13 | // StringComparer.OrdinalIgnoreCase because windows is WriteSensitive
14 | // BUT search ignore
15 | }
16 |
17 | public void RemoveAllTargetDirsFromLookup(string removeDirSource)
18 | {
19 | using (cacheLock.WriteLock())
20 | {
21 | List toBeRemoved = Cache.Keys.Where(key => key.StartsWith(removeDirSource)).ToList();
22 | foreach (string s in toBeRemoved)
23 | {
24 | Cache.Remove(s);
25 | }
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Liquesce/Tabs/CurrentShares.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset2 Symbol;}}
2 | {\colortbl ;\red255\green0\blue0;}
3 | {\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang2057\f0\fs18 The current active 'Mount Points' owned by Liquesce will need to be \cf1\b active\b0 \cf0 for this page to work correctly.\par
4 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360 Once mounts are working, create shared folder(s) via windows.\par
5 | {\pntext\f1\'B7\tab}Next, Press refresh, and check that the share details shown here are correct.\par
6 | {\pntext\f1\'B7\tab}Once correct, press save in the Service Settings tab. \par
7 | {\pntext\f1\'B7\tab}When Liquesce restarts it will then re-enable these shares.\par
8 | \pard\sa200\sl276\slmult1\lang9\i Note:\line\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360\sa200\sl276\slmult1 Initial display will be from the last stored Liquesce configuration.\i0\par
9 | }
10 |
--------------------------------------------------------------------------------
/LiquesceSvc/LowLevelOSAccess/HGlobal.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 | using Microsoft.Win32.SafeHandles;
4 |
5 | namespace LiquesceSvc.LowLevelOSAccess
6 | {
7 | ///
8 | /// Stoeln from https://stackoverflow.com/questions/3525932/should-marshal-freehglobal-be-placed-in-a-finally-block-to-ensure-resources-are
9 | ///
10 | ///
11 | ///
12 | /// using (var h = new HGlobal(buffer.Length))
13 | /// {
14 | /// h.WriteArray(0, buffer, 0, buffer.Length);
15 | /// }
16 | ///
17 | ///
18 | internal class HGlobal : SafeHandleZeroOrMinusOneIsInvalid
19 | {
20 | public HGlobal(int cb)
21 | : base(true)
22 | {
23 | SetHandle(Marshal.AllocHGlobal(cb));
24 | }
25 |
26 | protected override bool ReleaseHandle()
27 | {
28 | Marshal.FreeHGlobal(handle);
29 | return true;
30 | }
31 |
32 | public static implicit operator IntPtr(HGlobal w)
33 | {
34 | return w.DangerousGetHandle();
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/LiquesceSvc/LiquesceService.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace LiquesceSvc
2 | {
3 | partial class LiquesceService
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | components = new System.ComponentModel.Container();
32 | this.ServiceName = "LiquesceService";
33 | this.AutoLog = true;
34 | }
35 |
36 | #endregion
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Liquesce/Shared/FlickerFreeRichEditTextBox.cs:
--------------------------------------------------------------------------------
1 | // Taken from
2 | // http://www.c-sharpcorner.com/UploadFile/mgold/ColorSyntaxEditor12012005235814PM/ColorSyntaxEditor.aspx
3 |
4 | using System;
5 | using System.Windows.Forms;
6 |
7 | namespace Shared
8 | {
9 | ///
10 | /// Summary description for FlickerFreeRichEditTextBox - Subclasses the RichTextBox to allow control over flicker
11 | ///
12 | public class FlickerFreeRichEditTextBox : RichTextBox
13 | {
14 | const short WM_PAINT = 0x00f;
15 | public FlickerFreeRichEditTextBox()
16 | {
17 | }
18 | public bool _Paint = true;
19 | protected override void WndProc(ref System.Windows.Forms.Message m)
20 | {
21 | // Code courtesy of Mark Mihevc
22 | // sometimes we want to eat the paint message so we don't have to see all the
23 | // flicker from when we select the text to change the color.
24 | if (m.Msg == WM_PAINT)
25 | {
26 | if (_Paint)
27 | base.WndProc(ref m); // if we decided to paint this control, just call the RichTextBox WndProc
28 | else
29 | m.Result = IntPtr.Zero; // not painting, must set this to IntPtr.Zero if not painting therwise serious problems.
30 | }
31 | else
32 | base.WndProc(ref m); // message other than WM_PAINT, jsut do what you normally do.
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/Liquesce/Tabs/ITab.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using LiquesceFacade;
28 |
29 | namespace Liquesce.Tabs
30 | {
31 | internal interface ITab
32 | {
33 | ConfigDetails cd { set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // The following macros define the minimum required platform. The minimum required platform
4 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
5 | // your application. The macros work by enabling all features available on platform versions up to and
6 | // including the version specified.
7 |
8 | // Modify the following defines if you have to target a platform prior to the ones specified below.
9 | // Refer to MSDN for the latest info on corresponding values for different platforms.
10 | #ifndef WINVER // Specifies that the minimum required platform is Windows 2000.
11 | #define WINVER 0x0500 // Change this to the appropriate value to target other versions of Windows.
12 | #endif
13 |
14 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows 2000.
15 | #define _WIN32_WINNT 0x0500 // Change this to the appropriate value to target other versions of Windows.
16 | #endif
17 |
18 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 5.0.
19 | #define _WIN32_IE 0x0500 // Change this to the appropriate value to target other versions of IE.
20 | #endif
21 |
22 | #ifndef _WIN32_MSI // Specifies that the minimum required MSI version is MSI 3.1
23 | #define _WIN32_MSI 310 // Change this to the appropriate value to target other versions of MSI.
24 | #endif
25 |
--------------------------------------------------------------------------------
/LiquesceTray/DoubleProgressBar.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2011 fpDragon
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System.Windows.Forms;
27 |
28 | namespace LiquesceTray
29 | {
30 | public partial class DoubleProgressBar : UserControl
31 | {
32 | public DoubleProgressBar()
33 | {
34 | InitializeComponent();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/LiquesceSvc/ProjectInstaller.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.ComponentModel;
28 | using System.Configuration.Install;
29 |
30 |
31 | namespace LiquesceSvc
32 | {
33 | [RunInstaller(true)]
34 | public partial class ProjectInstaller : Installer
35 | {
36 | public ProjectInstaller()
37 | {
38 | InitializeComponent();
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/LiquesceSvc/Salt.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Security.Cryptography;
3 | using System.Text;
4 |
5 | // ReSharper disable CheckNamespace
6 | namespace StringBuffers
7 | // ReSharper restore CheckNamespace
8 | {
9 | ///
10 | /// Simple obfustication to try and stop obvious decompilation, but still use a good algorithm.
11 | ///
12 | static public class StringBuffers
13 | {
14 | // Use some strings that an application will already have in its string list.
15 | private static readonly byte[] key = Encoding.ASCII.GetBytes(@"System.Runtime.CompilerServices ");
16 | private static readonly byte[] iv = Encoding.ASCII.GetBytes(@"FileDescription ");
17 |
18 | public static string ToBuffer(this string text)
19 | {
20 | using (SymmetricAlgorithm algorithm = new RijndaelManaged())
21 | {
22 | ICryptoTransform transform = algorithm.CreateEncryptor(key, iv);
23 | byte[] inputbuffer = Encoding.Unicode.GetBytes(text);
24 | byte[] outputBuffer = transform.TransformFinalBlock(inputbuffer, 0, inputbuffer.Length);
25 | return Convert.ToBase64String(outputBuffer);
26 | }
27 | }
28 |
29 | public static string FromBuffer(this string text)
30 | {
31 | using (SymmetricAlgorithm algorithm = new RijndaelManaged())
32 | {
33 | ICryptoTransform transform = algorithm.CreateDecryptor(key, iv);
34 | byte[] inputbuffer = Convert.FromBase64String(text);
35 | byte[] outputBuffer = transform.TransformFinalBlock(inputbuffer, 0, inputbuffer.Length);
36 | return Encoding.Unicode.GetString(outputBuffer);
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Liquesce/ExpectedDetailResult.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System;
27 |
28 | namespace Liquesce
29 | {
30 | class ExpectedDetailResult : IComparable
31 | {
32 | public string DisplayName { get; set; }
33 | public string ActualFileLocation { get; set; }
34 | public int CompareTo(object obj)
35 | {
36 | ExpectedDetailResult other = obj as ExpectedDetailResult;
37 | return (other!= null)?DisplayName.CompareTo(other.DisplayName):0;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Liquesce/DragDropItem.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System;
27 |
28 | namespace Liquesce
29 | {
30 |
31 | [Serializable]
32 | internal class DragDropItem
33 | {
34 | public enum SourceType
35 | {
36 | Drive,
37 | Merge
38 | }
39 | public DragDropItem(string name, SourceType source, bool asReadOnly)
40 | {
41 | Name = name;
42 | Source = source;
43 | AsReadOnly = asReadOnly;
44 | }
45 |
46 |
47 | public string Name { get; private set; }
48 | public SourceType Source { get; private set; }
49 | public bool AsReadOnly { get; private set; }
50 |
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/LiquesceTray/HiddenFormToAcceptCloseMessage.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System;
27 | using System.Windows.Forms;
28 |
29 | namespace LiquesceTray
30 | {
31 | public partial class HiddenFormToAcceptCloseMessage : Form
32 | {
33 | public HiddenFormToAcceptCloseMessage()
34 | {
35 | InitializeComponent();
36 | }
37 |
38 | private void HiddenFormToAcceptCloseMessage_Load(object sender, EventArgs e)
39 | {
40 | Visible = false;
41 | }
42 |
43 | private void HiddenFormToAcceptCloseMessage_FormClosing(object sender, FormClosingEventArgs e)
44 | {
45 | Application.Exit();
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/LiquesceTray/TransparentLabel.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2011 fpDragon
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.Windows.Forms;
28 |
29 |
30 | namespace LiquesceTray
31 | {
32 | public class TransparentLabel : Label
33 | {
34 | public TransparentLabel()
35 | {
36 | SetStyle(ControlStyles.Opaque, true);
37 | SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
38 | }
39 | protected override CreateParams CreateParams
40 | {
41 | get
42 | {
43 | CreateParams parms = base.CreateParams;
44 | parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
45 | return parms;
46 | }
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/LiquesceTray/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
13 |
14 |
15 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | True
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/LiquesceTray/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Liquesce/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/LiquesceSvc/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/LiquesceTrayHelper/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/LiquesceFaçade/ILiquesce.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.ServiceModel;
29 |
30 | namespace LiquesceFacade
31 | {
32 | [Serializable]
33 | public enum LiquesceSvcState
34 | {
35 | Unknown,
36 | Running, // Used to indicate that all is well
37 | InError,
38 | InWarning,
39 | Stopped
40 | }
41 |
42 | [ServiceContract]
43 | public interface ILiquesce
44 | {
45 | [OperationContract(IsOneWay = true)]
46 | void Stop();
47 |
48 | [OperationContract(IsOneWay = true)]
49 | void Start();
50 |
51 | LiquesceSvcState LiquesceState
52 | {
53 | [OperationContract]
54 | get;
55 | }
56 |
57 | ConfigDetails ConfigDetails
58 | {
59 | [OperationContract]
60 | get;
61 | }
62 |
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/LiquesceFaçade/ILiquesceCallBack.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.Runtime.Serialization;
29 | using System.ServiceModel;
30 |
31 | namespace LiquesceFacade
32 | {
33 | public interface IStateChange
34 | {
35 | [OperationContract(IsOneWay = true)]
36 | void Update(LiquesceSvcState state, string message);
37 | }
38 |
39 | [ServiceContract( CallbackContract = typeof(IStateChange))]
40 | public interface ILiquesceCallBack
41 | {
42 |
43 | [OperationContract(IsOneWay = true)]
44 | void Subscribe(Client id);
45 |
46 | [OperationContract(IsOneWay = true)]
47 | void Unsubscribe(Client id);
48 | }
49 |
50 | // Each client connected to the service has a GUID
51 | [DataContract]
52 | public class Client
53 | {
54 | [DataMember]
55 | public Guid id { get; set; }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/LiquesceTray/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.239
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace LiquesceTray.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string WindowLocation {
30 | get {
31 | return ((string)(this["WindowLocation"]));
32 | }
33 | set {
34 | this["WindowLocation"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
41 | public bool UpdateRequired {
42 | get {
43 | return ((bool)(this["UpdateRequired"]));
44 | }
45 | set {
46 | this["UpdateRequired"] = value;
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/LiquesceSvc/LiquesceCallBackFacade.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 |
28 | using System.ServiceModel;
29 | using LiquesceFacade;
30 | using NLog;
31 |
32 | namespace LiquesceSvc
33 | {
34 | [ServiceBehavior(
35 | InstanceContextMode = InstanceContextMode.Single,
36 | ConcurrencyMode = ConcurrencyMode.Multiple,
37 | IncludeExceptionDetailInFaults = true
38 | )
39 | ]
40 | class LiquesceCallBackFacade : ILiquesceCallBack
41 | {
42 | static private readonly Logger Log = LogManager.GetCurrentClassLogger();
43 |
44 | public LiquesceCallBackFacade()
45 | {
46 | Log.Debug("Object Created");
47 | }
48 | public void Subscribe(Client id)
49 | {
50 | Log.Debug("Calling Subscribe");
51 | ManagementLayer.Instance.Subscribe(id);
52 | }
53 |
54 | public void Unsubscribe(Client id)
55 | {
56 | Log.Debug("Calling Unsubscribe");
57 | ManagementLayer.Instance.Unsubscribe(id);
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/LiquesceSvc/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | <?xml version="1.0" encoding="utf-16"?>
7 | <SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
8 | <ConnectionString>+Od6c3mNYXx4Ix17s1b9iwV7zOHdmMLj7nx+38vjnE36r9YlxR0/cZ6ISo/rez7Czcc4kZw55r/wVYDjNE2vqrjr4/VzgvgW1AgXzvTpLHAfK80RY58QQta1qtXbGgqsTxYJmFHk5ikCd5QFBth1xcJlZ5w62yaScPmWc2ygm58vorqrrTcgq7DIBJpz+YRaQhSKBFdj4IW6ug0OoOyoRkZRaHVTK/BwY2VR4QKRc1eK786/05qM4ABiX3tRrCFb7Ag2G4KleZD0Z2tznzk3ux0gPmLiXU5Hc/T+MEkxiGeQyXnI3Oy40TBgRL6Lv9dJ/TRiYXc32SvrfMgLqcaX0Ks56SfHmBIFLLwwFHRMx2U0HZnESsz2Nid+gJ4ILZDaUatqwAdUaS78rk7eMI3ubXrvA+n5PP3Df1PMI2M0C1LVX/b+OXSdlaVqS9XmMWtBlIh6xJQwlxz8PeargFlltKLroGpVROZJK1z5V5nP48yaaV8rKSb6SPIaybpfPPBy+CEdl57EU5Eh0MGmoWgAtDUQ2ygmEswHR1CyNKT/P7gt9rZDfcjatucd6rpoeY73BphSUQDNZY6MUTYlikg37l5Ob8HTRpI/FYwzSMTzxri4EbYA3reY4p5qNE/GiCmXcsgDaKGhKvz1gYHIugek4dVAaTA0tSqxiuyQtbO6jEz+KpwerYVI+4ir+oay3L1as8n603jeRdXHho7Vq5DsjtsipCEM4f/iq9rKy9sXSUXkOyS66gFktsCYUGxOacfAOeCtXIuIMsjhM8QRZJc+3A==</ConnectionString>
9 | </SerializableConnectionString>
10 | +Od6c3mNYXx4Ix17s1b9iwV7zOHdmMLj7nx+38vjnE36r9YlxR0/cZ6ISo/rez7Czcc4kZw55r/wVYDjNE2vqrjr4/VzgvgW1AgXzvTpLHAfK80RY58QQta1qtXbGgqsTxYJmFHk5ikCd5QFBth1xcJlZ5w62yaScPmWc2ygm58vorqrrTcgq7DIBJpz+YRaQhSKBFdj4IW6ug0OoOyoRkZRaHVTK/BwY2VR4QKRc1eK786/05qM4ABiX3tRrCFb7Ag2G4KleZD0Z2tznzk3ux0gPmLiXU5Hc/T+MEkxiGeQyXnI3Oy40TBgRL6Lv9dJ/TRiYXc32SvrfMgLqcaX0Ks56SfHmBIFLLwwFHRMx2U0HZnESsz2Nid+gJ4ILZDaUatqwAdUaS78rk7eMI3ubXrvA+n5PP3Df1PMI2M0C1LVX/b+OXSdlaVqS9XmMWtBlIh6xJQwlxz8PeargFlltKLroGpVROZJK1z5V5nP48yaaV8rKSb6SPIaybpfPPBy+CEdl57EU5Eh0MGmoWgAtDUQ2ygmEswHR1CyNKT/P7gt9rZDfcjatucd6rpoeY73BphSUQDNZY6MUTYlikg37l5Ob8HTRpI/FYwzSMTzxri4EbYA3reY4p5qNE/GiCmXcsgDaKGhKvz1gYHIugek4dVAaTA0tSqxiuyQtbO6jEz+KpwerYVI+4ir+oay3L1as8n603jeRdXHho7Vq5DsjtsipCEM4f/iq9rKy9sXSUXkOyS66gFktsCYUGxOacfAOeCtXIuIMsjhM8QRZJc+3A==
11 |
12 |
13 |
--------------------------------------------------------------------------------
/LiquesceSvc/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18408
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace LiquesceSvc.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.ApplicationScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
29 | [global::System.Configuration.DefaultSettingValueAttribute(@"+Od6c3mNYXx4Ix17s1b9iwV7zOHdmMLj7nx+38vjnE36r9YlxR0/cZ6ISo/rez7Czcc4kZw55r/wVYDjNE2vqrjr4/VzgvgW1AgXzvTpLHAfK80RY58QQta1qtXbGgqsTxYJmFHk5ikCd5QFBth1xcJlZ5w62yaScPmWc2ygm58vorqrrTcgq7DIBJpz+YRaQhSKBFdj4IW6ug0OoOyoRkZRaHVTK/BwY2VR4QKRc1eK786/05qM4ABiX3tRrCFb7Ag2G4KleZD0Z2tznzk3ux0gPmLiXU5Hc/T+MEkxiGeQyXnI3Oy40TBgRL6Lv9dJ/TRiYXc32SvrfMgLqcaX0Ks56SfHmBIFLLwwFHRMx2U0HZnESsz2Nid+gJ4ILZDaUatqwAdUaS78rk7eMI3ubXrvA+n5PP3Df1PMI2M0C1LVX/b+OXSdlaVqS9XmMWtBlIh6xJQwlxz8PeargFlltKLroGpVROZJK1z5V5nP48yaaV8rKSb6SPIaybpfPPBy+CEdl57EU5Eh0MGmoWgAtDUQ2ygmEswHR1CyNKT/P7gt9rZDfcjatucd6rpoeY73BphSUQDNZY6MUTYlikg37l5Ob8HTRpI/FYwzSMTzxri4EbYA3reY4p5qNE/GiCmXcsgDaKGhKvz1gYHIugek4dVAaTA0tSqxiuyQtbO6jEz+KpwerYVI+4ir+oay3L1as8n603jeRdXHho7Vq5DsjtsipCEM4f/iq9rKy9sXSUXkOyS66gFktsCYUGxOacfAOeCtXIuIMsjhM8QRZJc+3A==")]
30 | public string Salt {
31 | get {
32 | return ((string)(this["Salt"]));
33 | }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/LiquesceSvc/ProjectInstaller.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace LiquesceSvc
2 | {
3 | partial class ProjectInstaller
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
32 | this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
33 | //
34 | // serviceProcessInstaller1
35 | //
36 | this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
37 | this.serviceProcessInstaller1.Password = null;
38 | this.serviceProcessInstaller1.Username = null;
39 | //
40 | // serviceInstaller1
41 | //
42 | this.serviceInstaller1.Description = "LiquesceSvc - Pools Physcical storage locations into a single entity";
43 | this.serviceInstaller1.DisplayName = "Liquesce Service";
44 | this.serviceInstaller1.ServiceName = "LiquesceSvc";
45 | this.serviceInstaller1.ServicesDependedOn = new string[] {
46 | "PlugPlay"};
47 | this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
48 | //
49 | // ProjectInstaller
50 | //
51 | this.Installers.AddRange(new System.Configuration.Install.Installer[] {
52 | this.serviceProcessInstaller1,
53 | this.serviceInstaller1});
54 |
55 | }
56 |
57 | #endregion
58 |
59 | private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
60 | private System.ServiceProcess.ServiceInstaller serviceInstaller1;
61 | }
62 | }
--------------------------------------------------------------------------------
/LiquesceTray/HiddenFormToAcceptCloseMessage.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace LiquesceTray
2 | {
3 | partial class HiddenFormToAcceptCloseMessage
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiddenFormToAcceptCloseMessage));
32 | this.SuspendLayout();
33 | //
34 | // HiddenFormToAcceptCloseMessage
35 | //
36 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
37 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
38 | this.ClientSize = new System.Drawing.Size(140, 52);
39 | this.ControlBox = false;
40 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
41 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
42 | this.MaximizeBox = false;
43 | this.MaximumSize = new System.Drawing.Size(146, 74);
44 | this.MinimizeBox = false;
45 | this.Name = "HiddenFormToAcceptCloseMessage";
46 | this.ShowIcon = false;
47 | this.ShowInTaskbar = false;
48 | this.Text = "HiddenFormToAcceptCloseMessage";
49 | this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
50 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.HiddenFormToAcceptCloseMessage_FormClosing);
51 | this.Load += new System.EventHandler(this.HiddenFormToAcceptCloseMessage_Load);
52 | this.ResumeLayout(false);
53 |
54 | }
55 |
56 | #endregion
57 | }
58 | }
--------------------------------------------------------------------------------
/Liquesce/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | True
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | True
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Liquesce/Tabs/Welcome.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset2 Symbol;}}
2 | {\colortbl ;\red0\green0\blue255;}
3 | {\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\ul\b\f0\fs24 Welcome.\ulnone\b0\fs18\par
4 | \fs20 This is the management application for the \i Liquesce Phase \fs22 ][\fs20 Suite\i0 . It allows you to take your hard disks (internal or external) and make them appear as single large drive.\par
5 | \par
6 | \ul\b Performance Tip:\ulnone\b0\par
7 | Please ensure that for \i any \i0 mounted drive letter \i or \i0 folder that is created via Liquesce, is \i not \i0 protected by an Anti-Virus apllication.\par
8 | This is because 'It' (the AV) will see all file actions (opens, closes, queries, etc.) on both the source \b AND \b0 the new mount point, and will seriously impact your performance.\par
9 | \b\par
10 | \ul Debug Tips:\b0\par
11 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\ulnone Stop the service\par
12 | {\pntext\f1\'B7\tab}Delete the Svc logs\par
13 | {\pntext\f1\'B7\tab}Adjust your logging to Trace,\par
14 | {\pntext\f1\'B7\tab}Drop the threads down to 1, \par
15 | {\pntext\f1\'B7\tab}Start the service\par
16 | {\pntext\f1\'B7\tab}Perform the actions that cause a problem. e.g.\par
17 | \pard{\pntext\f0 i.\tab}{\*\pn\pnlvlbody\pnf0\pnindent0\pnstart1\pnlcrm{\pntxta.}}
18 | \fi-360\li1080 Use wordpad to open a file on the mounted drive (Make new if you can)\par
19 | {\pntext\f0 ii.\tab}Make some edits\par
20 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720 Make a note of the time (UTC/GMT).\par
21 | {\pntext\f1\'B7\tab}Stop the service and zip them up \fs18\par
22 | \pard{\pntext\f0 i.\tab}{\*\pn\pnlvlbody\pnf0\pnindent0\pnstart1\pnlcrm{\pntxta.}}
23 | \fi-360\li1080\fs20 Use the "Zip Logs" button in the Logging tab,\fs18\par
24 | \fs20{\pntext\f0 ii.\tab}Create a new issue here: {\field{\*\fldinst{HYPERLINK "https://liquesce.codeplex.com/workitem/list/basic"}}{\fldrslt{\ul\cf1 https://liquesce.codeplex.com/workitem/list/basic}}}\f0\fs20 . \lang9\fs22\par
25 | \lang2057\fs20{\pntext\f0 iii.\tab}With the notes of how and when, fill in the details and attach the log(s)\lang9\fs22\par
26 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360\lang2057\fs20 If the actions can be done via clicking things, then use PSR (Problem Steps Recorder) {\field{\*\fldinst{HYPERLINK "http://www.msigeek.com/2410/problem-step-recorder-an-amazing-screen-capture-tool"}}{\fldrslt{\ul\cf1 http://www.msigeek.com/2410/problem-step-recorder-an-amazing-screen-capture-tool}}}\lang9\f0\fs22\par
27 | }
28 |
--------------------------------------------------------------------------------
/Liquesce/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18408
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Liquesce.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string WindowLocation {
30 | get {
31 | return ((string)(this["WindowLocation"]));
32 | }
33 | set {
34 | this["WindowLocation"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
41 | public bool UpdateRequired {
42 | get {
43 | return ((bool)(this["UpdateRequired"]));
44 | }
45 | set {
46 | this["UpdateRequired"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("")]
53 | public string TailWindowLocation {
54 | get {
55 | return ((string)(this["TailWindowLocation"]));
56 | }
57 | set {
58 | this["TailWindowLocation"] = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/LiquesceFaçade/LiquesceProxy.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.ServiceModel;
28 |
29 | namespace LiquesceFacade
30 | {
31 | public class LiquesceProxy : ClientBase, ILiquesce
32 | {
33 | public LiquesceProxy()
34 | {
35 | }
36 |
37 | public LiquesceProxy(string endpointConfigurationName)
38 | : base(endpointConfigurationName)
39 | {
40 | }
41 |
42 | public LiquesceProxy(string endpointConfigurationName, string remoteAddress)
43 | : base(endpointConfigurationName, remoteAddress)
44 | {
45 | }
46 |
47 | public LiquesceProxy(string endpointConfigurationName, EndpointAddress remoteAddress)
48 | : base(endpointConfigurationName, remoteAddress)
49 | {
50 | }
51 |
52 | public LiquesceProxy(System.ServiceModel.Channels.Binding binding, EndpointAddress remoteAddress)
53 | : base(binding, remoteAddress)
54 | {
55 | }
56 |
57 | #region Implementation of ILiquesce
58 |
59 | public void Stop()
60 | {
61 | base.Channel.Stop();
62 | }
63 |
64 | public void Start()
65 | {
66 | base.Channel.Start();
67 | }
68 |
69 | public LiquesceSvcState LiquesceState
70 | {
71 | get { return base.Channel.LiquesceState; }
72 | }
73 |
74 | public ConfigDetails ConfigDetails
75 | {
76 | get { return base.Channel.ConfigDetails; }
77 | }
78 |
79 | #endregion
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFSInstWrapper.cpp:
--------------------------------------------------------------------------------
1 | #include "StdAfx.h"
2 | #include "CBFSInstWrapper.h"
3 |
4 | // explicit
5 | CBFSInstWrapper::CBFSInstWrapper(LPCTSTR const cpszDllName)
6 | : CDLLWrapper( cpszDllName )
7 | ,m_lpfnInstall( NULL )
8 | ,m_lpfnUninstall( NULL )
9 | ,m_lpfnGetModuleStatus( NULL )
10 | ,m_lpfnInstallIcon( NULL )
11 | ,m_lpfnUninstallIcon( NULL )
12 | {
13 | }
14 |
15 | //virtual
16 | CBFSInstWrapper::~CBFSInstWrapper()
17 | {
18 | }
19 |
20 | // The call to 'is valid' will attempt to load all the wanted function pointers
21 | // and then check if we had an error.
22 | //virtual
23 | const bool CBFSInstWrapper::IsValid(void)
24 | {
25 | return( GetFunctionPointer( m_lpfnInstall, STR( Install) )
26 | && GetFunctionPointer( m_lpfnUninstall, STR( Uninstall ) )
27 | && GetFunctionPointer( m_lpfnGetModuleStatus, STR( GetModuleStatus ) )
28 | && GetFunctionPointer( m_lpfnInstallIcon, STR( InstallIcon ) )
29 | && GetFunctionPointer( m_lpfnUninstallIcon, STR( UninstallIcon ) )
30 | && CDLLWrapper::IsValid()
31 | );
32 | }
33 |
34 | BOOL CBFSInstWrapper::Install( IN LPCTSTR CabPathName, IN LPCTSTR ProductName, IN LPCTSTR PathToInstall, IN BOOL SupportPnP, IN DWORD ModulesToInstall, OUT LPDWORD RebootNeeded )
35 | {
36 | if ( NULL == m_lpfnInstall )
37 | return( FALSE );
38 | else
39 | return( m_lpfnInstall( CabPathName, ProductName, PathToInstall, SupportPnP, ModulesToInstall, RebootNeeded ) );
40 | }
41 |
42 | BOOL CBFSInstWrapper::Uninstall( IN LPCTSTR CabPathName, IN LPCTSTR ProductName, IN LPCTSTR InstalledPath, OUT LPDWORD RebootNeeded )
43 | {
44 | if ( NULL == m_lpfnUninstall )
45 | return( FALSE );
46 | else
47 | return( m_lpfnUninstall( CabPathName, ProductName, InstalledPath, RebootNeeded ) );
48 | }
49 |
50 | BOOL CBFSInstWrapper::GetModuleStatus( IN LPCTSTR ProductName, IN DWORD Module, OUT LPBOOL Installed, OUT LPDWORD FileVersionHigh OPTIONAL, OUT LPDWORD FileVersionLow OPTIONAL )
51 | {
52 | if ( NULL == m_lpfnGetModuleStatus )
53 | return( FALSE );
54 | else
55 | return( m_lpfnGetModuleStatus( ProductName, Module, Installed, FileVersionHigh, FileVersionLow ) );
56 | }
57 |
58 | BOOL CBFSInstWrapper::InstallIcon( IN LPCTSTR ProductName, IN LPCTSTR IconPath, IN LPCTSTR IconId, OUT LPBOOL RebootNeeded )
59 | {
60 | if ( NULL == m_lpfnInstallIcon )
61 | return( FALSE );
62 | else
63 | return( m_lpfnInstallIcon( ProductName, IconPath, IconId, RebootNeeded ) );
64 | }
65 |
66 | BOOL CBFSInstWrapper::UninstallIcon( IN LPCTSTR ProductName, IN LPCTSTR IconId, OUT LPBOOL RebootNeeded )
67 | {
68 | if ( NULL == m_lpfnUninstallIcon )
69 | return( FALSE );
70 | else
71 | return( m_lpfnUninstallIcon( ProductName, IconId, RebootNeeded ) );
72 | }
73 |
--------------------------------------------------------------------------------
/Liquesce/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.Reflection;
28 | using System.Runtime.InteropServices;
29 |
30 | // General Information about an assembly is controlled through the following
31 | // set of attributes. Change these attribute values to modify the information
32 | // associated with an assembly.
33 | [assembly: AssemblyTitle("Liquesce")]
34 | [assembly: AssemblyDescription("")]
35 | [assembly: AssemblyConfiguration("")]
36 | [assembly: AssemblyCompany("Smurf-IV")]
37 | [assembly: AssemblyProduct("Liquesce")]
38 | [assembly: AssemblyCopyright("Copyright © Simon Coghlan (Aka Smurf-IV) 2010 - 2012")]
39 | [assembly: AssemblyTrademark("")]
40 | [assembly: AssemblyCulture("")]
41 |
42 | // Setting ComVisible to false makes the types in this assembly not visible
43 | // to COM components. If you need to access a type in this assembly from
44 | // COM, set the ComVisible attribute to true on that type.
45 | [assembly: ComVisible(false)]
46 |
47 | // The following GUID is for the ID of the typelib if this project is exposed to COM
48 | [assembly: Guid("3feec58f-ab7b-402f-b78f-5e5aefee7f6d")]
49 |
50 | // Version information for an assembly consists of the following four values:
51 | //
52 | // Major Version
53 | // Minor Version
54 | // Build Number
55 | // Revision
56 | //
57 | // You can specify all the values or you can default the Build and Revision Numbers
58 | // by using the '*' as shown below:
59 | // [assembly: AssemblyVersion("1.0.*")]
60 | [assembly: AssemblyVersion("14.8.1242.19")]
61 | [assembly: AssemblyFileVersion("14.8.1242.19")]
62 |
--------------------------------------------------------------------------------
/LiquesceSvc/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System.Reflection;
27 | using System.Runtime.InteropServices;
28 |
29 | // General Information about an assembly is controlled through the following
30 | // set of attributes. Change these attribute values to modify the information
31 | // associated with an assembly.
32 | [assembly: AssemblyTitle("LiquesceSvc")]
33 | [assembly: AssemblyDescription("")]
34 | [assembly: AssemblyConfiguration("")]
35 | [assembly: AssemblyCompany("Smurf-IV")]
36 | [assembly: AssemblyProduct("LiquesceSvc")]
37 | [assembly: AssemblyCopyright("Copyright © Simon Coghlan (Aka Smurf-IV) 2010 - 11")]
38 | [assembly: AssemblyTrademark("")]
39 | [assembly: AssemblyCulture("")]
40 |
41 | // Setting ComVisible to false makes the types in this assembly not visible
42 | // to COM components. If you need to access a type in this assembly from
43 | // COM, set the ComVisible attribute to true on that type.
44 | [assembly: ComVisible(false)]
45 |
46 | // The following GUID is for the ID of the typelib if this project is exposed to COM
47 | [assembly: Guid("f58ce85d-120a-4d4e-bde1-8e52ebd50b95")]
48 |
49 | // Version information for an assembly consists of the following four values:
50 | //
51 | // Major Version
52 | // Minor Version
53 | // Build Number
54 | // Revision
55 | //
56 | // You can specify all the values or you can default the Build and Revision Numbers
57 | // by using the '*' as shown below:
58 | // [assembly: AssemblyVersion("1.0.*")]
59 | [assembly: AssemblyVersion("14.9.2281.3")]
60 | [assembly: AssemblyFileVersion("14.9.2281.3")]
61 |
--------------------------------------------------------------------------------
/LiquesceTray/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 | using System.Reflection;
27 | using System.Runtime.InteropServices;
28 |
29 | // General Information about an assembly is controlled through the following
30 | // set of attributes. Change these attribute values to modify the information
31 | // associated with an assembly.
32 | [assembly: AssemblyTitle("LiquesceTray")]
33 | [assembly: AssemblyDescription("")]
34 | [assembly: AssemblyConfiguration("")]
35 | [assembly: AssemblyCompany("Smurf-IV")]
36 | [assembly: AssemblyProduct("Liquesce")]
37 | [assembly: AssemblyCopyright("Copyright © Simon Coghlan (Aka Smurf-IV) 2010 - 11")]
38 | [assembly: AssemblyTrademark("")]
39 | [assembly: AssemblyCulture("")]
40 |
41 | // Setting ComVisible to false makes the types in this assembly not visible
42 | // to COM components. If you need to access a type in this assembly from
43 | // COM, set the ComVisible attribute to true on that type.
44 | [assembly: ComVisible(false)]
45 |
46 | // The following GUID is for the ID of the typelib if this project is exposed to COM
47 | [assembly: Guid("ff8451a1-4f61-442b-b1d3-16dba1489e24")]
48 |
49 | // Version information for an assembly consists of the following four values:
50 | //
51 | // Major Version
52 | // Minor Version
53 | // Build Number
54 | // Revision
55 | //
56 | // You can specify all the values or you can default the Build and Revision Numbers
57 | // by using the '*' as shown below:
58 | // [assembly: AssemblyVersion("1.0.*")]
59 | [assembly: AssemblyVersion("14.8.1004.18")]
60 | [assembly: AssemblyFileVersion("14.8.1004.18")]
61 |
--------------------------------------------------------------------------------
/LiquesceFaçade/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.Reflection;
28 | using System.Runtime.InteropServices;
29 |
30 | // General Information about an assembly is controlled through the following
31 | // set of attributes. Change these attribute values to modify the information
32 | // associated with an assembly.
33 | [assembly: AssemblyTitle("LiquesceFacade")]
34 | [assembly: AssemblyDescription("")]
35 | [assembly: AssemblyConfiguration("")]
36 | [assembly: AssemblyCompany("Smurf-IV")]
37 | [assembly: AssemblyProduct("LiquesceFacade")]
38 | [assembly: AssemblyCopyright("Copyright © Simon Coghlan (Aka Smurf-IV) 2010 - 11")]
39 | [assembly: AssemblyTrademark("")]
40 | [assembly: AssemblyCulture("")]
41 |
42 | // Setting ComVisible to false makes the types in this assembly not visible
43 | // to COM components. If you need to access a type in this assembly from
44 | // COM, set the ComVisible attribute to true on that type.
45 | [assembly: ComVisible(false)]
46 |
47 | // The following GUID is for the ID of the typelib if this project is exposed to COM
48 | [assembly: Guid("0add1bfe-80d9-460b-ab4f-1db837df49b3")]
49 |
50 | // Version information for an assembly consists of the following four values:
51 | //
52 | // Major Version
53 | // Minor Version
54 | // Build Number
55 | // Revision
56 | //
57 | // You can specify all the values or you can default the Build and Revision Numbers
58 | // by using the '*' as shown below:
59 | // [assembly: AssemblyVersion("1.0.*")]
60 | [assembly: AssemblyVersion("14.8.856.18")]
61 | [assembly: AssemblyFileVersion("14.8.856.18")]
62 |
--------------------------------------------------------------------------------
/LiquesceTrayHelper/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System.Reflection;
28 | using System.Runtime.InteropServices;
29 |
30 | // General Information about an assembly is controlled through the following
31 | // set of attributes. Change these attribute values to modify the information
32 | // associated with an assembly.
33 | [assembly: AssemblyTitle("LiquesceTrayHelper")]
34 | [assembly: AssemblyDescription("")]
35 | [assembly: AssemblyConfiguration("")]
36 | [assembly: AssemblyCompany("Smurf-IV")]
37 | [assembly: AssemblyProduct("LiquesceTrayHelper")]
38 | [assembly: AssemblyCopyright("Copyright © Simon Coghlan (Aka Smurf-IV) 2011-2012")]
39 | [assembly: AssemblyTrademark("")]
40 | [assembly: AssemblyCulture("")]
41 |
42 | // Setting ComVisible to false makes the types in this assembly not visible
43 | // to COM components. If you need to access a type in this assembly from
44 | // COM, set the ComVisible attribute to true on that type.
45 | [assembly: ComVisible(false)]
46 |
47 | // The following GUID is for the ID of the typelib if this project is exposed to COM
48 | [assembly: Guid("820c82d3-6e5d-4e06-9838-e8b449d8e774")]
49 |
50 | // Version information for an assembly consists of the following four values:
51 | //
52 | // Major Version
53 | // Minor Version
54 | // Build Number
55 | // Revision
56 | //
57 | // You can specify all the values or you can default the Build and Revision Numbers
58 | // by using the '*' as shown below:
59 | // [assembly: AssemblyVersion("1.0.*")]
60 | [assembly: AssemblyVersion("14.8.993.18")]
61 | [assembly: AssemblyFileVersion("14.8.993.18")]
62 |
--------------------------------------------------------------------------------
/LiquesceFaçade/Utils.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.Windows.Forms;
29 |
30 | namespace LiquesceFacade
31 | {
32 | public static class Utils
33 | {
34 | public static void ResizeDescriptionArea(ref PropertyGrid grid, int nNumLines)
35 | {
36 | try
37 | {
38 | System.Reflection.PropertyInfo pi = grid.GetType().GetProperty("Controls");
39 | Control.ControlCollection cc = (Control.ControlCollection)pi.GetValue(grid, null);
40 |
41 | foreach (Control c in cc)
42 | {
43 | Type ct = c.GetType();
44 | string sName = ct.Name;
45 |
46 | if (sName == "DocComment")
47 | {
48 | pi = ct.GetProperty("Lines");
49 | if (pi != null)
50 | {
51 | #pragma warning disable 168
52 | int i = (int)pi.GetValue(c, null);
53 | #pragma warning restore 168
54 | pi.SetValue(c, nNumLines, null);
55 | }
56 |
57 | if (ct.BaseType != null)
58 | {
59 | System.Reflection.FieldInfo fi = ct.BaseType.GetField("userSized",
60 | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
61 |
62 | if (fi != null)
63 | fi.SetValue(c, true);
64 | }
65 | break;
66 | }
67 | }
68 | }
69 | catch
70 | {
71 | }
72 | }
73 |
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/LiquesceSvc/LiquesceFacade.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 |
28 | using System.ServiceModel;
29 | using System.Threading;
30 | using LiquesceFacade;
31 | using NLog;
32 |
33 | namespace LiquesceSvc
34 | {
35 | [ServiceBehavior(
36 | InstanceContextMode = InstanceContextMode.Single,
37 | ConcurrencyMode = ConcurrencyMode.Multiple,
38 | IncludeExceptionDetailInFaults = true
39 | )
40 | ]
41 | public class LiquesceFacade : ILiquesce
42 | {
43 | static private readonly Logger Log = LogManager.GetCurrentClassLogger();
44 |
45 | public LiquesceFacade()
46 | {
47 | Log.Debug("Object Created");
48 | }
49 |
50 | public void Stop()
51 | {
52 | Log.Debug("Calling Stop");
53 | ManagementLayer.Instance.Stop();
54 | }
55 |
56 | public void Start()
57 | {
58 | Log.Debug("Calling Start");
59 | // Queue the main work as a thread pool task as we want this method to finish promptly.
60 | ThreadPool.QueueUserWorkItem(ManagementLayer.Instance.Start);
61 | }
62 |
63 | public LiquesceSvcState LiquesceState
64 | {
65 | get
66 | {
67 | Log.Debug("Calling State");
68 | return ManagementLayer.Instance.State;
69 | }
70 | }
71 |
72 | public ConfigDetails ConfigDetails
73 | {
74 | get
75 | {
76 | Log.Debug("Calling get_ConfigDetails");
77 | return ManagementLayer.Instance.CurrentConfigDetails;
78 | }
79 | set
80 | {
81 | Log.Debug("Calling set_ConfigDetails");
82 | ManagementLayer.Instance.CurrentConfigDetails = value;
83 | }
84 | }
85 |
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/ExtractUtils.cpp:
--------------------------------------------------------------------------------
1 | #include "StdAfx.h"
2 | #include "ExtractUtils.h"
3 |
4 |
5 | CExtractUtils::CExtractUtils(const HINSTANCE hInstance, const WORD & resourceID)
6 | : m_hInstance( hInstance )
7 | , m_wResourceID( resourceID )
8 | // , m_szOutputFilename()
9 | {
10 | m_szOutputFilename[0] = NULL;
11 | }
12 |
13 | // virtual
14 | CExtractUtils::~CExtractUtils()
15 | {
16 | // TODO: owner application will need to delete the file once it has finished with it (i.e. not when this class loses scope)
17 | //if ( m_szOutputFilename[0] != NULL )
18 | // RemoveResource();
19 | }
20 |
21 |
22 | //
23 | bool CExtractUtils::ExtractResource()
24 | {
25 | bool bSuccess = CreateTempFile();
26 | if ( bSuccess )
27 | try
28 | {
29 | // First find and load the required resource
30 | HRSRC hResource = FindResource(m_hInstance, MAKEINTRESOURCE(m_wResourceID), TEXT("BIN"));
31 | HGLOBAL hFileResource = LoadResource(m_hInstance, hResource);
32 |
33 | // Now open and map this to a disk file
34 | LPBYTE lpFileData = (LPBYTE)LockResource(hFileResource);
35 | CONST DWORD cdwSize( SizeofResource(m_hInstance, hResource));
36 |
37 | // Open the file and filemap
38 | HANDLE hFile = CreateFile(m_szOutputFilename, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
39 | HANDLE hFilemap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, cdwSize, NULL);
40 | LPBYTE lpBaseAddress = (LPBYTE )MapViewOfFile(hFilemap, FILE_MAP_WRITE, 0, 0, 0);
41 |
42 | // Write the file
43 | CopyMemory(lpBaseAddress, lpFileData, cdwSize);
44 |
45 | // Unmap the file and close the handles
46 | UnmapViewOfFile(lpBaseAddress);
47 |
48 | CloseHandle(hFilemap);
49 | CloseHandle(hFile);
50 | bSuccess = true;
51 | }
52 | catch(...)
53 | {
54 | // Ignore all type of errors
55 | m_szOutputFilename[0] = NULL;
56 | bSuccess = false;
57 | }
58 | return bSuccess;
59 | }
60 |
61 |
62 |
63 |
64 | bool CExtractUtils::CreateTempFile( )
65 | {
66 | bool bSuccess = false;
67 | try
68 | {
69 | TCHAR lpTempPathBuffer[MAX_PATH];
70 | // Gets the temp path env string (no guarantee it's a valid path).
71 | DWORD dwRetVal = GetTempPath(MAX_PATH, // length of the buffer
72 | lpTempPathBuffer); // buffer for path
73 | if ( (dwRetVal > (MAX_PATH-14))
74 | || (dwRetVal == 0)
75 | )
76 | {
77 | }
78 | else
79 | {
80 | // Generates a temporary file name.
81 | UINT uRetVal = GetTempFileName(lpTempPathBuffer, // directory for tmp files
82 | TEXT("Extract"), // temp file name prefix
83 | 0, // create unique name
84 | m_szOutputFilename); // buffer for name
85 | bSuccess = (uRetVal != 0);
86 | }
87 | }
88 | catch(...)
89 | {
90 | // Ignore all type of errors
91 | bSuccess = false;
92 | }
93 | return bSuccess;
94 | }
95 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFS Installer/cbfsinst.h:
--------------------------------------------------------------------------------
1 | // The following ifdef block is the standard way of creating macros which make exporting
2 | // from a DLL simpler. All files within this DLL are compiled with the CBFSISTALL_EXPORTS
3 | // symbol defined on the command line. this symbol should not be defined on any project
4 | // that uses this DLL. This way any other project whose source files include this file see
5 | // CBFSISTALL_API functions as being imported from a DLL, whereas this DLL sees symbols
6 | // defined with this macro as being exported.
7 | #ifdef CBFSINST_EXPORTS
8 | #ifdef __cplusplus
9 | #define CBFSINST_API extern "C" __declspec(dllexport)
10 | #else
11 | #define CBFSINST_API __declspec(dllexport)
12 | #endif
13 | #else
14 | #define CBFSINST_API __declspec(dllimport)
15 | #endif
16 |
17 | #define CBFS_MODULE_PNP_BUS 0x00000001
18 | #define CBFS_MODULE_DRIVER 0x00000002
19 | #define CBFS_MODULE_NET_REDIRECTOR_DLL 0x00010000
20 | #define CBFS_MODULE_MOUNT_NOTIFIER_DLL 0x00020000
21 |
22 | CBFSINST_API BOOL __stdcall InstallA(
23 | IN LPCSTR CabPathName,
24 | IN LPCSTR ProductName,
25 | IN LPCSTR PathToInstall,
26 | IN BOOL SupportPnP,
27 | IN DWORD ModulesToInstall,
28 | OUT LPDWORD RebootNeeded
29 | );
30 |
31 | CBFSINST_API BOOL __stdcall InstallW(
32 | IN LPCWSTR CabPathName,
33 | IN LPCWSTR ProductName,
34 | IN LPCWSTR PathToInstall,
35 | IN BOOL SupportPnP,
36 | IN DWORD ModulesToInstall,
37 | OUT LPDWORD RebootNeeded
38 | );
39 |
40 | CBFSINST_API BOOL __stdcall UninstallA(
41 | IN LPCSTR CabPathName,
42 | IN LPCSTR ProductName,
43 | IN LPCSTR InstalledPath OPTIONAL,
44 | OUT LPDWORD RebootNeeded
45 | );
46 |
47 | CBFSINST_API BOOL __stdcall UninstallW(
48 | IN LPCWSTR CabPathName,
49 | IN LPCWSTR ProductName,
50 | IN LPCWSTR InstalledPath OPTIONAL,
51 | OUT LPDWORD RebootNeeded
52 | );
53 |
54 | CBFSINST_API BOOL __stdcall GetModuleStatusA(
55 | IN LPCSTR ProductName,
56 | IN DWORD Module,
57 | OUT LPBOOL Installed,
58 | OUT LPDWORD FileVersionHigh OPTIONAL,
59 | OUT LPDWORD FileVersionLow OPTIONAL
60 | );
61 |
62 | CBFSINST_API BOOL __stdcall GetModuleStatusW(
63 | IN LPCWSTR ProductName,
64 | IN DWORD Module,
65 | OUT LPBOOL Installed,
66 | OUT LPDWORD FileVersionHigh OPTIONAL,
67 | OUT LPDWORD FileVersionLow OPTIONAL
68 | );
69 |
70 | CBFSINST_API BOOL __stdcall InstallIconA(
71 | IN LPCSTR ProductName,
72 | IN LPCSTR IconPath,
73 | IN LPCSTR IconId,
74 | OUT LPBOOL RebootNeeded
75 | );
76 |
77 | CBFSINST_API BOOL __stdcall InstallIconW(
78 | IN LPCWSTR ProductName,
79 | IN LPCWSTR IconPath,
80 | IN LPCWSTR IconId,
81 | OUT LPBOOL RebootNeeded
82 | );
83 |
84 | CBFSINST_API BOOL __stdcall UninstallIconA(
85 | IN LPCSTR ProductName,
86 | IN LPCSTR IconId,
87 | OUT LPBOOL RebootNeeded
88 | );
89 |
90 | CBFSINST_API BOOL __stdcall UninstallIconW(
91 | IN LPCWSTR ProductName,
92 | IN LPCWSTR IconId,
93 | OUT LPBOOL RebootNeeded
94 | );
95 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/CBFSWixCA.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
15 |
16 |
17 | {85dfb99b-af8a-4182-bd1e-bdd8f4fa2e4e}
18 |
19 |
20 | {206e6a82-cb25-441d-9422-5557cfa6e78a}
21 |
22 |
23 | {0b80d71b-d54f-403b-ac0c-2d63897a8560}
24 |
25 |
26 |
27 |
28 | Source Files
29 |
30 |
31 | Source Files
32 |
33 |
34 | Source Files
35 |
36 |
37 | Source Files
38 |
39 |
40 | Source Files
41 |
42 |
43 |
44 |
45 | Source Files
46 |
47 |
48 | Resource Files\CBFS Installer\Driver
49 |
50 |
51 | Resource Files\CBFS Installer\x86
52 |
53 |
54 |
55 |
56 | Header Files
57 |
58 |
59 | Header Files
60 |
61 |
62 | Resource Files\CBFS Installer
63 |
64 |
65 | Header Files
66 |
67 |
68 | Header Files
69 |
70 |
71 | Resource Files
72 |
73 |
74 |
75 |
76 | Resource Files
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Liquesce/LogDisplay.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 |
3 | // ---------------------------------------------------------------------------------------------------------------
4 | //
5 | //
6 | // Copyright (C) 2010-2013 Simon Coghlan (Aka Smurf-IV)
7 | //
8 | // This program is free software: you can redistribute it and/or modify
9 | // it under the terms of the GNU General Public License as published by
10 | // the Free Software Foundation, either version 2 of the License, or
11 | // any later version.
12 | //
13 | // This program is distributed in the hope that it will be useful,
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | // GNU General Public License for more details.
17 | //
18 | // You should have received a copy of the GNU General Public License
19 | // along with this program. If not, see http://www.gnu.org/licenses/.
20 | //
21 | //
22 | // Url: http://Liquesce.codeplex.com/
23 | // Email: http://www.codeplex.com/site/users/view/smurfiv
24 | //
25 | // --------------------------------------------------------------------------------------------------------------------
26 |
27 | #endregion Copyright (C)
28 |
29 | using System;
30 | using System.Diagnostics;
31 | using System.IO;
32 | using System.Windows.Forms;
33 | using NLog;
34 |
35 | namespace Liquesce
36 | {
37 | ///
38 | ///
39 | ///
40 | static public class DisplayLog
41 | {
42 | static private readonly Logger Log = LogManager.GetCurrentClassLogger();
43 |
44 | public static string FindLogLocation(string logLocation)
45 | {
46 | return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
47 | logLocation);
48 | }
49 |
50 | static public string FindLogLocationViaOpen(string logLocation)
51 | {
52 | OpenFileDialog openFileDialog = new OpenFileDialog
53 | {
54 | Filter = "Log files (*.log)|*.log|Archive logs (*.*)|*.*",
55 | FileName = "*.log",
56 | FilterIndex = 2,
57 | Title = "Select name to view contents",
58 | InitialDirectory = FindLogLocation(logLocation)
59 | };
60 |
61 | return (openFileDialog.ShowDialog() == DialogResult.OK) ? openFileDialog.FileName : string.Empty;
62 | }
63 |
64 | ///
65 | ///
66 | ///
67 | static public void LogDisplay(string logLocation)
68 | {
69 | try
70 | {
71 | logLocation = FindLogLocationViaOpen(logLocation);
72 | if (!string.IsNullOrEmpty(logLocation))
73 | {
74 | Process word = Process.Start("Wordpad.exe", '"' + logLocation + '"');
75 | if (word != null)
76 | {
77 | word.WaitForInputIdle();
78 | SendKeys.SendWait("^{END}");
79 | }
80 | }
81 | }
82 | catch (Exception ex)
83 | {
84 | Log.ErrorException("OpenFile has an exception: ", ex);
85 | }
86 | }
87 | }
88 | }
--------------------------------------------------------------------------------
/LiquesceSvc/LowLevelOSAccess/SafeHGlobalHandle.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.ConstrainedExecution;
3 | using System.Runtime.InteropServices;
4 |
5 | namespace LiquesceSvc
6 | {
7 | ///
8 | /// A for a global memory allocation.
9 | ///
10 | public sealed class SafeHGlobalHandle : SafeHandle
11 | {
12 | ///
13 | /// Initializes a new instance of the class.
14 | ///
15 | /// The initial handle value.
16 | /// The size of this memory block, in bytes.
17 | [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
18 | private SafeHGlobalHandle(IntPtr toManage, uint size)
19 | : base(IntPtr.Zero, true)
20 | {
21 | Size = size;
22 | SetHandle(toManage);
23 | }
24 |
25 | ///
26 | /// Initializes a new instance of the class.
27 | ///
28 | private SafeHGlobalHandle()
29 | : base(IntPtr.Zero, true)
30 | {
31 | }
32 |
33 |
34 | #region Properties
35 |
36 | ///
37 | /// Gets a value indicating whether the handle value is invalid.
38 | ///
39 | /// true if the handle value is invalid; otherwise, false
40 | public override bool IsInvalid
41 | {
42 | get { return IntPtr.Zero == handle; }
43 | }
44 |
45 | ///
46 | /// Returns the size of this memory block.
47 | ///
48 | /// The size of this memory block, in bytes.
49 | public uint Size { get; private set; }
50 |
51 | #endregion
52 |
53 | #region Methods
54 |
55 | ///
56 | /// Allocates memory from the unmanaged memory of the process using GlobalAlloc.
57 | ///
58 | /// The number of bytes in memory required.
59 | /// A SafeHGlobalHandle representing the memory.
60 | /// There is insufficient memory to satisfy the request.
61 | public static SafeHGlobalHandle Allocate(uint bytes)
62 | {
63 | return new SafeHGlobalHandle(Marshal.AllocHGlobal((int) bytes), bytes);
64 | }
65 |
66 | ///
67 | /// Returns an invalid handle.
68 | ///
69 | /// An invalid SafeHGlobalHandle.
70 | public static SafeHGlobalHandle Invalid()
71 | {
72 | return new SafeHGlobalHandle();
73 | }
74 |
75 | ///
76 | /// Executes the code required to free the handle.
77 | ///
78 | ///
79 | /// true if the handle is released successfully;
80 | /// otherwise, in the event of a catastrophic failure, false.
81 | /// In this case, it generates a releaseHandleFailed MDA Managed Debugging Assistant.
82 | ///
83 | protected override bool ReleaseHandle()
84 | {
85 | Marshal.FreeHGlobal(handle);
86 | return true;
87 | }
88 |
89 | #endregion
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/Liquesce/Shared/SplitContainerEx.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 |
5 | namespace Liquesce
6 | {
7 | ///
8 | /// Draw dots, bar, and remove focus after drag
9 | ///
10 | public class SplitContainerEx : SplitContainer
11 | {
12 | /// Determines the thickness of the splitter.
13 | [DefaultValue(typeof(int), "5"), Description("Determines the thickness of the splitter.")]
14 | public virtual new int SplitterWidth
15 | {
16 | get { return base.SplitterWidth; }
17 | set
18 | {
19 | if (value < 5)
20 | value = 5;
21 |
22 | base.SplitterWidth = value;
23 | }
24 | }
25 |
26 | private bool _painting;
27 | public override bool Focused
28 | {
29 | get { return _painting ? false : base.Focused; }
30 | }
31 |
32 | protected override void OnPaint(PaintEventArgs e)
33 | {
34 | _painting = true;
35 |
36 | try
37 | {
38 | base.OnPaint(e);
39 | // ControlPaint.DrawGrabHandle(e.Graphics, SplitterRectangle, true, Enabled);
40 |
41 | //paint the three dots'
42 | Point[] points = new Point[4];
43 | int w = Width;
44 | int h = Height;
45 | int d = SplitterDistance;
46 | int sW = SplitterWidth;
47 | int sWC = (sW / 2);
48 |
49 | if (Orientation == Orientation.Horizontal)
50 | {
51 | e.Graphics.DrawLine(SystemPens.ControlLightLight, 0, d + sWC-1, w, d + sWC-1);
52 | //e.Graphics.DrawLine(SystemPens.Control, 0, d + (sW / 2), w, d + (sW / 2));
53 | e.Graphics.DrawLine(SystemPens.ControlDark, 0, d + sWC+1, w, d + sWC+1);
54 | points[0] = new Point((w / 2) - 15, d + sWC);
55 | points[1] = new Point(points[0].X + 10, points[0].Y);
56 | points[2] = new Point(points[0].X + 20, points[0].Y);
57 | points[3] = new Point(points[0].X + 30, points[0].Y);
58 | }
59 | else
60 | {
61 | e.Graphics.DrawLine(SystemPens.ControlLightLight, d + sWC-1, 0, d + sWC-1, h);
62 | //e.Graphics.DrawLine(SystemPens.ControlDark, d + (sW / 2), 0, d + (sW / 2), h);
63 | e.Graphics.DrawLine(SystemPens.ControlDark, d + sWC+1, 0, d + sWC+1, h);
64 | points[0] = new Point(d + sWC, (h / 2) - 15);
65 | points[1] = new Point(points[0].X, points[0].Y + 10);
66 | points[2] = new Point(points[0].X, points[0].Y + 20);
67 | points[3] = new Point(points[0].X, points[0].Y + 30);
68 | }
69 |
70 | foreach (Point p in points)
71 | {
72 | p.Offset(-2, -2);
73 | e.Graphics.FillEllipse(SystemBrushes.ControlDark, new Rectangle(p, new Size(3, 3)));
74 |
75 | p.Offset(1, 1);
76 | e.Graphics.FillEllipse(SystemBrushes.ControlLight, new Rectangle(p, new Size(3, 3)));
77 | }
78 | }
79 | finally
80 | {
81 | _painting = false;
82 | }
83 | }
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/LiquesceTray/FreeSpace.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace LiquesceTray
2 | {
3 | partial class FreeSpace
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FreeSpace));
33 | this.timer1 = new System.Windows.Forms.Timer(this.components);
34 | this.flowLayout = new System.Windows.Forms.FlowLayoutPanel();
35 | this.SuspendLayout();
36 | //
37 | // timer1
38 | //
39 | this.timer1.Enabled = true;
40 | this.timer1.Interval = 3000;
41 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
42 | //
43 | // flowLayout
44 | //
45 | this.flowLayout.AutoScroll = true;
46 | this.flowLayout.Dock = System.Windows.Forms.DockStyle.Fill;
47 | this.flowLayout.Location = new System.Drawing.Point(0, 0);
48 | this.flowLayout.Name = "flowLayout";
49 | this.flowLayout.Size = new System.Drawing.Size(814, 362);
50 | this.flowLayout.TabIndex = 0;
51 | //
52 | // FreeSpace
53 | //
54 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
55 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
56 | this.ClientSize = new System.Drawing.Size(814, 362);
57 | this.Controls.Add(this.flowLayout);
58 | this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
59 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
60 | this.MaximumSize = new System.Drawing.Size(939, 107688);
61 | this.MinimizeBox = false;
62 | this.MinimumSize = new System.Drawing.Size(830, 40);
63 | this.Name = "FreeSpace";
64 | this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
65 | this.Text = "Liquesce Free Space";
66 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FreeSpace_FormClosing);
67 | this.Load += new System.EventHandler(this.Form1_Load);
68 | this.ResumeLayout(false);
69 |
70 | }
71 |
72 | #endregion
73 |
74 | private System.Windows.Forms.Timer timer1;
75 | private System.Windows.Forms.FlowLayoutPanel flowLayout;
76 |
77 |
78 |
79 |
80 | }
81 | }
--------------------------------------------------------------------------------
/LiquesceFaçade/LiquesceCallBackProxy.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.ServiceModel;
29 |
30 | namespace LiquesceFacade
31 | {
32 | public class LiquesceCallBackProxy : DuplexClientBase, ILiquesceCallBack
33 | {
34 |
35 | public LiquesceCallBackProxy(InstanceContext callbackInstance)
36 | : base(callbackInstance)
37 | {
38 | }
39 |
40 | public LiquesceCallBackProxy(InstanceContext callbackInstance, string endpointConfigurationName)
41 | : base(callbackInstance, endpointConfigurationName)
42 | {
43 | }
44 |
45 | public LiquesceCallBackProxy(InstanceContext callbackInstance, string endpointConfigurationName, string remoteAddress)
46 | : base(callbackInstance, endpointConfigurationName, remoteAddress)
47 | {
48 | }
49 |
50 | public LiquesceCallBackProxy(InstanceContext callbackInstance, string endpointConfigurationName, EndpointAddress remoteAddress)
51 | : base(callbackInstance, endpointConfigurationName, remoteAddress)
52 | {
53 | }
54 |
55 | public LiquesceCallBackProxy(InstanceContext callbackInstance, System.ServiceModel.Channels.Binding binding, EndpointAddress remoteAddress)
56 | : base(callbackInstance, binding, remoteAddress)
57 | {
58 | }
59 |
60 | #region Implementation of ILiquesceCallBack
61 |
62 | public void Subscribe(Client id)
63 | {
64 | try
65 | {
66 | base.Channel.Subscribe(id);
67 | }
68 | catch (EndpointNotFoundException ex)
69 | {
70 |
71 | throw new ApplicationException("Liquesce service is off. Please start the Liquesce server first then try to connect",ex);
72 | }
73 | catch (CommunicationException ex)
74 | {
75 |
76 | throw new ApplicationException("Liquesce Service is off. Please start the Liquesce server first then try to connect", ex);
77 | }
78 | }
79 |
80 | public void Unsubscribe(Client id)
81 | {
82 | base.Channel.Unsubscribe(id);
83 | }
84 |
85 | #endregion
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/ThirdParty/CBFSWixCA/TestTheCBFSInstall/TestTheCBFSInstall.wixproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 | 3.6
7 | {3737e08f-ff33-4483-93eb-b71200af17fa}
8 | 2.0
9 | TestTheCBFSInstall
10 | Package
11 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
12 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
13 | SAK
14 | SAK
15 | SAK
16 | SAK
17 |
18 |
19 | bin\$(Configuration)\
20 | obj\$(Configuration)\
21 | Debug
22 |
23 |
24 | bin\$(Configuration)\
25 | obj\$(Configuration)\
26 | False
27 | True
28 | 1137;1076
29 |
30 |
31 |
32 |
33 |
34 |
35 | CBFSWixCA
36 | {2bf998a5-8bed-4975-91c5-7893dd138320}
37 | True
38 | True
39 | Binaries;Content;Satellites
40 | INSTALLFOLDER
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | Liquesce.ico
51 |
52 |
53 | x86\msvcp100.dll
54 |
55 |
56 | x86\msvcr100.dll
57 |
58 |
59 | x64\msvcp100.dll
60 |
61 |
62 | x64\msvcr100.dll
63 |
64 |
65 |
66 |
67 |
75 |
--------------------------------------------------------------------------------
/LiquesceTray/StateChangeHandler.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2012 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.ServiceModel;
29 | using LiquesceFacade;
30 | using NLog;
31 |
32 | namespace LiquesceTray
33 | {
34 | public class StateChangeHandler : IStateChange
35 | {
36 | private static readonly Logger Log = LogManager.GetCurrentClassLogger();
37 | LiquesceCallBackProxy client;
38 | private readonly Client guid = new Client { id = Guid.NewGuid() };
39 |
40 | public delegate void SetStateDelegate(LiquesceSvcState state, string text);
41 | private SetStateDelegate setStateDelegate;
42 |
43 | public void CreateCallBack( SetStateDelegate newDelegate)
44 | {
45 | try
46 | {
47 | setStateDelegate = newDelegate;
48 | NetNamedPipeBinding namedpipebinding = new NetNamedPipeBinding();
49 | EndpointAddress endpointAddress = new EndpointAddress("net.pipe://localhost/LiquesceCallBackFacade");
50 | InstanceContext context = new InstanceContext(this);
51 | client = new LiquesceCallBackProxy(context, namedpipebinding, endpointAddress);
52 | client.Subscribe(guid);
53 | }
54 | catch (Exception ex)
55 | {
56 | Log.ErrorException("CreateCallBack:", ex);
57 | Update(LiquesceSvcState.InError, ex.Message);
58 | client = null;
59 | setStateDelegate = null;
60 | }
61 | }
62 |
63 | public void RemoveCallback()
64 | {
65 | try
66 | {
67 | if (client != null)
68 | {
69 | client.Unsubscribe(guid);
70 | }
71 | }
72 | catch (Exception ex)
73 | {
74 | Log.ErrorException("RemoveCallback:", ex);
75 | Update(LiquesceSvcState.InError, ex.Message);
76 | }
77 | finally
78 | {
79 | client = null;
80 | setStateDelegate = null;
81 | }
82 | }
83 |
84 | #region Implementation of ILiquesceCallback
85 |
86 | public void Update(LiquesceSvcState state, string message)
87 | {
88 | SetStateDelegate handler = setStateDelegate;
89 | if (handler != null)
90 | handler(state, message);
91 | }
92 |
93 | #endregion
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/LiquesceTray/DropZone.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace LiquesceTray
2 | {
3 | partial class DropZone
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DropZone));
32 | this.textBox1 = new System.Windows.Forms.TextBox();
33 | this.listBox1 = new System.Windows.Forms.ListBox();
34 | this.SuspendLayout();
35 | //
36 | // textBox1
37 | //
38 | this.textBox1.Location = new System.Drawing.Point(14, 13);
39 | this.textBox1.Name = "textBox1";
40 | this.textBox1.Size = new System.Drawing.Size(637, 22);
41 | this.textBox1.TabIndex = 0;
42 | //
43 | // listBox1
44 | //
45 | this.listBox1.FormattingEnabled = true;
46 | this.listBox1.ItemHeight = 14;
47 | this.listBox1.Location = new System.Drawing.Point(14, 41);
48 | this.listBox1.Name = "listBox1";
49 | this.listBox1.Size = new System.Drawing.Size(637, 102);
50 | this.listBox1.TabIndex = 1;
51 | //
52 | // DropZone
53 | //
54 | this.AllowDrop = true;
55 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
56 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
57 | this.ClientSize = new System.Drawing.Size(666, 156);
58 | this.Controls.Add(this.listBox1);
59 | this.Controls.Add(this.textBox1);
60 | this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
61 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
62 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
63 | this.MaximizeBox = false;
64 | this.MinimizeBox = false;
65 | this.Name = "DropZone";
66 | this.Opacity = 0.75D;
67 | this.ShowInTaskbar = false;
68 | this.Text = "DropZone - Drag and drop your files or folders here to see on which disks they ar" +
69 | "e!";
70 | this.TopMost = true;
71 | this.Load += new System.EventHandler(this.DropZone_Load);
72 | this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Dropper_DragDrop);
73 | this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Dropper_DragEnter);
74 | this.ResumeLayout(false);
75 | this.PerformLayout();
76 |
77 | }
78 |
79 | #endregion
80 |
81 | private System.Windows.Forms.TextBox textBox1;
82 | private System.Windows.Forms.ListBox listBox1;
83 | }
84 | }
--------------------------------------------------------------------------------
/LiquesceTray/WindowLocation.cs:
--------------------------------------------------------------------------------
1 | // Code ideas stolen and adapted from
2 | // http://www.codeproject.com/Articles/25510/Restore-Form-Position-and-Size-in-C
3 |
4 | using System.Drawing;
5 | using System.Globalization;
6 | using System.Windows.Forms;
7 |
8 | namespace LiquesceTray
9 | {
10 | internal static class WindowLocation
11 | {
12 | public static void GeometryFromString(string thisWindowGeometry, Form formIn)
13 | {
14 | if (string.IsNullOrEmpty(thisWindowGeometry))
15 | {
16 | return;
17 | }
18 | string[] numbers = thisWindowGeometry.Split('|');
19 | string windowString = numbers[4];
20 | switch (windowString)
21 | {
22 | case "Normal":
23 | {
24 | Point windowPoint = new Point(int.Parse(numbers[0], CultureInfo.InvariantCulture),
25 | int.Parse(numbers[1], CultureInfo.InvariantCulture));
26 | Size windowSize = new Size(int.Parse(numbers[2], CultureInfo.InvariantCulture),
27 | int.Parse(numbers[3], CultureInfo.InvariantCulture));
28 |
29 | bool locOkay = GeometryIsBizarreLocation(windowPoint, windowSize);
30 | bool sizeOkay = GeometryIsBizarreSize(windowSize);
31 |
32 | if (locOkay && sizeOkay)
33 | {
34 | formIn.Location = windowPoint;
35 | formIn.Size = windowSize;
36 | formIn.StartPosition = FormStartPosition.Manual;
37 | formIn.WindowState = FormWindowState.Normal;
38 | }
39 | else if (sizeOkay)
40 | {
41 | formIn.Size = windowSize;
42 | }
43 | }
44 | break;
45 | case "Maximized":
46 | formIn.Location = new Point(100, 100);
47 | formIn.StartPosition = FormStartPosition.Manual;
48 | formIn.WindowState = FormWindowState.Maximized;
49 | break;
50 | }
51 | }
52 |
53 | private static bool GeometryIsBizarreLocation(Point loc, Size size)
54 | {
55 | bool locOkay;
56 | if (loc.X < 0 || loc.Y < 0)
57 | {
58 | locOkay = false;
59 | }
60 | else if (loc.X + size.Width > Screen.PrimaryScreen.WorkingArea.Width)
61 | {
62 | locOkay = false;
63 | }
64 | else if (loc.Y + size.Height > Screen.PrimaryScreen.WorkingArea.Height)
65 | {
66 | locOkay = false;
67 | }
68 | else
69 | {
70 | locOkay = true;
71 | }
72 | return locOkay;
73 | }
74 |
75 | private static bool GeometryIsBizarreSize(Size size)
76 | {
77 | return (size.Height <= Screen.PrimaryScreen.WorkingArea.Height &&
78 | size.Width <= Screen.PrimaryScreen.WorkingArea.Width);
79 | }
80 |
81 | public static string GeometryToString(Form mainForm)
82 | {
83 | // Use internal string allocated buffer to make the final string, rather than individual string concats.
84 | return string.Join( "|", new string[] {mainForm.Location.X.ToString(CultureInfo.InvariantCulture),
85 | mainForm.Location.Y.ToString(CultureInfo.InvariantCulture),
86 | mainForm.Size.Width.ToString(CultureInfo.InvariantCulture),
87 | mainForm.Size.Height.ToString(CultureInfo.InvariantCulture),
88 | mainForm.WindowState.ToString()
89 | });
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/Liquesce_Setup/Liquesce_Setup.wixproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 | 3.5
7 | {ef06e5cb-374e-4e67-9057-785a3b7dad5a}
8 | 2.0
9 | Liquesce_Setup
10 | Package
11 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
12 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
13 | $/Liquesce/Liquesce-PhaseII/Liquesce_Setup
14 | {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
15 | https://tfs.codeplex.com/tfs/tfs08
16 | .
17 |
18 |
19 | bin\$(Configuration)\
20 | obj\$(Configuration)\
21 | Debug
22 |
23 |
24 | bin\$(Configuration)\
25 | obj\$(Configuration)\
26 | False
27 | True
28 | ICE30
29 | 1137;1076
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | $(WixExtDir)\WixUIExtension.dll
40 | WixUIExtension
41 |
42 |
43 | $(WixExtDir)\WixUtilExtension.dll
44 | WixUtilExtension
45 |
46 |
47 | $(WixExtDir)\WixNetFxExtension.dll
48 | WixNetFxExtension
49 |
50 |
51 | $(WixExtDir)\WixFirewallExtension.dll
52 | WixFirewallExtension
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | CBFSWixCA
62 | {2bf998a5-8bed-4975-91c5-7893dd138320}
63 | True
64 | True
65 | Binaries;Content;Satellites
66 | INSTALLFOLDER
67 |
68 |
69 |
70 |
78 |
--------------------------------------------------------------------------------
/LiquesceFaçade/RWLSExtension.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 |
3 | // ---------------------------------------------------------------------------------------------------------------
4 | //
5 | //
6 | // This program is free software: you can redistribute it and/or modify
7 | //
8 | // This program is distributed in the hope that it will be useful,
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 | //
12 | //
13 | // Url: http://stackoverflow.com/questions/407238/readerwriterlockslim-vs-monitor
14 | //
15 | // --------------------------------------------------------------------------------------------------------------------
16 |
17 | #endregion Copyright (C)
18 |
19 | using System;
20 | using System.Threading;
21 |
22 | namespace LiquesceFacade
23 | {
24 | // Stolen from http://stackoverflow.com/questions/407238/readerwriterlockslim-vs-monitor
25 | //
26 | public static class RWLSExtension
27 | {
28 | public static ReadLockHelper ReadLock(this ReaderWriterLockSlim readerWriterLock)
29 | {
30 | return new ReadLockHelper(readerWriterLock);
31 | }
32 |
33 | public static UpgradeableReadLockHelper UpgradableReadLock(this ReaderWriterLockSlim readerWriterLock)
34 | {
35 | return new UpgradeableReadLockHelper(readerWriterLock);
36 | }
37 |
38 | public static WriteLockHelper WriteLock(this ReaderWriterLockSlim readerWriterLock)
39 | {
40 | return new WriteLockHelper(readerWriterLock);
41 | }
42 |
43 | public struct ReadLockHelper : IDisposable
44 | {
45 | private readonly ReaderWriterLockSlim readerWriterLock;
46 |
47 | public ReadLockHelper(ReaderWriterLockSlim readerWriterLock)
48 | {
49 | readerWriterLock.EnterReadLock();
50 | this.readerWriterLock = readerWriterLock;
51 | }
52 |
53 | public void Dispose()
54 | {
55 | readerWriterLock.ExitReadLock();
56 | }
57 | }
58 |
59 | public struct UpgradeableReadLockHelper : IDisposable
60 | {
61 | private readonly ReaderWriterLockSlim readerWriterLock;
62 |
63 | public UpgradeableReadLockHelper(ReaderWriterLockSlim readerWriterLock)
64 | {
65 | readerWriterLock.EnterUpgradeableReadLock();
66 | this.readerWriterLock = readerWriterLock;
67 | }
68 |
69 | public void Dispose()
70 | {
71 | readerWriterLock.ExitUpgradeableReadLock();
72 | }
73 | }
74 |
75 | public struct WriteLockHelper : IDisposable
76 | {
77 | private readonly ReaderWriterLockSlim readerWriterLock;
78 |
79 | public WriteLockHelper(ReaderWriterLockSlim readerWriterLock)
80 | {
81 | readerWriterLock.EnterWriteLock();
82 | this.readerWriterLock = readerWriterLock;
83 | }
84 |
85 | public void Dispose()
86 | {
87 | readerWriterLock.ExitWriteLock();
88 | }
89 | }
90 | }
91 |
92 | // Example usage
93 |
94 | //class ReaderWriterLockedList : SlowList
95 | //{
96 | // ReaderWriterLockSlim slimLock = new ReaderWriterLockSlim();
97 |
98 | // public override T this[int index]
99 | // {
100 | // get
101 | // {
102 | // using (slimLock.ReadLock())
103 | // {
104 | // return base[index];
105 | // }
106 | // }
107 | // set
108 | // {
109 | // using (slimLock.WriteLock())
110 | // {
111 | // base[index] = value;
112 | // }
113 | // }
114 | // }
115 | //}
116 | }
--------------------------------------------------------------------------------
/LiquesceTrayHelper/Program.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 |
3 | // ---------------------------------------------------------------------------------------------------------------
4 | //
5 | //
6 | // Copyright (C) 2010-2014 Simon Coghlan (Aka Smurf-IV)
7 | //
8 | // This program is free software: you can redistribute it and/or modify
9 | // it under the terms of the GNU General Public License as published by
10 | // the Free Software Foundation, either version 2 of the License, or
11 | // any later version.
12 | //
13 | // This program is distributed in the hope that it will be useful,
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | // GNU General Public License for more details.
17 | //
18 | // You should have received a copy of the GNU General Public License
19 | // along with this program. If not, see http://www.gnu.org/licenses/.
20 | //
21 | //
22 | // Url: http://Liquesce.codeplex.com/
23 | // Email: http://www.codeplex.com/site/users/view/smurfiv
24 | //
25 | // --------------------------------------------------------------------------------------------------------------------
26 |
27 | #endregion Copyright (C)
28 |
29 | using System;
30 | using System.Diagnostics;
31 | using System.ServiceProcess;
32 | using System.Windows.Forms;
33 |
34 | namespace LiquesceTrayHelper
35 | {
36 | internal static class Program
37 | {
38 | private static void Main(string[] args)
39 | {
40 | try
41 | {
42 | AppDomain.CurrentDomain.UnhandledException += logUnhandledException;
43 | }
44 | catch (Exception ex)
45 | {
46 | try
47 | {
48 | MessageBox.Show(ex.Message, "Liquesce Service Control", MessageBoxButtons.OK, MessageBoxIcon.Error);
49 | }
50 | catch
51 | {
52 | }
53 | }
54 | try
55 | {
56 | foreach (string t in args)
57 | {
58 | switch (t.ToLower())
59 | {
60 | case "-debug":
61 | Debugger.Launch();
62 | break;
63 |
64 | case "stop":
65 | {
66 | ServiceController serviceController1 = new ServiceController { ServiceName = "LiquesceSvc" };
67 | if (serviceController1.Status != ServiceControllerStatus.Stopped)
68 | {
69 | serviceController1.Stop();
70 | }
71 | }
72 | break;
73 |
74 | case "start":
75 | {
76 | ServiceController serviceController1 = new ServiceController { ServiceName = "LiquesceSvc" };
77 | if (serviceController1.Status != ServiceControllerStatus.Running)
78 | {
79 | serviceController1.Start();
80 | }
81 | }
82 | break;
83 | }
84 | }
85 | }
86 | catch (Exception ex)
87 | {
88 | MessageBox.Show(ex.Message, "Liquesce Service Control", MessageBoxButtons.OK, MessageBoxIcon.Error);
89 | }
90 | }
91 |
92 | private static void logUnhandledException(object sender, UnhandledExceptionEventArgs e)
93 | {
94 | try
95 | {
96 | Exception ex = e.ExceptionObject as Exception;
97 | MessageBox.Show(ex != null ? ex.Message : "Unhandled Excpetion", "Liquesce Service Control",
98 | MessageBoxButtons.OK, MessageBoxIcon.Error);
99 | }
100 | catch
101 | {
102 | }
103 | }
104 | }
105 | }
--------------------------------------------------------------------------------
/Liquesce/Tabs/MountingPoints.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.Linq;
29 | using System.Windows.Forms;
30 | using LiquesceFacade;
31 |
32 | namespace Liquesce.Tabs
33 | {
34 | public partial class MountingPoints : UserControl, ITab
35 | {
36 | public MountingPoints()
37 | {
38 | InitializeComponent();
39 | DoubleBuffered = true;
40 | }
41 |
42 | private ConfigDetails cd1;
43 | public ConfigDetails cd
44 | {
45 | set
46 | {
47 | cd1 = value;
48 | edit1.cd = cd;
49 | PopulateMountList();
50 | }
51 | private get { return cd1; }
52 | }
53 |
54 | private void PopulateMountList()
55 | {
56 | listExistingMounts.Items.Clear();
57 | foreach (MountDetail mt in cd1.MountDetails)
58 | {
59 | listExistingMounts.Items.Add(string.Format("{0} ({1})", mt.VolumeLabel, mt.DriveLetter));
60 | }
61 | listExistingMounts.SelectedIndex = 0;
62 | }
63 |
64 | private void listExistingMounts_SelectedIndexChanged(object sender, EventArgs e)
65 | {
66 | edit1.SelectedIndex( listExistingMounts.SelectedIndex );
67 | }
68 |
69 | private void btnNew_Click(object sender, EventArgs e)
70 | {
71 | int index = cd1.MountDetails.Count;
72 | cd1.MountDetails.Add(new MountDetail());
73 | PopulateMountList();
74 | listExistingMounts.SelectedIndex = index;
75 | edit1.Visible = true;
76 | pnlStart.Visible = false;
77 | }
78 |
79 | private void btnEdit_Click(object sender, EventArgs e)
80 | {
81 | edit1.Visible = true;
82 | pnlStart.Visible = false;
83 | }
84 |
85 | private void btnDelete_Click(object sender, EventArgs e)
86 | {
87 | if (DialogResult.Yes ==
88 | MessageBox.Show(this,
89 | "Performing this action will remove the selected Mounted drive from this machine.\n Do you wish to continue ?", "Caution..",
90 | MessageBoxButtons.YesNo, MessageBoxIcon.Question))
91 | {
92 | cd1.MountDetails.RemoveAt(listExistingMounts.SelectedIndex);
93 | if (!cd1.MountDetails.Any())
94 | {
95 | cd1.MountDetails.Add(new MountDetail());
96 | }
97 | }
98 | PopulateMountList();
99 | }
100 |
101 | private void MountingPoints_Leave(object sender, EventArgs e)
102 | {
103 | // restore the "Landing visibility"
104 | pnlStart.Visible = true;
105 | edit1.Visible = false;
106 | }
107 |
108 |
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/LiquesceTray/DropZone.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2010-2011 fpFragon
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.IO;
29 | using System.Linq;
30 | using System.ServiceModel;
31 | using System.Windows.Forms;
32 | using LiquesceFacade;
33 |
34 | namespace LiquesceTray
35 | {
36 | public partial class DropZone : Form
37 | {
38 | private ConfigDetails config;
39 |
40 | public DropZone()
41 | {
42 | InitializeComponent();
43 | }
44 |
45 | private void Dropper_DragEnter(object sender, DragEventArgs e)
46 | {
47 | e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None;
48 | }
49 |
50 | private void Dropper_DragDrop(object sender, DragEventArgs e)
51 | {
52 | string[] strFiles = (string[])e.Data.GetData(DataFormats.FileDrop);
53 | GetAllRoots(strFiles[0]);
54 | }
55 |
56 | private void DropZone_Load(object sender, EventArgs e)
57 | {
58 | GetConfig();
59 |
60 | }
61 |
62 | private bool GetConfig()
63 | {
64 | bool value = true;
65 | try
66 | {
67 | EndpointAddress endpointAddress = new EndpointAddress("net.pipe://localhost/LiquesceFacade");
68 | NetNamedPipeBinding namedPipeBindingpublish = new NetNamedPipeBinding();
69 | LiquesceProxy proxy = new LiquesceProxy(namedPipeBindingpublish, endpointAddress);
70 |
71 | config = proxy.ConfigDetails;
72 | }
73 | catch
74 | {
75 | value = false;
76 | }
77 | return value;
78 | }
79 |
80 |
81 | private void GetAllRoots(string liquescePath)
82 | {
83 | textBox1.Text = liquescePath;
84 |
85 | listBox1.Items.Clear();
86 |
87 | // check if path is on liquesce drive
88 | if (config.MountDetails.Select(mt => mt.DriveLetter).Any(dv => dv[0] == liquescePath[0]))
89 | {
90 | // cut drive letter and :
91 | string relative = liquescePath.Substring(2);
92 |
93 | foreach (string root in config.MountDetails.Select(mt => mt.SourceLocations).SelectMany(scs => scs.Select(sc => sc.SourcePath)))
94 | {
95 | if (File.Exists(root + relative))
96 | {
97 | listBox1.Items.Add(root + relative);
98 | }
99 |
100 | if (Directory.Exists(root + relative))
101 | {
102 | listBox1.Items.Add(root + relative);
103 | }
104 | }
105 | }
106 | else
107 | {
108 | listBox1.Items.Add("File is not in Liquesce Drive.");
109 | }
110 | }
111 |
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/Liquesce_Setup/CBFS.wxs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | NOT Installed AND NOT UPGRADINGPRODUCTCODE
65 | NOT Installed AND NOT UPGRADINGPRODUCTCODE
66 |
67 | Installed AND NOT UPGRADINGPRODUCTCODE
68 | Installed AND NOT UPGRADINGPRODUCTCODE
69 |
70 |
71 |
72 | Installing CBFS
73 | Uninstalling CBFS
74 |
75 |
76 |
--------------------------------------------------------------------------------
/Liquesce/Tabs/Welcome.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 | // ---------------------------------------------------------------------------------------------------------------
3 | //
4 | //
5 | // Copyright (C) 2013 Simon Coghlan (Aka Smurf-IV)
6 | //
7 | // This program is free software: you can redistribute it and/or modify
8 | // it under the terms of the GNU General Public License as published by
9 | // the Free Software Foundation, either version 2 of the License, or
10 | // any later version.
11 | //
12 | // This program is distributed in the hope that it will be useful,
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | // GNU General Public License for more details.
16 | //
17 | // You should have received a copy of the GNU General Public License
18 | // along with this program. If not, see http://www.gnu.org/licenses/.
19 | //
20 | //
21 | // Url: http://Liquesce.codeplex.com/
22 | // Email: http://www.codeplex.com/site/users/view/smurfiv
23 | //
24 | // --------------------------------------------------------------------------------------------------------------------
25 | #endregion
26 |
27 | using System;
28 | using System.Reflection;
29 | using System.Windows.Forms;
30 |
31 | namespace Liquesce.Tabs
32 | {
33 | public partial class Welcome : UserControl
34 | {
35 | public Welcome()
36 | {
37 | InitializeComponent();
38 | DoubleBuffered = true;
39 |
40 | // Converted from the Welcome.rtf text via notepad :-)
41 | richTextBox1.Rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset2 Symbol;}}
42 | {\colortbl ;\red0\green0\blue255;}
43 | {\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\ul\b\f0\fs24 Welcome.\ulnone\b0\fs18\par
44 | \fs20 This is the management application for the \i Liquesce Phase \fs22 ][\fs20 Suite\i0 . It allows you to take your hard disks (internal or external) and make them appear as single large drive.\par
45 | \par
46 | \ul\b Performance Tip:\ulnone\b0\par
47 | Please ensure that for \i any \i0 mounted drive letter \i or \i0 folder that is created via Liquesce, is \i not \i0 protected by an Anti-Virus apllication.\par
48 | This is because 'It' (the AV) will see all file actions (opens, closes, queries, etc.) on both the source \b AND \b0 the new mount point, and will seriously impact your performance.\par
49 | \b\par
50 | \ul Debug Tips:\b0\par
51 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720\ulnone Stop the service\par
52 | {\pntext\f1\'B7\tab}Delete the Svc logs\par
53 | {\pntext\f1\'B7\tab}Adjust your logging to Trace,\par
54 | {\pntext\f1\'B7\tab}Drop the threads down to 1, \par
55 | {\pntext\f1\'B7\tab}Start the service\par
56 | {\pntext\f1\'B7\tab}Perform the actions that cause a problem. e.g.\par
57 | \pard{\pntext\f0 i.\tab}{\*\pn\pnlvlbody\pnf0\pnindent0\pnstart1\pnlcrm{\pntxta.}}
58 | \fi-360\li1080 Use wordpad to open a file on the mounted drive (Make new if you can)\par
59 | {\pntext\f0 ii.\tab}Make some edits\par
60 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li720 Make a note of the time (UTC/GMT).\par
61 | {\pntext\f1\'B7\tab}Stop the service and zip them up \fs18\par
62 | \pard{\pntext\f0 i.\tab}{\*\pn\pnlvlbody\pnf0\pnindent0\pnstart1\pnlcrm{\pntxta.}}
63 | \fi-360\li1080\fs20 Use the 'Zip Logs' button in the Logging tab,\fs18\par
64 | \fs20{\pntext\f0 ii.\tab}Create a new issue here: {\field{\*\fldinst{HYPERLINK 'https://liquesce.codeplex.com/workitem/list/basic'}}{\fldrslt{\ul\cf1 https://liquesce.codeplex.com/workitem/list/basic}}}\f0\fs20 . \lang9\fs22\par
65 | \lang2057\fs20{\pntext\f0 iii.\tab}With the notes of how and when, fill in the details and attach the log(s)\lang9\fs22\par
66 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360\lang2057\fs20 If the actions can be done via clicking things, then use PSR (Problem Steps Recorder) {\field{\*\fldinst{HYPERLINK 'http://www.msigeek.com/2410/problem-step-recorder-an-amazing-screen-capture-tool'}}{\fldrslt{\ul\cf1 http://www.msigeek.com/2410/problem-step-recorder-an-amazing-screen-capture-tool}}}\lang9\f0\fs22\par
67 | }";
68 | }
69 |
70 | private void Welcome_Load(object sender, EventArgs e)
71 | {
72 | tsVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Liquesce/Tabs/Welcome.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace Liquesce.Tabs
2 | {
3 | partial class Welcome
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.richTextBox1 = new System.Windows.Forms.RichTextBox();
32 | this.panel1 = new System.Windows.Forms.Panel();
33 | this.label1 = new System.Windows.Forms.Label();
34 | this.tsVersion = new System.Windows.Forms.Label();
35 | this.panel1.SuspendLayout();
36 | this.SuspendLayout();
37 | //
38 | // richTextBox1
39 | //
40 | this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
41 | this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
42 | this.richTextBox1.Location = new System.Drawing.Point(0, 0);
43 | this.richTextBox1.Name = "richTextBox1";
44 | this.richTextBox1.ReadOnly = true;
45 | this.richTextBox1.Size = new System.Drawing.Size(600, 461);
46 | this.richTextBox1.TabIndex = 1;
47 | this.richTextBox1.Text = "";
48 | //
49 | // panel1
50 | //
51 | this.panel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
52 | this.panel1.Controls.Add(this.label1);
53 | this.panel1.Controls.Add(this.tsVersion);
54 | this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
55 | this.panel1.Location = new System.Drawing.Point(0, 461);
56 | this.panel1.Name = "panel1";
57 | this.panel1.Size = new System.Drawing.Size(600, 14);
58 | this.panel1.TabIndex = 2;
59 | //
60 | // label1
61 | //
62 | this.label1.AutoSize = true;
63 | this.label1.Dock = System.Windows.Forms.DockStyle.Right;
64 | this.label1.Location = new System.Drawing.Point(460, 0);
65 | this.label1.Name = "label1";
66 | this.label1.Size = new System.Drawing.Size(51, 14);
67 | this.label1.TabIndex = 0;
68 | this.label1.Text = "Version:";
69 | //
70 | // tsVersion
71 | //
72 | this.tsVersion.AutoSize = true;
73 | this.tsVersion.Dock = System.Windows.Forms.DockStyle.Right;
74 | this.tsVersion.Location = new System.Drawing.Point(511, 0);
75 | this.tsVersion.Name = "tsVersion";
76 | this.tsVersion.Size = new System.Drawing.Size(89, 14);
77 | this.tsVersion.TabIndex = 1;
78 | this.tsVersion.Text = "13.12.9999.21";
79 | //
80 | // Welcome
81 | //
82 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
83 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
84 | this.Controls.Add(this.richTextBox1);
85 | this.Controls.Add(this.panel1);
86 | this.DoubleBuffered = true;
87 | this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
88 | this.Name = "Welcome";
89 | this.Size = new System.Drawing.Size(600, 475);
90 | this.Load += new System.EventHandler(this.Welcome_Load);
91 | this.panel1.ResumeLayout(false);
92 | this.panel1.PerformLayout();
93 | this.ResumeLayout(false);
94 |
95 | }
96 |
97 | #endregion
98 |
99 | private System.Windows.Forms.RichTextBox richTextBox1;
100 | private System.Windows.Forms.Panel panel1;
101 | private System.Windows.Forms.Label label1;
102 | private System.Windows.Forms.Label tsVersion;
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/Liquesce/Program.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 |
3 | // ---------------------------------------------------------------------------------------------------------------
4 | //
5 | //
6 | // Copyright (C) 2010-2014 Simon Coghlan (Aka Smurf-IV)
7 | //
8 | // This program is free software: you can redistribute it and/or modify
9 | // it under the terms of the GNU General Public License as published by
10 | // the Free Software Foundation, either version 2 of the License, or
11 | // any later version.
12 | //
13 | // This program is distributed in the hope that it will be useful,
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | // GNU General Public License for more details.
17 | //
18 | // You should have received a copy of the GNU General Public License
19 | // along with this program. If not, see http://www.gnu.org/licenses/.
20 | //
21 | //
22 | // Url: http://Liquesce.codeplex.com/
23 | // Email: http://www.codeplex.com/site/users/view/smurfiv
24 | //
25 | // --------------------------------------------------------------------------------------------------------------------
26 | #endregion Copyright (C)
27 |
28 | using System;
29 | using System.IO;
30 | using System.Reflection;
31 | using System.Threading;
32 | using System.Windows.Forms;
33 |
34 | using NLog;
35 |
36 | namespace Liquesce
37 | {
38 | internal static class Program
39 | {
40 | private static readonly Logger Log = LogManager.GetLogger("Program");
41 |
42 | ///
43 | /// The main entry point for the application.
44 | ///
45 | [STAThread]
46 | private static void Main()
47 | {
48 | try
49 | {
50 | AppDomain.CurrentDomain.UnhandledException += logUnhandledException;
51 | }
52 | catch (Exception ex)
53 | {
54 | try
55 | {
56 | Log.FatalException("Failed to attach unhandled exception handler...", ex);
57 | }
58 | catch
59 | {
60 | }
61 | }
62 | try
63 | {
64 | Log.Error("=====================================================================");
65 | Log.Error("File Re-opened: Ver :" + Assembly.GetExecutingAssembly().GetName().Version);
66 | CheckAndRunSingleApp();
67 | }
68 | catch (Exception ex)
69 | {
70 | Log.FatalException("Exception has not been caught by the rest of the application!", ex);
71 | MessageBox.Show(ex.Message, "Uncaught Exception - Exiting !");
72 | }
73 | finally
74 | {
75 | Log.Error("File Closing");
76 | Log.Error("=====================================================================");
77 | }
78 | }
79 |
80 | private static void CheckAndRunSingleApp()
81 | {
82 | string MutexName = string.Format("{0} [{1}]", Path.GetFileName(Application.ExecutablePath), Environment.UserName);
83 | bool GrantedOwnership;
84 | // ReSharper disable once UnusedVariable
85 | using (Mutex AppUserMutex = new Mutex(true, MutexName, out GrantedOwnership))
86 | {
87 | if (GrantedOwnership)
88 | {
89 | Application.EnableVisualStyles();
90 | Application.SetCompatibleTextRenderingDefault(false);
91 | Application.DoEvents();
92 |
93 | Application.Run(new TabMainForm());
94 | }
95 | else
96 | {
97 | MessageBox.Show(MutexName + " is already running");
98 | }
99 | }
100 | }
101 |
102 | private static void logUnhandledException(object sender, UnhandledExceptionEventArgs e)
103 | {
104 | try
105 | {
106 | Log.Fatal("Unhandled exception.\r\n{0}", e.ExceptionObject);
107 | Exception ex = e.ExceptionObject as Exception;
108 | if (ex != null)
109 | {
110 | Log.FatalException("Exception details", ex);
111 | }
112 | else
113 | {
114 | Log.Fatal("Unexpected exception.");
115 | }
116 | }
117 | catch
118 | {
119 | }
120 | }
121 | }
122 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Liquesce
2 | Definition: melt from solid to liquid; mix in Synonyms: fuse, liquefy, blend, pool.
3 |
4 | Liquesce: dictionary description
5 |
6 | Definition: melt from solid to liquid; mix in
7 | Synonyms: fuse, liquefy, blend, pool.
8 | What is Liquesce?
9 |
10 | The driving force behind the Liquesce code base is to take you hard drives that have Space / Directories and merge them into a single representation in an explorer view. This is very similar to the “Drive Extender” functionality in WHS, but without the need to format your drives :-)
11 |
12 | The storage pool can use any type and size of hard drive, including SATA, IDE, ESATA, FIREWIRE, USB etc.
13 |
14 | If the drives have the same directory representation i.e. Movies on the root of both, then these will be merged into a single Movies directory within the view.
15 |
16 | Writing to this merged pool will have different strategies dependent on the setup, e.g. Folder / Balanced / Priority.
17 |
18 | image
19 |
20 | So read on and find out what Liquesce could possibly do for your separate hard drives (logically and physically), and see if it can be of use to you.
21 |
22 | For more information: go to The FAQS section
23 | OS Requirements:
24 |
25 | You will need the .Net 4.5.1 or greater, so please install that.
26 | And then run the MS updates to ensure that the security fixes are applied.
27 |
28 | Notes:
29 | - For Phase I code only you will need Dokan for the OS you are using.
30 | - For Phase II code only you will need .Net4 Full profile, for the OS you are using.
31 | Directory / Drive Merging
32 |
33 | After an install, the Management Application will be launched showing the default setup.
34 |
35 | This will be a direct mirror of Drive C with a default delay of over 32 seconds.
36 |
37 | The management window is split into three areas
38 |
39 | The File System
40 | Merge Points
41 | Expected Output
42 |
43 | The File System window shows what can be “Seen” as a potential source for the merge points. These can be opened and will show directories only. once you have selected a source, it can be dragged and dropped into the Merge Points area.
44 |
45 | The Merge Points, can be reordered and deleted in case mistakes a re made. The order in this window is used to determines the preference order for filling the storage locations.
46 |
47 | The Expected Output, allows you to traverse over the merged directories to see if the structure is correct. This will also show duplicate filenames if they exist, so please expand all the directories to see if any collisions have occurred. The system will not scan, as this is resource and time expensive.
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Below is an example of 3 small HDD’s (50MB), that have been used to set up an initial merge size of 150 MB.
56 |
57 | The “Hold Of Bytes” was set to 10MB, meaning that when a new file was to be placed onto the storage, and there is less than that number of bytes, it would move to the next in order.
58 | The configuration was then sent to the Liquesce Service via the menu operation “Send Configuration”
59 | The then Music Directory was created, and the Artist was copied into it (On the “N” drive).
60 | The Liquesce Service then spread the directory structure across the drives (See right hand explorer window)
61 | The management application was then refreshed and now you can see that it shows all the files from the album appearing as a single listing (Bottom window)
62 | Right clicking on the properties of the Music directory within the “N” drive shows that this is read as a single system.
63 |
64 | Merge-Results_thumb3[3]
65 |
66 | The Application Tray
67 |
68 | So why one of these ?
69 |
70 | Need to inform the logged on user that something might be going on.
71 | Need to have some way of alerting the normal user that things may not be good in the new drive
72 | Running out of space,
73 | unable to delete,
74 | Stats.
75 | Just need to show that it's running (Like AV's do :-)
76 | Application Management
77 | Current Space usage
78 |
79 | Current Space Usage
80 |
81 | The tray app when running on the host has a menu to show the distribution of the space over the mount points that make up the space available.
82 |
83 | Here's a view from XP
84 | Liquesce FreeDiskSpace.png
85 | - The light blue shows the amount of space currently allocated in the _backup directories
86 | - The Red border is showing that the drive has fallen below the "Hold Of Bytes" number
87 | - The Orange border is showing that the free space is approaching the "Hold Of Bytes"
88 | - The Green indicator bar (Below) shows where the next new file is likely to be created
89 | - All of this is updated on a timer
90 |
--------------------------------------------------------------------------------
/Liquesce/Tabs/CurrentShares.cs:
--------------------------------------------------------------------------------
1 | #region Copyright (C)
2 |
3 | // ---------------------------------------------------------------------------------------------------------------
4 | //
5 | //
6 | // Copyright (C) 2013-2014 Simon Coghlan (Aka Smurf-IV)
7 | //
8 | // This program is free software: you can redistribute it and/or modify
9 | // it under the terms of the GNU General Public License as published by
10 | // the Free Software Foundation, either version 2 of the License, or
11 | // any later version.
12 | //
13 | // This program is distributed in the hope that it will be useful,
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | // GNU General Public License for more details.
17 | //
18 | // You should have received a copy of the GNU General Public License
19 | // along with this program. If not, see http://www.gnu.org/licenses/.
20 | //
21 | //
22 | // Url: http://Liquesce.codeplex.com/
23 | // Email: http://www.codeplex.com/site/users/view/smurfiv
24 | //
25 | // --------------------------------------------------------------------------------------------------------------------
26 |
27 | #endregion Copyright (C)
28 |
29 | using System.Linq;
30 | using System.Text;
31 | using System.Windows.Forms;
32 | using LiquesceFacade;
33 |
34 | namespace Liquesce.Tabs
35 | {
36 | public partial class CurrentShares : UserControl, ITab
37 | {
38 | public CurrentShares()
39 | {
40 | InitializeComponent();
41 | DoubleBuffered = true;
42 | // Converted from the CurrentShares.rtf text via notepad :-)
43 | richTextBox1.Rtf = @"{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset2 Symbol;}}
44 | {\colortbl ;\red255\green0\blue0;}
45 | {\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang2057\f0\fs18 The current active 'Mount Points' owned by Liquesce will need to be \cf1\b active\b0 \cf0 for this page to work correctly.\par
46 | \pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360 Once mounts are working, create shared folder(s) via windows.\par
47 | {\pntext\f1\'B7\tab}Next, Press refresh, and check that the share details shown here are correct.\par
48 | {\pntext\f1\'B7\tab}Once correct, press save in the Service Settings tab. \par
49 | {\pntext\f1\'B7\tab}When Liquesce restarts it will then re-enable these shares.\par
50 | \pard\sa200\sl276\slmult1\lang9\i Note:\line\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-360\li360\sa200\sl276\slmult1 Initial display will be from the last stored Liquesce configuration.\i0\par
51 | }";
52 | }
53 |
54 | private ConfigDetails cd1;
55 | public ConfigDetails cd
56 | {
57 | set
58 | {
59 | cd1 = value;
60 | PopulateShareList();
61 | }
62 | private get { return cd1; }
63 | }
64 |
65 | private void PopulateShareList()
66 | {
67 | // Populate the fields
68 | foreach (object[] row in cd.MountDetails
69 | .SelectMany(mt => mt.SharesToRestore
70 | .SelectMany(share =>share.UserAccessRules
71 | .Select(fsare => new[] {
72 | share.Path,
73 | share.Name + " : " + share.Description,
74 | GetAceInformation(fsare)
75 | }
76 | )
77 | ).Cast