f5e37f494138c3550ad8818c39a16cbd3f432639
[pithos-ms-client] / trunk%2FPithos.Installer%2FPithosPlus.iss
1 ; Script generated by the Inno Setup Script Wizard.\r
2 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!\r
3 \r
4 #define MyAppName "Pithos+"\r
5 #define SrcApp "PSourcex64\Pithos.Client.WPF.exe"\r
6 #define MyAppPublisher "GRNET"\r
7 #define MyAppURL "http://pithos.grnet.gr/"\r
8 #define MyAppExeName "Pithos.Client.WPF.exe"\r
9 #define MyAppVersion GetFileVersion(SrcApp)\r
10 #define MyURL "http://www.grnet.gr/"\r
11 \r
12 [Setup]\r
13 ;WARNING: DO NOT CHANGE THE APP ID (AppId) or the update will not work correctly.\r
14 ;AppId is used to check if we are installed using this isntaller and not by other means.\r
15 AppId={{926354B2-04D2-47CF-8FAA-04AB3682008B}\r
16 AppName={#MyAppName}\r
17 AppVersion={#MyAppVersion}\r
18 AppVerName={#MyAppName} {#MyAppVersion}\r
19 UninstallDisplayName={#MyAppName} {#MyAppVersion}\r
20 AppPublisher={#MyAppPublisher}\r
21 AppPublisherURL={#MyAppURL}\r
22 AppSupportURL={#MyAppURL}\r
23 AppUpdatesURL={#MyAppURL}\r
24 DefaultDirName={pf}\PithosPlus\r
25 DefaultGroupName={#MyAppName}\r
26 AllowNoIcons=yes\r
27 LicenseFile=Licenses\GRNET License.txt\r
28 OutputBaseFilename=PithosPlus_Setupv{#MyAppVersion}\r
29 SolidCompression=True\r
30 UsePreviousSetupType=False\r
31 UsePreviousTasks=False\r
32 UsePreviousLanguage=False\r
33 ShowTasksTreeLines=True\r
34 AppCopyright=(c) 2011 - 2012 GRNET\r
35 PrivilegesRequired=none\r
36 EnableDirDoesntExistWarning=True\r
37 DirExistsWarning=yes\r
38 AppContact=okeanos@grnet.gr\r
39 AppSupportPhone=+30 210 0000000\r
40 AppReadmeFile=My Readme\r
41 UninstallDisplayIcon={app}\Pithos.Client.WPF.exe\r
42 WizardImageFile=Images\ppWZDImage.bmp\r
43 WizardSmallImageFile=Images\ppWZDSmall.bmp\r
44 VersionInfoVersion={#MyAppVersion}\r
45 MinVersion=0,5.01sp3\r
46 \r
47 [Languages]\r
48 Name: "english"; MessagesFile: "compiler:Default.isl"\r
49 Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"\r
50 Name: "german"; MessagesFile: "compiler:Languages\German.isl"\r
51 Name: "french"; MessagesFile: "compiler:Languages\French.isl"\r
52 Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"\r
53 \r
54 [CustomMessages]\r
55 Web=You can visit our web site for more info\r
56 \r
57 [Tasks]\r
58 Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; Components: Documentation RequiredFiles\r
59 ;Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1; Components: Manual RequiredFiles Source\r
60 Name: "visitweb"; Description: "{cm:Web}"; GroupDescription: "{cm:Web}"; Flags: unchecked; Components: Documentation RequiredFiles; Languages: english french german greek spanish\r
61 \r
62 [Files]\r
63 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files\r
64 Source: "PSourcex64\Pithos.Client.WPF.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: Is64BitInstallMode\r
65 Source: "PSource\Pithos.Client.WPF.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek; Check: not Is64BitInstallMode\r
66 Source: "PSourcex64\AsyncCtpLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Tasks: desktopicon; Languages: english french german spanish greek\r
67 Source: "PSourcex64\Castle.ActiveRecord.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
68 Source: "PSourcex64\Caliburn.Micro.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
69 Source: "PSourcex64\Castle.ActiveRecord.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
70 Source: "PSourcex64\Castle.Components.Validator.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
71 Source: "PSourcex64\Castle.Core.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
72 Source: "PSourcex64\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
73 Source: "PSourcex64\Iesi.Collections.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
74 Source: "PSourcex64\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
75 Source: "PSourcex64\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
76 Source: "PSourcex64\NHibernate.ByteCode.Castle.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
77 Source: "PSourcex64\NHibernate.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
78 Source: "PSourcex64\NHibernate.Search.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
79 Source: "PSourcex64\ParallelExtensionsExtras.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
80 Source: "PSourcex64\Pithos.Client.WPF.exe.config"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
81 Source: "PSourcex64\Pithos.Core.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
82 Source: "PSourcex64\Pithos.Interfaces.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
83 Source: "PSourcex64\Pithos.Network.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
84 Source: "PSourcex64\Pithos.ShellExtensions.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
85 ;Source: "PSourcex64\Pithos.ShellExtensions.tlb"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
86 Source: "PSourcex64\System.Data.SQLite.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
87 Source: "PSourcex64\System.Threading.Tasks.Dataflow.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
88 Source: "PSourcex64\System.Windows.Interactivity.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
89 Source: "PSourcex64\WPFToolkit.Extended.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
90 Source: "TortoiseOverlays\License.txt"; DestDir: "{cf}/\TortoiseOverlays"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
91 Source: "TortoiseOverlays\TortoiseOverlays.dll"; DestDir: "{cf}/\TortoiseOverlays"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
92 Source: "TortoiseOverlays\icons\XPStyle\AddedIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
93 Source: "TortoiseOverlays\icons\XPStyle\ConflictIcon.ico"; DestDir: "{cf}/TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
94 Source: "TortoiseOverlays\icons\XPStyle\DeletedIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
95 Source: "TortoiseOverlays\icons\XPStyle\IgnoredIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
96 Source: "TortoiseOverlays\icons\XPStyle\LockedIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
97 Source: "TortoiseOverlays\icons\XPStyle\ModifiedIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
98 Source: "TortoiseOverlays\icons\XPStyle\NormalIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
99 Source: "TortoiseOverlays\icons\XPStyle\ReadOnlyIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
100 Source: "TortoiseOverlays\icons\XPStyle\UnversionedIcon.ico"; DestDir: "{cf}/\TortoiseOverlays/icons/\XPStyle"; Flags: ignoreversion; Components: RequiredFiles; Languages: english french german spanish greek\r
101 ;32 & 64 Bit\r
102 ;Source: "PSourcex64\Pithos.Client.WPF.exe"; DestDir: "{app}"; DestName: "MyProg.exe"; Check: Is64BitInstallMode\r
103 ;Source: "PSource\Pithos.Client.WPF.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode\r
104 ;Redistributables\r
105 Source: "Redistributables\*"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall\r
106 Source: "Images\grnet-logo.bmp"; Flags: dontcopy\r
107 Source: "Images\account.bmp"; Flags: dontcopy\r
108 \r
109 [Icons]\r
110 Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"\r
111 Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"\r
112 Name: "{group}\{cm:ProgramOnTheWeb,GRNET}"; Filename: "{#MyURL}"\r
113 Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"\r
114 Name: "{commonstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"\r
115 Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\r
116 ;Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon\r
117 \r
118 [Run]\r
119 Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent\r
120 \r
121 [Registry]\r
122 ;Startup \r
123 ;Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Pithos+"; ValueData: """{app}\{#MyAppExeName}"""; Flags: createvalueifdoesntexist uninsdeletevalue\r
124 \r
125 Root: "HKCR"; Subkey: "*\shellex\ContextMenuHandlers\Pithos.FileContextMenu"; ValueData: "b1f1405d-94a1-4692-b72f-fc8caf8b8700"; Flags: createvalueifdoesntexist uninsdeletekey\r
126 Root: "HKCR"; Subkey: "CLSID\0CFB4119-DABE-4E32-AB2D-2D41873BC599"; ValueData: "PithosContextMenu Class"; Flags: createvalueifdoesntexist uninsdeletekey\r
127 \r
128 [Components]\r
129 Name: "RequiredFiles"; Description: "Required Files"; Types: Advanced Default; Flags: checkablealone fixed; Languages: english french german greek spanish\r
130 Name: "Documentation"; Description: "Documentation"; Types: Default Advanced; Flags: dontinheritcheck; Languages: english french german greek spanish\r
131 \r
132 [Types]\r
133 Name: "Default"; Description: "Default Installation"; Languages: english french german greek spanish\r
134 Name: "Advanced"; Description: "Custom Installation"; Flags: iscustom; Languages: english german french greek spanish\r
135 \r
136 [Dirs]\r
137 Name: "{cf}/\TortoiseOverlays"; Components: RequiredFiles; Tasks: desktopicon; Languages: english french german greek spanish\r
138 Name: "{cf}/\TortoiseOverlays/\icons"\r
139 Name: "{cf}/\TortoiseOverlays/icons/\XPStyle"\r
140 \r
141 \r
142 [Code]\r
143 const \r
144   WM_QUIT = 18;\r
145   MyAppMutex = 'MYAPPMUTEX';\r
146 var \r
147 dotNET40Missing: Boolean;\r
148        IsUpdate: boolean;\r
149       UsagePage: TOutputMsgWizardPage;\r
150       Wz1, Wz2 : TOutputMsgWizardPage;\r
151 \r
152 function IsDotNetDetected(version: string; service: cardinal): boolean;\r
153 //    'v1.1.4322'     .NET Framework 1.1\r
154 //    'v2.0.50727'    .NET Framework 2.0\r
155 //    'v3.0'          .NET Framework 3.0\r
156 //    'v3.5'          .NET Framework 3.5\r
157 //    'v4\Client'     .NET Framework 4.0 Client Profile\r
158 //    'v4\Full'       .NET Framework 4.0 Full Installation\r
159 // service pack\r
160 //    0               No service packs required\r
161 //    1, 2, etc.      Service pack 1, 2, etc. required\r
162 //    if not IsDotNetDetected('v4\Client', 0) then begin\r
163 var\r
164     key: string;\r
165     install, serviceCount: cardinal;\r
166     success: boolean;\r
167     \r
168 begin\r
169     key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version;\r
170     // .NET 3.0 uses value InstallSuccess in subkey Setup\r
171     if Pos('v3.0', version) = 1 then begin\r
172         success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install);\r
173     end else begin\r
174         success := RegQueryDWordValue(HKLM, key, 'Install', install);\r
175     end;\r
176     // .NET 4.0 uses value Servicing instead of SP\r
177     if Pos('v4', version) = 1 then begin\r
178         success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount);\r
179     end else begin\r
180         success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount);\r
181     end;\r
182     result := success and (install = 1) and (serviceCount >= service);\r
183 end;\r
184 \r
185 function InitializeSetup(): Boolean;\r
186 begin\r
187     // Test the presence of .NET 4.0\r
188     if (not(RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4'))) then\r
189         dotNET40Missing := True;\r
190 \r
191     Result := True;\r
192 end;\r
193 \r
194 function ShouldInstalldotNET40(): Boolean;\r
195 begin\r
196     Result := dotNET40Missing;\r
197 end;\r
198 \r
199 procedure CurPageChanged(CurPageID: Integer);\r
200 begin\r
201   if CurPageID = wpInstalling then\r
202     IsUpdate := FileExists(ExpandConstant('{app}\{#MyAppExeName}'));\r
203 end;\r
204 \r
205 function NotAnUpdate: Boolean;\r
206 begin\r
207   result := not IsUpdate;\r
208 end;\r
209 \r
210 procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);\r
211 var\r
212 mRes : integer;\r
213 begin\r
214   case CurUninstallStep of\r
215     usUninstall:\r
216       begin\r
217         mRes := MsgBox('Do you want to remove your settings?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2)\r
218         if mRes = IDYES then\r
219           begin\r
220             DelTree(ExpandConstant('{localappdata}')+'\GRNET',true,true,true);\r
221           End\r
222         else\r
223           MsgBox ('Settings will not be removed', mbInformation, MB_OK);        \r
224       end;\r
225   end;\r
226 end;\r
227 \r
228 procedure BitmapImageOnClick(Sender: TObject);\r
229 var\r
230   ErrCode: integer;\r
231 begin\r
232   ShellExec('open', 'http://pithos.grnet.gr','', '', SW_SHOW, ewNoWait, ErrCode);\r
233 end;\r
234 \r
235 procedure CreateTheWizardPages;\r
236 var\r
237   Page: TWizardPage;\r
238   Button, FormButton: TNewButton;\r
239   BitmapImage,BitmapImage1: TBitmapImage;\r
240   BitmapFileName: String;\r
241   Memo: TMemo;\r
242   LabelWz: TLabel;\r
243 begin\r
244 \r
245   Page := CreateCustomPage(wpWelcome, 'GRNET Pithos+ Dev Build {#MyAppVersion}', 'Software License');\r
246   BitmapFileName := ExpandConstant('{tmp}\grnet-logo.bmp');\r
247   ExtractTemporaryFile(ExtractFileName(BitmapFileName));\r
248   \r
249   Page.Surface.Color := clWhite;\r
250   BitmapImage := TBitmapImage.Create(Page);\r
251   BitmapImage.AutoSize := True;\r
252   BitmapImage.Bitmap.LoadFromFile(BitmapFileName);\r
253   BitmapImage.Cursor := crHand;\r
254   BitmapImage.Left := (Page.Surfacewidth - BitmapImage.Width) / 2;\r
255   BitmapImage.Top := Page.Surface.Top;\r
256   BitmapImage.OnClick := @BitmapImageOnClick;\r
257   BitmapImage.Parent := Page.Surface;\r
258   \r
259   Memo := TMemo.Create(Page);\r
260   Memo.Top := BitmapImage.Height;\r
261   Memo.Width := Page.SurfaceWidth;\r
262   Memo.Height := Page.SurfaceHeight - (BitmapImage.Height)\r
263   Memo.ScrollBars := ssVertical;\r
264   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.';\r
265   Memo.Parent := Page.Surface;\r
266   \r
267   Page := CreateCustomPage(wpInfoAfter, 'First Steps', 'Setup your account');\r
268   BitmapFileName := ExpandConstant('{tmp}\account.bmp');\r
269   ExtractTemporaryFile(ExtractFileName(BitmapFileName));\r
270 \r
271   Page.Surface.Color := clWhite;\r
272   BitmapImage1 := TBitmapImage.Create(Page);\r
273   BitmapImage1.width := Page.SurfaceWidth;\r
274   BitmapImage1.height := PAge.SurfaceHeight;\r
275   BitmapImage1.Bitmap.LoadFromFile(BitmapFileName);\r
276   //BitmapImage1.Cursor := crHand;\r
277   BitmapImage1.Left := 0 //(Page.Surfacewidth - BitmapImage.Width) / 2;\r
278   BitmapImage1.Top := Page.Surface.Top;\r
279   //BitmapImage1.OnClick := @BitmapImageOnClick;\r
280   BitmapImage1.Parent := Page.Surface;\r
281   \r
282   LabelWz := Tlabel.Create(Page);\r
283   LabelWz.Top := 0;\r
284   LabelWz.Caption := 'To setup your account right click on the Pithos+ icon in the taskbar.';\r
285   LabelWz.Parent := Page.Surface;\r
286 end;\r
287 \r
288 procedure InitializeWizard;\r
289 var\r
290 winHwnd: longint;\r
291 retVal : boolean;\r
292 strProg: string;\r
293 begin\r
294   winHwnd := FindWindowByClassName('{#MyAppExeName}');\r
295   if winHwnd<>0 then begin { no module found or ignored pressed}\r
296       postmessage(winHwnd,WM_QUIT,0,0);\r
297    //abort();  \r
298   end;   \r
299 \r
300   CreateTheWizardPages;\r
301 end;\r
302 \r
303 [Run]\r
304 Filename: {tmp}\dotNetFx40_Client_setup.exe; Description: Install Microsoft .Net Framework 4.0;    Parameters: /q /noreboot; Flags: skipifdoesntexist; Check: ShouldInstalldotNET40