Skin Libraries Added
authorGeorge Pantazis <gpant@noc.grnet.gr>
Tue, 27 Mar 2012 13:48:40 +0000 (16:48 +0300)
committerGeorge Pantazis <gpant@noc.grnet.gr>
Tue, 27 Mar 2012 13:48:40 +0000 (16:48 +0300)
Skin Code Init
GRNET Test Skin Added
Fixed issue of updating used DLL's by requesting a restart in the end of the setup
Show to user which processes use the files that are to be updated.
Fixed License Agreement Check

Signed-off-by: George Pantazis <gpant@noc.grnet.gr>

trunk/Pithos.Installer/PithosPlus.iss
trunk/Pithos.Installer/PithosPlus.~is [new file with mode: 0644]
trunk/Pithos.Installer/Skin/GRNETWhite.cjstyles [new file with mode: 0644]
trunk/Pithos.Installer/Skin/ISSkin.dll [new file with mode: 0644]
trunk/Pithos.Installer/Skin/ISSkinU.dll [new file with mode: 0644]
trunk/Pithos.Installer/Skin/Tech45.msstyles [new file with mode: 0644]
trunk/Pithos.Installer/Skin/grnet.skinproj [new file with mode: 0644]
trunk/Pithos.Installer/Tools/IssProc-license-agreement.txt [new file with mode: 0644]
trunk/Pithos.Installer/Tools/IssProc.dll [new file with mode: 0644]

index 00b6c06..c782a5f 100644 (file)
@@ -14,7 +14,7 @@
 [Setup]\r
 ;WARNING: DO NOT CHANGE THE APP ID (AppId) or the update will not work correctly.\r
 ;AppId is used to check if we are installed using this isntaller and not by other means.\r
-AppId={{926354B2-04D2-47CF-8FAA-04AB3682008B}}\r
+AppID={{926354B2-04D2-47CF-8FAA-04AB3682008B}}\r
 AppName={#MyAppName}\r
 AppVersion={#MyAppVersion}\r
 AppVerName={#MyAppName} {#MyAppVersion}\r
@@ -25,27 +25,37 @@ AppSupportURL={#MyAppURL}
 AppUpdatesURL={#MyAppURL}\r
 DefaultDirName={pf}\PithosPlus\r
 DefaultGroupName={#MyAppName}\r
-AllowNoIcons=yes\r
+AllowNoIcons=true\r
 LicenseFile=Licenses\GRNET License.txt\r
 OutputBaseFilename=PithosPlus_Setupv{#MyAppVersion}\r
-SolidCompression=True  \r
-UsePreviousSetupType=True\r
-UsePreviousTasks=True\r
+SolidCompression=true\r
+UsePreviousSetupType=true\r
+UsePreviousTasks=true\r
 UsePreviousLanguage=True\r
-ShowTasksTreeLines=True\r
+ShowTasksTreeLines=true\r
 AppCopyright=(c) 2011 - 2012 GRNET\r
-PrivilegesRequired=none\r
-EnableDirDoesntExistWarning=True\r
+PrivilegesRequired=admin\r
+EnableDirDoesntExistWarning=true\r
 DirExistsWarning=yes\r
 AppContact=support@okeanos.grnet.gr\r
 AppSupportPhone=+30 210 0000000\r
 AppReadmeFile=My Readme\r
-UninstallDisplayIcon={app}\Pithos.exe\r
+UninstallDisplayIcon={app}\PithosPlus.exe\r
 WizardImageFile=Images\ppWZDImage.bmp\r
 WizardSmallImageFile=Images\ppWZDSmall.bmp\r
 VersionInfoVersion={#MyAppVersion}\r
 MinVersion=0,5.01sp3\r
 ArchitecturesInstallIn64BitMode=x64\r
+AppMutex=PITHOSMUTEX\r
+OutputDir={tmp}\r
+SetupLogging=true\r
+UninstallLogMode=append\r
+VersionInfoCompany=GRNET\r
+VersionInfoDescription=Pithos Plus\r
+VersionInfoCopyright=(c) 2011-2012 GRNET\r
+VersionInfoProductName=Pitho Plus\r
+VersionInfoProductVersion=1\r
+AppModifyPath="{app}\UninsHs.exe" /m0=AppId\r
 \r
 [Languages]\r
 Name: "english"; MessagesFile: "compiler:Default.isl"\r
@@ -65,36 +75,43 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip
 [Files]\r
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files\r
 ; Executable\r
-Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe.config"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Tasks: desktopicon; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe.config"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+; Appearance\r
+Source: "Skin\ISSkin.dll"; DestDir: {app}; Flags: dontcopy\r
+Source: "Skin\GRNETWhite.cjstyles"; DestDir: {tmp}; Flags: dontcopy\r
+; Repair/Modify\r
+Source: "Tools\UninsHs.exe"; DestDir: "{app}"; Flags: restartreplace\r
+; Running Processes\r
+Source: "Tools\IssProc.dll"; DestDir: {tmp}; Flags: dontcopy\r
 ; DLL\r
-Source: "..\Pithos.ShellExtensions\bin\x86\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode\r
-Source: "..\Pithos.ShellExtensions\bin\x64\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode\r
-Source: "..\Pithos.Client.WPF\bin\Debug\AppLimit.NetSparkle.Net40.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\AsyncCtpLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Caliburn.Micro.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Castle.ActiveRecord.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Components.Validator.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Core.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Iesi.Collections.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.ByteCode.Castle.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.Search.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\ParallelExtensionsExtras.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Core.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Interfaces.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Network.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\System.Data.SQLite.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\System.Threading.Tasks.Dataflow.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "..\Pithos.Client.WPF\bin\Debug\WPFToolkit.Extended.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.ShellExtensions\bin\x86\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode\r
+Source: "..\Pithos.ShellExtensions\bin\x64\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode\r
+Source: "..\Pithos.Client.WPF\bin\Debug\AppLimit.NetSparkle.Net40.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\AsyncCtpLibrary.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Caliburn.Micro.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.ActiveRecord.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Components.Validator.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Core.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Iesi.Collections.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\log4net.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.ByteCode.Castle.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.Search.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\ParallelExtensionsExtras.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Core.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Interfaces.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Network.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Data.SQLite.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Threading.Tasks.Dataflow.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
+Source: "..\Pithos.Client.WPF\bin\Debug\WPFToolkit.Extended.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
 ; Tortoise\r
 Source: "TortoiseOverlays\License.txt"; DestDir: "{cf}/\TortoiseOverlays"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
-Source: "TortoiseOverlays\x86\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode\r
-Source: "TortoiseOverlays\x64\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode\r
+Source: "TortoiseOverlays\x86\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Flags: restartreplace; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode\r
+Source: "TortoiseOverlays\x64\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Flags: restartreplace; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode\r
 Source: "TortoiseOverlays\icons\XPStyle\*"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
 ;Redistributables\r
 Source: "Redistributables\*"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall\r
@@ -110,7 +127,8 @@ Source: "Images\account.bmp"; Flags: dontcopy
 Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"\r
 Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"\r
 Name: "{group}\{cm:ProgramOnTheWeb,GRNET}"; Filename: "{#MyURL}"\r
-Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"\r
+;Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"\r
+Name: "{group}\Uninstall {#MyAppName}"; Filename: "{app}\UninsHs.exe"; Parameters: /u0=AppId\r
 Name: "{commonstartup}\{#MyStartupName}"; Filename: "{app}\{#MyAppExeName}"; Parameters: "startup"\r
 Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\r
 ;Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon\r
@@ -231,10 +249,7 @@ Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServe
 Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  \r
 Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles\r
 Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Overlays.AddedIcodOverlay";  \r
-;Root: "HKCR"; Subkey: "Software\Classes\CLSID\{{C5994560-53D9-4125-87C9-F193FC689CB2}"; ValueType: "String"; ValueData: "*";  \r
-;Root: "HKCR"; Subkey: "Software\Classes\CLSID\{{C5994560-53D9-4125-87C9-F193FC689CB2}"; ValueType: "String"; ValueData: "TortoiseSVN";  \r
-;Root: "HKCR"; Subkey: "Software\Classes\CLSID\{{C5994560-53D9-4125-87C9-F193FC689CB2}\InProcServer32"; ValueType: "String"; ValueData: "ThreadingModel";  \r
-;Root: "HKCR"; Subkey: "Software\Classes\CLSID\{{C5994560-53D9-4125-87C9-F193FC689CB2}\InProcServer32"; ValueType: "String"; ValueData: "[CommonFilesFolder.9D3DBC93_494B_45A8_88D7_430AB5568B0F]TortoiseOverlays\TortoiseOverlays.dll";  \r
+  \r
 Root: "HKCR"; Subkey: "Directory\Background\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueType: String; ValueData: "{{b1f1405d-94a1-4692-b72f-fc8caf8b8700}";  \r
 Root: "HKCR"; Subkey: "Directory\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueType: String; ValueData: "{{b1f1405d-94a1-4692-b72f-fc8caf8b8700}";  \r
 Root: "HKCR"; Subkey: "Pithos.ShellExtensions.FileContextMenu"; ValueType: String; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  \r
@@ -297,6 +312,40 @@ dotNET40Missing: Boolean;
          ChkBox: TCheckBox;\r
         LicenseID: Integer;      \r
 \r
+// IssFindModule called on in/uninstall\r
+function IssFindModule(hWnd: Integer; Modulename: String; Language: PAnsiChar; Silent: Boolean; CanIgnore: Boolean ): Integer;\r
+external 'IssFindModuleW@files:IssProc.dll stdcall setuponly';\r
+\r
+function IssFindModuleU(hWnd: Integer; Modulename: String; Language: PAnsiChar; Silent: Boolean; CanIgnore: Boolean ): Integer;\r
+external 'IssFindModuleW@{app}\IssProc.dll stdcall uninstallonly';\r
+\r
+//Call this to enable search for any in use file type\r
+function IssEnableAnyFileInUseCheck(Folder: String): Integer;\r
+external 'IssEnableAnyFileInUseCheckW@files:IssProc.dll stdcall setuponly';\r
+\r
+//IssEnableAnyFileInUseCheck called on uninstall\r
+function IssEnableAnyFileInUseCheckU(Folder: String): Integer;\r
+external 'IssEnableAnyFileInUseCheckW@{app}\IssProc.dll stdcall uninstallonly';\r
+\r
+//Register for commercial use on install\r
+function IssRegister(rName: PAnsiChar; rKey: PAnsiChar): Integer;\r
+external 'IssRegister@files:IssProc.dll stdcall setuponly';\r
+\r
+//Register for commercial use on uninstall\r
+function IssRegisterU(rName: PAnsiChar; rKey: PAnsiChar): Integer;\r
+external 'IssRegister@{app}\IssProc.dll stdcall uninstallonly';\r
+\r
+// Importing LoadSkin API from ISSkin.DLL\r
+procedure LoadSkin(lpszPath: String; lpszIniFileName: String);\r
+external 'LoadSkin@files:isskin.dll stdcall';\r
+\r
+procedure UnloadSkin();\r
+external 'UnloadSkin@files:isskin.dll stdcall';\r
+\r
+// Importing ShowWindow Windows API from User32.DLL\r
+function ShowWindow(hWnd: Integer; uType: Integer): Integer;\r
+external 'ShowWindow@user32.dll stdcall';\r
+\r
 function IsDotNetDetected(version: string; service: cardinal): boolean;\r
 //    'v1.1.4322'     .NET Framework 1.1\r
 //    'v2.0.50727'    .NET Framework 2.0\r
@@ -330,13 +379,52 @@ begin
     result := success and (install = 1) and (serviceCount >= service);\r
 end;\r
 \r
+function NextButtonClick(CurPage: Integer): Boolean;\r
+var\r
+  hWnd: Integer;\r
+  sModuleName: String;\r
+  nCode: Integer;  {IssFindModule returns: 0 if no module found; 1 if cancel pressed; 2 if ignore pressed; -1 if an error occured }\r
+begin\r
+  Result := true;\r
+\r
+ if CurPage = wpReady then\r
+   begin\r
+      Result := false;\r
+            \r
+      hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));                     { get main wizard handle }\r
+      IssEnableAnyFileInUseCheck(ExpandConstant('{app}'));\r
+      sModuleName :=ExpandConstant('{app}*;pithos*.exe;PithosPlus.exe');      \r
+      \r
+      nCode:=IssFindModule(hWnd,sModuleName,'en',false,true);                { search for module and display files-in-use window if found  }\r
+\r
+     if nCode=1 then  begin                                                 { cancel pressed or files-in-use window closed }\r
+          PostMessage (WizardForm.Handle, $0010, 0, 0);                     { quit setup, $0010=WM_CLOSE }\r
+     end else if (nCode=0) or (nCode=2) then begin                          { no module found or ignored pressed}\r
+          Result := true;                                                   { continue setup  }\r
+     end;\r
+\r
+  end;\r
+\r
+end;\r
+\r
 function InitializeSetup(): Boolean;\r
 begin\r
-    // Test the presence of .NET 4.0\r
-    if (not(RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4'))) then\r
-        dotNET40Missing := True;\r
+  //Unpack The Skin\r
+  ExtractTemporaryFile('GRNETWhite.msstyles');\r
+  LoadSkin(ExpandConstant('{tmp}\GRNETWhite.msstyles'), '');\r
+    \r
+  // Test the presence of .NET 4.0\r
+  if (not(RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4'))) then\r
+      dotNET40Missing := True;\r
+    \r
+  Result := True;\r
+end;\r
 \r
-    Result := True;\r
+procedure DeinitializeSetup();\r
+begin\r
+  //Hide Window widget\r
+  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);\r
+  UnloadSkin();\r
 end;\r
 \r
 function ShouldInstalldotNET40(): Boolean;\r
@@ -350,7 +438,8 @@ begin
     IsUpdate := FileExists(ExpandConstant('{app}\{#MyAppExeName}'));\r
   if CurPageID = LicenseID then\r
     Wizardform.NextButton.Enabled := False;\r
-\r
+  if (Pos('/SP-', UpperCase(GetCmdTail)) > 0) and (CurPageID = wpSelectComponents) then\r
+    WizardForm.BackButton.Visible := False;\r
 end;\r
 \r
 function NotAnUpdate: Boolean;\r
@@ -427,7 +516,7 @@ begin
   ChkBox := TCheckBox.Create(Page);\r
   ChkBox.Top := BitmapImage.Height + Memo.Height;\r
   ChkBox.Width := Page.SurfaceWidth;\r
-  ChkBox.Caption := 'I Agree with the GRNET licese';\r
+  ChkBox.Caption := 'I agree with the licese agreement';\r
   ChkBox.Checked := cbUnChecked;\r
   chkBox.OnClick := @LicenseOnClick;\r
   ChkBox.Parent := Page.Surface;\r
@@ -467,9 +556,20 @@ begin
   CreateTheWizardPages; \r
 end;\r
 \r
+function ShouldSkipPage(CurPage: Integer): Boolean;\r
+    begin\r
+      if Pos('/SP-', UpperCase(GetCmdTail)) > 0 then\r
+        case CurPage of\r
+          wpLicense, wpPassword, wpInfoBefore, wpUserInfo,\r
+          wpSelectDir, wpSelectProgramGroup, wpInfoAfter:\r
+            Result := True;\r
+        end;\r
+    end;\r
+    \r
 [Run]\r
 ;Kill Running Task\r
 Filename: cmd; parameters: /c taskkill /f /im pithos.exe;Flags: runhidden\r
 Filename: cmd; parameters: /c taskkill /f /im pithos.client.WPF.exe;Flags: runhidden\r
 ;Launch Redist\r
-Filename: {tmp}\dotNetFx40_Client_setup.exe; Description: Install Microsoft .Net Framework 4.0; Parameters: /q /noreboot; Flags: skipifdoesntexist; Check: ShouldInstalldotNET40
\ No newline at end of file
+Filename: {tmp}\dotNetFx40_Client_setup.exe; Description: Install Microsoft .Net Framework 4.0; Parameters: /q /noreboot; Flags: skipifdoesntexist; Check: ShouldInstalldotNET40\r
+Filename: {app}\UninsHs.exe; Parameters: /r0=AppId,{language},{srcexe}; Flags: runminimized\r
diff --git a/trunk/Pithos.Installer/PithosPlus.~is b/trunk/Pithos.Installer/PithosPlus.~is
new file mode 100644 (file)
index 0000000..bf1e3f9
--- /dev/null
@@ -0,0 +1,575 @@
+; Script generated by the Inno Setup Script Wizard.
+; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
+
+#define MyAppName "Pithos+"
+#define MyStartupName "Run Pithos on startup"
+#define SrcApp "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe"
+#define MyAppPublisher "GRNET"
+#define MyAppURL "http://pithos.grnet.gr/"
+#define MyAppExeName "PithosPlus.exe"
+#define MyAppVersion GetFileVersion(SrcApp)
+#define MyURL "http://www.grnet.gr/"
+#define Manufacturer "GRNET"
+
+[Setup]
+;WARNING: DO NOT CHANGE THE APP ID (AppId) or the update will not work correctly.
+;AppId is used to check if we are installed using this isntaller and not by other means.
+AppID={{926354B2-04D2-47CF-8FAA-04AB3682008B}}
+AppName={#MyAppName}
+AppVersion={#MyAppVersion}
+AppVerName={#MyAppName} {#MyAppVersion}
+UninstallDisplayName={#MyAppName} {#MyAppVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\PithosPlus
+DefaultGroupName={#MyAppName}
+AllowNoIcons=true
+LicenseFile=Licenses\GRNET License.txt
+OutputBaseFilename=PithosPlus_Setupv{#MyAppVersion}
+SolidCompression=true
+UsePreviousSetupType=true
+UsePreviousTasks=true
+UsePreviousLanguage=True
+ShowTasksTreeLines=true
+AppCopyright=(c) 2011 - 2012 GRNET
+PrivilegesRequired=admin
+EnableDirDoesntExistWarning=true
+DirExistsWarning=yes
+AppContact=support@okeanos.grnet.gr
+AppSupportPhone=+30 210 0000000
+AppReadmeFile=My Readme
+UninstallDisplayIcon={app}\PithosPlus.exe
+WizardImageFile=Images\ppWZDImage.bmp
+WizardSmallImageFile=Images\ppWZDSmall.bmp
+VersionInfoVersion={#MyAppVersion}
+MinVersion=0,5.01sp3
+ArchitecturesInstallIn64BitMode=x64
+AppMutex=PITHOSMUTEX
+OutputDir={tmp}
+SetupLogging=true
+UninstallLogMode=append
+VersionInfoCompany=GRNET
+VersionInfoDescription=Pithos Plus
+VersionInfoCopyright=(c) 2011-2012 GRNET
+VersionInfoProductName=Pitho Plus
+VersionInfoProductVersion=1
+AppModifyPath="{app}\UninsHs.exe" /m0=AppId
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
+Name: "german"; MessagesFile: "compiler:Languages\German.isl"
+Name: "french"; MessagesFile: "compiler:Languages\French.isl"
+Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
+
+[CustomMessages]
+;Web=You can visit our web site for more info
+
+[Tasks]
+Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Components: Documentation RequiredFiles
+Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1; Components: Documentation RequiredFiles
+;Name: "visitweb"; Description: "{cm:Web}"; GroupDescription: "{cm:Web}"; Flags: unchecked; Components: Documentation RequiredFiles; Languages: english french german greek spanish
+
+[Files]
+; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+; Executable
+Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Tasks: desktopicon; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\PithosPlus.exe.config"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+; Appearance
+Source: "Skin\ISSkin.dll"; DestDir: {app}; Flags: dontcopy
+Source: "Skin\GRNETWhite.cjstyles"; DestDir: {tmp}; Flags: dontcopy
+; Repair/Modify
+Source: "Tools\UninsHs.exe"; DestDir: "{app}"; Flags: restartreplace
+; Running Processes
+Source: "Tools\IssProc.dll"; DestDir: {tmp}; Flags: dontcopy
+; DLL
+Source: "..\Pithos.ShellExtensions\bin\x86\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode
+Source: "..\Pithos.ShellExtensions\bin\x64\Debug\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode
+Source: "..\Pithos.Client.WPF\bin\Debug\AppLimit.NetSparkle.Net40.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\AsyncCtpLibrary.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Caliburn.Micro.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.ActiveRecord.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Components.Validator.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Castle.Core.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Iesi.Collections.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\log4net.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.ByteCode.Castle.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\NHibernate.Search.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\ParallelExtensionsExtras.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Core.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Interfaces.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\Pithos.Network.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Data.SQLite.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Threading.Tasks.Dataflow.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "..\Pithos.Client.WPF\bin\Debug\WPFToolkit.Extended.dll"; DestDir: "{app}"; Flags: restartreplace ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+; Tortoise
+Source: "TortoiseOverlays\License.txt"; DestDir: "{cf}/\TortoiseOverlays"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+Source: "TortoiseOverlays\x86\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Flags: restartreplace; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode
+Source: "TortoiseOverlays\x64\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Flags: restartreplace; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode
+Source: "TortoiseOverlays\icons\XPStyle\*"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek
+;Redistributables
+Source: "Redistributables\*"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
+Source: "Redistributables\x86\msvcp100.dll"; DestDir: "{sys}"; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode
+Source: "Redistributables\x86\msvcr100.dll"; DestDir: "{sys}"; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode
+Source: "Redistributables\x64\msvcp100.dll"; DestDir: "{syswow64}"; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode
+Source: "Redistributables\x64\msvcr100.dll"; DestDir: "{syswow64}"; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode
+; Wizard Images
+Source: "Images\grnet-logo.bmp"; Flags: dontcopy
+Source: "Images\account.bmp"; Flags: dontcopy
+
+[Icons]
+Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
+Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
+Name: "{group}\{cm:ProgramOnTheWeb,GRNET}"; Filename: "{#MyURL}"
+;Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
+Name: "{group}\Uninstall {#MyAppName}"; Filename: "{app}\UninsHs.exe"; Parameters: /u0=AppId
+Name: "{commonstartup}\{#MyStartupName}"; Filename: "{app}\{#MyAppExeName}"; Parameters: "startup"
+Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
+;Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
+
+[Run]
+Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
+
+[Registry]
+;Startup >>> Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Pithos+"; ValueData: """{app}\{#MyAppExeName}"""; Flags: createvalueifdoesntexist uninsdeletevalue
+Root: "HKCR"; Subkey: "*\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueType: string; ValueData: "{{b1f1405d-94a1-4692-b72f-fc8caf8b8700}"
+
+Root: "HKCR"; Subkey: "CLSID\{{0CFB4119-DABE-4E32-AB2D-2D41873BC599}"; ValueType: String; ValueData: "PithosContextMenu";  
+Root: "HKCR"; Subkey: "CLSID\{{0CFB4119-DABE-4E32-AB2D-2D41873BC599}\InprocServer32"; ValueType: String; ValueData: "ThreadingModel";  
+Root: "HKCR"; Subkey: "CLSID\{{0CFB4119-DABE-4E32-AB2D-2D41873BC599}\InprocServer32"; ValueType: String; ValueData: "{app}\PithosExtensions.dll";  
+
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32\1.0.0.0"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}\ProgId"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{11051AB4-D786-4248-BC6E-369F25EC74E4}\ProgId"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay";  
+
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.NormalIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319";  Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32\1.0.0.0"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.NormalIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Overlays.NormalIconOverlay";  
+
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32\1.0.0.0"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay";  
+
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32\1.0.0.0"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319";  Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay";  
+
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32\1.0.0.0"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  
+
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\Implemented Categories";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\Implemented Categories\{{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"; ValueType: String;  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "(Default)"; ValueData: "mscoree.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.AddedIcodOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32"; ValueType: String; ValueName: "ThreadingModel"; ValueData: "Both";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "(Default)";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Assembly"; ValueData: "Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "Class"; ValueData: "Pithos.ShellExtensions.Overlays.AddedIcodOverlay";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "CodeBase"; ValueData: "{app}\Pithos.ShellExtensions.dll";  
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\InprocServer32\1.0.0.0"; ValueType: String; ValueName: "RuntimeVersion"; ValueData: "v4.0.30319"; Components: RequiredFiles
+Root: "HKCR"; Subkey: "CLSID\{{EAD1663B-9A03-4E92-80D3-B01B981CD828}\ProgId"; ValueType: String; ValueName: "(Default)"; ValueData: "Pithos.ShellExtensions.Overlays.AddedIcodOverlay";  
+  
+Root: "HKCR"; Subkey: "Directory\Background\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueType: String; ValueData: "{{b1f1405d-94a1-4692-b72f-fc8caf8b8700}";  
+Root: "HKCR"; Subkey: "Directory\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueType: String; ValueData: "{{b1f1405d-94a1-4692-b72f-fc8caf8b8700}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.FileContextMenu"; ValueType: String; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.FileContextMenu\CLSID"; ValueType: String; ValueData: "{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Menus.FileContextMenu"; ValueType: String; ValueData: "Pithos.ShellExtensions.Menus.FileContextMenu";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Menus.FileContextMenu\CLSID"; ValueType: String; ValueData: "{{B1F1405D-94A1-4692-B72F-FC8CAF8B8700}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.AddedIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.AddedIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.AddedIconOverlay\CLSID"; ValueType: String; ValueData: "{{EAD1663B-9A03-4E92-80D3-B01B981CD828}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.ConflictIconOverlay\CLSID"; ValueType: String; ValueData: "{{3EFA16FC-C6B6-4673-BFEC-BD9518F1EFCE}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.DeletedIconOverlay\CLSID"; ValueType: String; ValueData: "{{11051AB4-D786-4248-BC6E-369F25EC74E4}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.ModifiedIconOverlay\CLSID"; ValueType: String; ValueData: "{{3D05BCB0-733B-49CD-B340-9D79C17C73CC}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.NormalIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.NormalIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.NormalIconOverlay\CLSID"; ValueType: String; ValueData: "{{1941D8CA-2727-491B-BC03-9E8CA4FE972B}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.UnversionedIconOverlay\CLSID"; ValueType: String; ValueData: "{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.UnversionedOverlay"; ValueType: String; ValueData: "Pithos.ShellExtensions.Overlays.UnversionedOverlay";  
+Root: "HKCR"; Subkey: "Pithos.ShellExtensions.Overlays.UnversionedOverlay\CLSID"; ValueType: String; ValueData: "{{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}";  
+;
+Root: "HKCU"; Subkey: "Software\{#Manufacturer}";  
+Root: "HKLM"; Subkey: "Software\{#Manufacturer}\Pithos"; ValueType: dword; ValueName: "ShowOnlyInExplorer"; ValueData: "0";  
+;
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Added"; ValueType: String; ValueName: "Pithos"; ValueData: "{{ead1663b-9a03-4e92-80d3-b01b981cd828}";  
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Conflict"; ValueType: String; ValueName: "Pithos"; ValueData: "{{3efa16fc-c6b6-4673-bfec-bd9518f1efce}";  
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Deleted"; ValueType: String; ValueName: "Pithos"; ValueData: "{{11051AB4-D786-4248-BC6E-369F25EC74E4}";  
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Modified"; ValueType: String; ValueName: "Pithos"; ValueData: "{{3d05bcb0-733b-49cd-b340-9d79c17c73cc}"; Components: RequiredFiles
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Normal"; ValueType: String; ValueName: "Pithos"; ValueData: "{{1941d8ca-2727-491b-bc03-9e8ca4fe972b}";  
+Root: "HKLM"; Subkey: "Software\TortoiseOverlays\Unversioned"; ValueType: String; ValueName: "Pithos"; ValueData: "{{10cf08fe-1252-4aab-be78-971b0c5e8ae0}";  
+
+Root: "HKLM"; Subkey: "Software\{#Manufacturer}\{#MyAppName}\{{56EDB812-2F78-060D-D5D1-6AA27B1165A5}"; ValueType: String; ValueData: "_D9DCD31A441A4B7B845F98CB12D6BFBA"; Components: RequiredFiles
+
+[Components]
+Name: "RequiredFiles"; Description: "Required Files"; Types: Advanced Default; Flags: checkablealone fixed; Languages: english french german greek spanish
+Name: "Documentation"; Description: "Documentation"; Types: Default Advanced; Flags: dontinheritcheck; Languages: english french german greek spanish
+
+[Types]
+Name: "Default"; Description: "Default Installation"; Languages: english french german greek spanish
+Name: "Advanced"; Description: "Custom Installation"; Flags: iscustom; Languages: english german french greek spanish
+
+[Dirs]
+Name: "{cf}/\TortoiseOverlays"; Components: RequiredFiles; Tasks: desktopicon; Languages: english french german greek spanish
+Name: "{cf}/\TortoiseOverlays/\icons"
+Name: "{cf}/\TortoiseOverlays/icons/\XPStyle"
+
+
+[Code]
+const 
+  WM_QUIT = 18;
+  MyAppMutex = 'PITHOSMUTEX';
+  XMLURL = 'https://code.grnet.gr/projects/pithos-ms-client/repository/revisions/master/raw/trunk/Pithos.Installer/versioninfo.xml';
+  XMLUpdate = 'MYLatest.xml';
+  
+var 
+dotNET40Missing: Boolean;
+       IsUpdate: Boolean;
+      UsagePage: TOutputMsgWizardPage;
+      Wz1, Wz2 : TOutputMsgWizardPage;
+         ChkBox: TCheckBox;
+        LicenseID: Integer;      
+
+// IssFindModule called on in/uninstall
+function IssFindModule(hWnd: Integer; Modulename: String; Language: PAnsiChar; Silent: Boolean; CanIgnore: Boolean ): Integer;
+external 'IssFindModuleW@files:IssProc.dll stdcall setuponly';
+
+function IssFindModuleU(hWnd: Integer; Modulename: String; Language: PAnsiChar; Silent: Boolean; CanIgnore: Boolean ): Integer;
+external 'IssFindModuleW@{app}\IssProc.dll stdcall uninstallonly';
+
+//Call this to enable search for any in use file type
+function IssEnableAnyFileInUseCheck(Folder: String): Integer;
+external 'IssEnableAnyFileInUseCheckW@files:IssProc.dll stdcall setuponly';
+
+//IssEnableAnyFileInUseCheck called on uninstall
+function IssEnableAnyFileInUseCheckU(Folder: String): Integer;
+external 'IssEnableAnyFileInUseCheckW@{app}\IssProc.dll stdcall uninstallonly';
+
+//Register for commercial use on install
+function IssRegister(rName: PAnsiChar; rKey: PAnsiChar): Integer;
+external 'IssRegister@files:IssProc.dll stdcall setuponly';
+
+//Register for commercial use on uninstall
+function IssRegisterU(rName: PAnsiChar; rKey: PAnsiChar): Integer;
+external 'IssRegister@{app}\IssProc.dll stdcall uninstallonly';
+
+// Importing LoadSkin API from ISSkin.DLL
+procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
+external 'LoadSkin@files:isskin.dll stdcall';
+
+procedure UnloadSkin();
+external 'UnloadSkin@files:isskin.dll stdcall';
+
+// Importing ShowWindow Windows API from User32.DLL
+function ShowWindow(hWnd: Integer; uType: Integer): Integer;
+external 'ShowWindow@user32.dll stdcall';
+
+function IsDotNetDetected(version: string; service: cardinal): boolean;
+//    'v1.1.4322'     .NET Framework 1.1
+//    'v2.0.50727'    .NET Framework 2.0
+//    'v3.0'          .NET Framework 3.0
+//    'v3.5'          .NET Framework 3.5
+//    'v4\Client'     .NET Framework 4.0 Client Profile
+//    'v4\Full'       .NET Framework 4.0 Full Installation
+// service pack
+//    0               No service packs required
+//    1, 2, etc.      Service pack 1, 2, etc. required
+//    if not IsDotNetDetected('v4\Client', 0) then begin
+var
+    key: string;
+    install, serviceCount: cardinal;
+    success: boolean;
+   
+begin
+    key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;
+    // .NET 3.0 uses value InstallSuccess in subkey Setup
+    if Pos('v3.0', version) = 1 then begin
+        success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);
+    end else begin
+        success := RegQueryDWordValue(HKLM, key, 'Install', install);
+    end;
+    // .NET 4.0 uses value Servicing instead of SP
+    if Pos('v4', version) = 1 then begin
+        success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);
+    end else begin
+        success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);
+    end;
+    result := success and (install = 1) and (serviceCount >= service);
+end;
+
+function NextButtonClick(CurPage: Integer): Boolean;
+var
+  hWnd: Integer;
+  sModuleName: String;
+  nCode: Integer;  {IssFindModule returns: 0 if no module found; 1 if cancel pressed; 2 if ignore pressed; -1 if an error occured }
+begin
+  Result := true;
+
+ if CurPage = wpReady then
+   begin
+      Result := false;
+            
+      hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));                     { get main wizard handle }
+      IssEnableAnyFileInUseCheck(ExpandConstant('{app}'));
+      sModuleName :=ExpandConstant('{app}*;pithos*.exe;PithosPlus.exe');      
+      
+      nCode:=IssFindModule(hWnd,sModuleName,'en',false,true);                { search for module and display files-in-use window if found  }
+
+     if nCode=1 then  begin                                                 { cancel pressed or files-in-use window closed }
+          PostMessage (WizardForm.Handle, $0010, 0, 0);                     { quit setup, $0010=WM_CLOSE }
+     end else if (nCode=0) or (nCode=2) then begin                          { no module found or ignored pressed}
+          Result := true;                                                   { continue setup  }
+     end;
+
+  end;
+
+end;
+
+function InitializeSetup(): Boolean;
+begin
+  //Unpack The Skin
+  ExtractTemporaryFile('GRNETWhite.msstyles');
+  LoadSkin(ExpandConstant('{tmp}\GRNETWhite.msstyles'), '');
+    
+  // Test the presence of .NET 4.0
+  if (not(RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4'))) then
+      dotNET40Missing := True;
+    
+  Result := True;
+end;
+
+procedure DeinitializeSetup();
+begin
+  //Hide Window widget
+  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
+  UnloadSkin();
+end;
+
+function ShouldInstalldotNET40(): Boolean;
+begin
+    Result := dotNET40Missing;
+end;
+
+procedure CurPageChanged(CurPageID: Integer);
+begin
+  if CurPageID = wpInstalling then
+    IsUpdate := FileExists(ExpandConstant('{app}\{#MyAppExeName}'));
+  if CurPageID = LicenseID then
+    Wizardform.NextButton.Enabled := False;
+  if (Pos('/SP-', UpperCase(GetCmdTail)) > 0) and (CurPageID = wpSelectComponents) then
+    WizardForm.BackButton.Visible := False;
+end;
+
+function NotAnUpdate: Boolean;
+begin
+  result := not IsUpdate;
+end;
+
+procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
+var
+mRes : integer;
+begin
+  case CurUninstallStep of
+    usUninstall:
+      begin
+        mRes := MsgBox('Do you want to remove your settings?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2)
+        if mRes = IDYES then
+          begin            
+            DelTree(ExpandConstant('{localappdata}')+'\GRNET\PithosPlus.exe_StrongName_1vmy3hmn3mscykecwcnmpvno4d4mqi52',true,true,true);     
+            DelTree(ExpandConstant('{localappdata}')+'\GRNET\PITHOS\',true,true,true);
+            
+          End
+        else
+          MsgBox ('Settings will not be removed', mbInformation, MB_OK);        
+      end;
+  end;
+end;
+
+procedure BitmapImageOnClick(Sender: TObject);
+var
+  ErrCode: integer;
+begin
+  ShellExec('open', 'http://pithos.grnet.gr','', '', SW_SHOW, ewNoWait, ErrCode);
+end;
+
+procedure LicenseOnClick(Sender: TObject);
+begin
+  if chkBox.checked Then
+  Wizardform.NextButton.Enabled := True else
+  Wizardform.NextButton.Enabled := False;  
+end;
+
+procedure CreateTheWizardPages;
+var
+  Page: TWizardPage;
+  Button, FormButton: TNewButton;
+  BitmapImage,BitmapImage1: TBitmapImage;
+  BitmapFileName: String;
+  Memo: TMemo;
+  LabelWz: TLabel;
+
+begin  
+  Page := CreateCustomPage(wpWelcome, 'GRNET Pithos+ Dev Build {#MyAppVersion}', 'Software License');
+  BitmapFileName := ExpandConstant('{tmp}\grnet-logo.bmp');
+  ExtractTemporaryFile(ExtractFileName(BitmapFileName));
+  
+  Page.Surface.Color := clWhite;
+  BitmapImage := TBitmapImage.Create(Page);
+  BitmapImage.AutoSize := True;
+  BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
+  BitmapImage.Cursor := crHand;
+  BitmapImage.Left := (Page.Surfacewidth - BitmapImage.Width) / 2;
+  BitmapImage.Top := Page.Surface.Top;
+  BitmapImage.OnClick := @BitmapImageOnClick;
+  BitmapImage.Parent := Page.Surface;
+  
+  Memo := TMemo.Create(Page);
+  Memo.Top := BitmapImage.Height;
+  Memo.Width := Page.SurfaceWidth;
+  Memo.Height := Page.SurfaceHeight - (BitmapImage.Height + 20);
+  Memo.ScrollBars := ssVertical;
+  Memo.Text := 'This software is provided by GRNET S.A. "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall GRNET S.A. or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.';
+  Memo.Parent := Page.Surface;
+  
+  ChkBox := TCheckBox.Create(Page);
+  ChkBox.Top := BitmapImage.Height + Memo.Height;
+  ChkBox.Width := Page.SurfaceWidth;
+  ChkBox.Caption := 'I agree with the licese agreement';
+  ChkBox.Checked := cbUnChecked;
+  chkBox.OnClick := @LicenseOnClick;
+  ChkBox.Parent := Page.Surface;
+  LicenseID := Page.ID;
+  
+  Page := CreateCustomPage(wpInfoAfter, 'First Steps', 'Setup your account');
+  BitmapFileName := ExpandConstant('{tmp}\account.bmp');
+  ExtractTemporaryFile(ExtractFileName(BitmapFileName));
+
+  Page.Surface.Color := clWhite;
+  BitmapImage1 := TBitmapImage.Create(Page);
+  BitmapImage1.width := Page.SurfaceWidth;
+  BitmapImage1.height := PAge.SurfaceHeight;
+  BitmapImage1.Bitmap.LoadFromFile(BitmapFileName);
+  BitmapImage1.Left := 0 
+  BitmapImage1.Top := Page.Surface.Top;
+  BitmapImage1.Parent := Page.Surface;
+  
+  LabelWz := Tlabel.Create(Page);
+  LabelWz.Top := 0;
+  LabelWz.Caption := 'To setup your account right click on the Pithos+ icon in the taskbar.';
+  LabelWz.Parent := Page.Surface;
+end;
+
+procedure InitializeWizard;
+var
+winHwnd: longint;
+retVal : boolean;
+strProg: string;
+begin
+  winHwnd := FindWindowByClassName('{MyAppMutex}');
+  if winHwnd<>0 then begin { no module found or ignore pressed}
+      msgbox('mutexfound', mbInformation,mb_OK);
+      postmessage(winHwnd,WM_QUIT,0,0);
+   //abort();
+  end;
+  CreateTheWizardPages; 
+end;
+
+function ShouldSkipPage(CurPage: Integer): Boolean;
+    begin
+      if Pos('/SP-', UpperCase(GetCmdTail)) > 0 then
+        case CurPage of
+          wpLicense, wpPassword, wpInfoBefore, wpUserInfo,
+          wpSelectDir, wpSelectProgramGroup, wpInfoAfter:
+            Result := True;
+        end;
+    end;
+    
+[Run]
+;Kill Running Task
+Filename: cmd; parameters: /c taskkill /f /im pithos.exe;Flags: runhidden
+Filename: cmd; parameters: /c taskkill /f /im pithos.client.WPF.exe;Flags: runhidden
+;Launch Redist
+Filename: {tmp}\dotNetFx40_Client_setup.exe; Description: Install Microsoft .Net Framework 4.0; Parameters: /q /noreboot; Flags: skipifdoesntexist; Check: ShouldInstalldotNET40
+Filename: {app}\UninsHs.exe; Parameters: /r0=AppId,{language},{srcexe}; Flags: runminimized
diff --git a/trunk/Pithos.Installer/Skin/GRNETWhite.cjstyles b/trunk/Pithos.Installer/Skin/GRNETWhite.cjstyles
new file mode 100644 (file)
index 0000000..7640a46
Binary files /dev/null and b/trunk/Pithos.Installer/Skin/GRNETWhite.cjstyles differ
diff --git a/trunk/Pithos.Installer/Skin/ISSkin.dll b/trunk/Pithos.Installer/Skin/ISSkin.dll
new file mode 100644 (file)
index 0000000..2580f20
Binary files /dev/null and b/trunk/Pithos.Installer/Skin/ISSkin.dll differ
diff --git a/trunk/Pithos.Installer/Skin/ISSkinU.dll b/trunk/Pithos.Installer/Skin/ISSkinU.dll
new file mode 100644 (file)
index 0000000..837446f
Binary files /dev/null and b/trunk/Pithos.Installer/Skin/ISSkinU.dll differ
diff --git a/trunk/Pithos.Installer/Skin/Tech45.msstyles b/trunk/Pithos.Installer/Skin/Tech45.msstyles
new file mode 100644 (file)
index 0000000..6e255b1
Binary files /dev/null and b/trunk/Pithos.Installer/Skin/Tech45.msstyles differ
diff --git a/trunk/Pithos.Installer/Skin/grnet.skinproj b/trunk/Pithos.Installer/Skin/grnet.skinproj
new file mode 100644 (file)
index 0000000..8b870cf
Binary files /dev/null and b/trunk/Pithos.Installer/Skin/grnet.skinproj differ
diff --git a/trunk/Pithos.Installer/Tools/IssProc-license-agreement.txt b/trunk/Pithos.Installer/Tools/IssProc-license-agreement.txt
new file mode 100644 (file)
index 0000000..c6e031f
--- /dev/null
@@ -0,0 +1,58 @@
+End-User License Agreement
+
+This End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity), the end-user, and rlByte Software Development, the author of  IssProc component ("Author"). This EULA permits you to use a single copy, or multiples copies of the software product identified above, which includes computer software and may include associated media, printed materials, and on-line or electronic documentation ("SOFTWARE PRODUCT").
+
+By installing, copying, or otherwise using the SOFTWARE PRODUCT, you agree to be bounded by the terms of this EULA. If you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT.
+
+SOFTWARE PRODUCT LICENSE
+
+The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
+
+1. GRANT OF LICENSE. The SOFTWARE PRODUCT is licensed as a single product, to an individual user, or group of users for multiple user licenses and site licenses. This agreement requires that each user of the program be licensed, either individually, or as part of a group. A multi-user license provides for a specified number of users to use the SOFTWARE PRODUCT at any time. This does not provide for concurrent user licensing unless specifically agreed upon and ordered as such at an additional cost above the normal licensing fee. Each user of this program must be covered either individually, or as part of a group multi-user license. The SOFTWARE PRODUCT is considered in use on a computer when it is loaded into temporary memory or installed into permanent memory. This license may not be assigned or otherwise transferred without prior written consent from the Author, and any unauthorized transfer is null and void.
+
+2. LICENSING. 
+
+* You may use the product on commercial applications by purchasing a commercial license. A commercial application means:
+
+  a) any application which is built, owned or maintained by a profit-making person or organization, even if the application does not generate revenue;
+
+  b) any application which generates revenue, even if it is otherwise non-commercial;
+
+  c) any government, government-agency or political-party applications.
+
+
+* You may use the product on non-commercial applications free of charge subject to the terms of this license. A non-commercial application means:
+
+  a) personal or hobby application which generate no revenue (whether from advertising, commissions, sales or any other source);
+
+  b) applications owned and maintained by charitable or not-for-profit organizations;
+
+  c) applications owned and maintained by a school, college or other educational institution.
+
+
+
+3. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
+
+* Limitations on Reverse Engineering, Decompilation, and Disassembly. You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.
+
+* Separation of Component. The SOFTWARE PRODUCT is licensed as a single product. Its component parts may not be separated for use on more than one computer.
+
+* Termination. Without prejudice to any other rights, the Author may terminate this EULA if you fail to comply with the terms and conditions of this EULA. In such event, you must destroy all copies of the SOFTWARE PRODUCT and all of its component parts.
+
+4. DISCLAIMER OF WARRANTIES.
+
+* No Warranties. The Author expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided "AS IS" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non infringement. The entire risk arising out of use or performance of the SOFTWARE PRODUCT remains with you.
+
+* No Liability for Damages. In no event shall the Author be liable for any special, consequential, incidental or indirect damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if the Author is aware of the possibility of such damages and known defects.
+
+5. COPYRIGHT. All title and copyrights in and to the SOFTWARE PRODUCT (including but not limited to any images, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT), the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by the Author.
+
+All versions of the SOFTWARE PRODUCT are protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The sole property belongs to rlByte Software Development. The SOFTWARE PRODUCT may not be duplicated, sold, distributed or utilized in any manner not described herein without the prior written consent of the Author.
+
diff --git a/trunk/Pithos.Installer/Tools/IssProc.dll b/trunk/Pithos.Installer/Tools/IssProc.dll
new file mode 100644 (file)
index 0000000..230385f
Binary files /dev/null and b/trunk/Pithos.Installer/Tools/IssProc.dll differ