1[Setup]
2AppId={{5A2BC38A-406C-4A5B-BF45-6991F9A05325}
3AppName=PeaZip
4AppVerName=PeaZip 8.1.0
5AppVersion=8.1.0
6AppPublisher=Giorgio Tani
7AppPublisherURL=https://peazip.github.io
8AppSupportURL=https://peazip.github.io
9AppUpdatesURL=https://peazip.github.io
10DefaultDirName={pf}\PeaZip
11DisableDirPage=no
12DefaultGroupName=PeaZip
13DisableProgramGroupPage=yes
14LicenseFile=C:\input\peazip-8.1.0.WINDOWS\copying.txt
15OutputDir=C:\output\
16OutputBaseFilename=peazip-8.1.0.WINDOWS
17SetupIconFile=C:\input\peazip-icon-green.ico
18Compression=lzma2/max
19SolidCompression=yes
20ChangesAssociations=yes
21
22[Languages]
23Name: "default"; MessagesFile: "compiler:Default.isl"
24
25[Tasks]
26Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
27Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
28
29[Files]
30Source: "C:\input\peazip-8.1.0.WINDOWS\peazip.exe"; DestDir: "{app}"; Flags: ignoreversion
31Source: "C:\input\peazip-8.1.0.WINDOWS\dragdropfilesdll.dll"; DestDir: "{app}"; Flags: ignoreversion
32Source: "C:\input\peazip-8.1.0.WINDOWS\res\*"; DestDir: "{app}\res"; Flags: ignoreversion recursesubdirs createallsubdirs
33Source: "C:\input\peazip-8.1.0.WINDOWS\SendTo.pea"; DestDir: "{app}"; Flags: ignoreversion
34Source: "C:\input\peazip-8.1.0.WINDOWS\copying.txt"; DestDir: "{app}"; Flags: ignoreversion
35Source: "C:\input\peazip-8.1.0.WINDOWS\readme_Win32.txt"; DestDir: "{app}"; Flags: ignoreversion
36Source: "C:\input\peazip-8.1.0.WINDOWS\peazip_help.pdf"; DestDir: "{app}"; Flags: ignoreversion
37; NOTE: Don't use "Flags: ignoreversion" on any shared system files
38
39[INI]
40Filename: "{app}\peazip.url"; Section: "InternetShortcut"; Key: "URL"; String: "https://peazip.github.io/"
41
42[Icons]
43Name: "{group}\PeaZip"; Filename: "{app}\peazip.exe"
44; Name: "{group}\Reset PeaZip"; Filename: "{app}\peazip.exe"; Parameters: "-peazipreset"
45Name: "{group}\{cm:ProgramOnTheWeb,PeaZip}"; Filename: "{app}\peazip.url"
46Name: "{group}\{cm:UninstallProgram,PeaZip}"; Filename: "{uninstallexe}"
47Name: "{userdesktop}\PeaZip"; Filename: "{app}\peazip.exe"; Tasks: desktopicon
48Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\PeaZip"; Filename: "{app}\peazip.exe"; Tasks: quicklaunchicon
49Name: "{group}\Add to archive"; Filename: "{app}\peazip.exe"; Parameters: "-add2archive";  IconFilename: "{app}\res\icons\peazip_seven.icl"; IconIndex: 2
50Name: "{group}\Extract..."; Filename: "{app}\peazip.exe"; Parameters: "-ext2main";  IconFilename: "{app}\res\icons\peazip_seven.icl"; IconIndex: 4
51Name: "{group}\Open as archive"; Filename: "{app}\peazip.exe"; Parameters: "-ext2openasarchive";
52Name: "{app}\Add to archive"; Filename: "{app}\peazip.exe"; Parameters: "-add2archive";  IconFilename: "{app}\res\icons\peazip_seven.icl"; IconIndex: 2
53Name: "{app}\Extract..."; Filename: "{app}\peazip.exe"; Parameters: "-ext2main";  IconFilename: "{app}\res\icons\peazip_seven.icl"; IconIndex: 4
54Name: "{app}\Open as archive"; Filename: "{app}\peazip.exe"; Parameters: "-ext2openasarchive";
55
56[Run]
57;Filename: "{app}\peazip.exe"; Description: "{cm:LaunchProgram,PeaZip}"; Flags: nowait postinstall skipifsilent
58;temporarily deactivated since this works correctly (using current user's profile) only for Vista or more recent systems
59
60[InstallDelete]
61Type: filesandordirs; Name: "{app}\res\lang"
62
63[UninstallDelete]
64Type: files; Name: "{app}\peazip.url"
65
66[CustomMessages]
67Associations_Caption=Associations
68Associations_Description=Set file associations
69Associations_Labelfull1_Caption0=Read/write supported types
70Associations_Labelread1_Caption0=Read supported types
71Associations_cb7z_Caption0=7Z, XZ
72Associations_cbbr_Caption0=Brotli
73Associations_cbzst_Caption0=Zstandard
74Associations_cbpaq8_Caption0=*PAQ
75Associations_cbquad_Caption0=QUAD/BALZ/BCM
76Associations_cbtar_Caption0=TAR, BZ2, GZ
77Associations_cbzip_Caption0=ZIP, ZIPX
78Associations_cbfullnone_Caption0=None of the above group (override selection)
79Associations_cbarj_Caption0=ARJ
80Associations_cbcab_Caption0=CAB
81Associations_cblinux_Caption0=Linux (DEB, RPM, PET/PUP, SLP)
82Associations_cbiso_Caption0=ISO, UDF
83Associations_cblha_Caption0=LHA
84Associations_cblzh_Caption0=LZH
85Associations_cbrar_Caption0=RAR
86Associations_cbcpio_Caption0=CPIO, Z
87Associations_cbreadnone_Caption0=None of the above group (override selection)
88Associations_cbace_Caption0=ACE
89Associations_cbarc_Caption0=ARC, WRC
90Associations_cbMac_Caption0=Mac (DMG/HFS)
91context_Caption=Context menu
92context_Description=Create application's entries in system's context menu
93context_cbcontextext_Caption0=Extract...
94context_cbcontextext2here_Caption0=Extract here
95context_cbcontextsplit_Caption0=Split file
96context_cbcontextconvert_Caption0=Convert
97context_cbcontextnone_Caption0=No context menu entry (override selection)
98context_cbcontextext2folder_Caption0=Extract here (in new folder)
99context_cbcontextext2smart_Caption0=Extract here (smart new folder)
100context_cbcontext7zs_Caption0=Add to 7Z
101context_cbcontextzips_Caption0=Add to ZIP
102context_cbcontexttest_Caption0=Test archive(s)
103context_cbcontextwipe_Caption0=Secure delete
104context_cbcontextadd2archive_Caption0=Add to archive
105context_cbcontextadd2archiveseparate_Caption0=Add to separate archive(s)
106context_cbcontextsfx_Caption0=Add to self extracting
107context_CheckBox3f_Caption0=Add to 7Z, fastest
108context_CheckBox3_Caption0=Add to 7Z, ultra
109context_cbcontext7zsenc_Caption0=Encrypt (7Z)
110context_CheckBox4_Caption0=Add to ZIP, fastest
111context_cbcascaded_Caption0=Cascaded menu
112context_cbcontextzipmail_Caption0=Zip and mail
113context_cbcontextbrowse_Caption0=Browse path with PeaZip
114context_cbcontextcrc_Caption0=CRC, hash and file tools
115Links_Caption=SendTo
116Links_Description=Create application's entries in SendTo menu
117Links_cbfunext2here_Caption0=Extract here
118Links_cbfun7z_Caption0=Add to 7Z
119Links_cbfunzip_Caption0=Add to ZIP
120Links_cbfunsfx_Caption0=Add to self extracting
121Links_cbfunsplit_Caption0=Split file
122Links_cbfunnone_Caption0=No SendTo menu entry (override selection)
123Links_cbfunext2folder_Caption0=Extract here (in new folder)
124Links_cbfun7zs_Caption0=Add to separate 7Z
125Links_cbfunzips_Caption0=Add to separate ZIP
126Links_cbfunencrypt_Caption0=Encrypt (PEA)
127Links_cbfuntest_Caption0=Test archive(s)
128Links_cbfunzipmail_Caption0=Add to ZIP and mail
129Links_cbfun7zmail_Caption0=Add to 7Z and mail
130Links_cbfunsfxmail_Caption0=Add to sfx and mail
131Links_cbfunwipe_Caption0=Secure delete
132Links_cbfunext2to_Caption0=Extract...
133Links_CheckBoxbrowsepath_Caption0=Browse path with PeaZip
134Links_CheckBoxcommand_Caption0=Open command prompt here
135Links_cbfunadd_Caption0=Add to archive
136Links_cbfunconvert_Caption0=Convert
137Links_cbfunopen_Caption0=Open as archive
138install_Caption=Install PeaZip
139install_Description=Installation options
140install_Labelinstall1_Caption0=Default installation, context menu and SendTo menu entries
141install_Labelinstall1_Caption2=Configure file associations
142install_RadioButtoninstall1_Caption0=Standard installation
143install_RadioButtoninstall2_Caption0=Custom installation
144install_RadioButtoninstall3_Caption0=No system integration
145install_RadioButtoninstall4_Caption0=Update only, keep current system integration
146install_cbinstallcu_Caption0=Install for current user only
147install_cbreset_Caption0=Reset current configuration
148install_lupdate_Caption0=Check for updates
149install_l1_Caption0=|
150install_lhelp_Caption0=Help
151install_l2_Caption0=|
152install_lfaq_Caption0=FAQ
153install_LabelAppLang_Caption0=Application language
154
155[Code]
156var
157  MyProgChecked: Boolean;
158  MyProgCheckResult: Boolean;
159  FinishedInstall: Boolean;
160  Labelfull1: TLabel;
161  Bevel1: TBevel;
162  Labelread1: TLabel;
163  Bevel2: TBevel;
164  cb7z: TCheckBox;
165  cbbr: TCheckBox;
166  cbzst: TCheckBox;
167  cbpaq8: TCheckBox;
168  cbquad: TCheckBox;
169  cbtar: TCheckBox;
170  cbzip: TCheckBox;
171  cbfullnone: TCheckBox;
172  cbarj: TCheckBox;
173  cbcab: TCheckBox;
174  cblinux: TCheckBox;
175  cbiso: TCheckBox;
176  cblha: TCheckBox;
177  cblzh: TCheckBox;
178  cbrar: TCheckBox;
179  cbcpio: TCheckBox;
180  cbreadnone: TCheckBox;
181	cbace: TCheckBox;
182	cbarc: TCheckBox;
183	cbMac: TCheckBox;
184  Bevel1context: TBevel;
185  cbcontextext: TCheckBox;
186  cbcontextext2here: TCheckBox;
187  cbcontextsplit: TCheckBox;
188  cbcontextconvert: TCheckBox;
189  cbcontextnone: TCheckBox;
190  cbcontextext2folder: TCheckBox;
191  cbcontextext2smart: TCheckBox;
192  cbcontext7zs: TCheckBox;
193  cbcontextzips: TCheckBox;
194  cbcontexttest: TCheckBox;
195  cbcontextwipe: TCheckBox;
196  cbcontextadd2archive: TCheckBox;
197  cbcontextadd2archiveseparate: TCheckBox;
198  cbcontextsfx: TCheckBox;
199  CheckBox3f: TCheckBox;
200  CheckBox3: TCheckBox;
201  cbcontext7zsenc: TCheckBox;
202  CheckBox4: TCheckBox;
203  cbcascaded: TCheckBox;
204  cbcontextzipmail: TCheckBox;
205  cbcontextbrowse: TCheckBox;
206  cbcontextcrc: TCheckBox;
207  Bevel1fun: TBevel;
208  cbfunext2here: TCheckBox;
209  cbfun7z: TCheckBox;
210  cbfunzip: TCheckBox;
211  cbfunsfx: TCheckBox;
212  cbfunsplit: TCheckBox;
213  cbfunnone: TCheckBox;
214  cbfunext2folder: TCheckBox;
215  cbfun7zs: TCheckBox;
216  cbfunzips: TCheckBox;
217  cbfunencrypt: TCheckBox;
218  cbfuntest: TCheckBox;
219  cbfunzipmail: TCheckBox;
220  cbfun7zmail: TCheckBox;
221  cbfunsfxmail: TCheckBox;
222  cbfunwipe: TCheckBox;
223  cbfunext2to: TCheckBox;
224  CheckBoxbrowsepath: TCheckBox;
225  CheckBoxcommand: TCheckBox;
226  cbfunadd: TCheckBox;
227  cbfunconvert: TCheckBox;
228  cbfunopen: TCheckBox;
229  Labelinstall1: TLabel;
230  RadioButtoninstall1: TRadioButton;
231  RadioButtoninstall2: TRadioButton;
232  RadioButtoninstall3: TRadioButton;
233  RadioButtoninstall4: TRadioButton;
234  LabelAppLang: TLabel;
235  ComboBox1: TComboBox;
236  cbinstallcu: TCheckbox;
237  cbreset: TCheckbox;
238  lupdate: TLabel;
239  l1: TLabel;
240  lhelp: TLabel;
241  l2: TLabel;
242  lfaq: TLabel;
243  sLMCU:integer;
244
245{ install_Activate }
246
247procedure install_Activate(Page: TWizardPage);
248begin
249  // enter code here...
250end;
251
252{ install_ShouldSkipPage }
253
254function install_ShouldSkipPage(Page: TWizardPage): Boolean;
255begin
256  Result := False;
257end;
258
259{ install_BackButtonClick }
260
261function install_BackButtonClick(Page: TWizardPage): Boolean;
262begin
263  Result := True;
264end;
265
266{ install_NextkButtonClick }
267
268function install_NextButtonClick(Page: TWizardPage): Boolean;
269begin
270  Result := True;
271end;
272
273{ install_CancelButtonClick }
274
275procedure install_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
276begin
277  // enter code here...
278end;
279
280procedure install_lupdateClick(Sender: TObject);
281var
282  ErrorCode: Integer;
283begin
284   ShellExecAsOriginalUser('open', 'https://peazip.github.io/', '', '', SW_SHOW, ewNoWait, ErrorCode);
285end;
286
287procedure install_lhelpClick(Sender: TObject);
288var
289  ErrorCode: Integer;
290begin
291   ShellExecAsOriginalUser('open', 'https://peazip.github.io/peazip-help.html', '', '', SW_SHOW, ewNoWait, ErrorCode)
292end;
293
294procedure install_lfaqClick(Sender: TObject);
295var
296  ErrorCode: Integer;
297begin
298   ShellExecAsOriginalUser('open', 'https://peazip.github.io/peazip-help-faq.html', '', '', SW_SHOW, ewNoWait, ErrorCode)
299end;
300
301function install_CreatePage(PreviousPageId: Integer): Integer;
302var
303  Page: TWizardPage;
304  i:integer;
305  l:string;
306begin
307  Page := CreateCustomPage(
308    PreviousPageId,
309    ExpandConstant('{cm:install_Caption}'),
310	  ExpandConstant('{cm:install_Description}')
311  );
312
313{ Labelinstall1 }
314  Labelinstall1 := TLabel.Create(Page);
315  with Labelinstall1 do
316  begin
317    Parent := Page.Surface;
318    Caption :=
319      ExpandConstant('{cm:install_Labelinstall1_Caption0}') + #13 +
320      ExpandConstant('{cm:install_Labelinstall1_Caption2}');
321    Left := ScaleX(32);
322    Top := ScaleY(26);
323    Width := ScaleX(363);
324    Height := ScaleY(64);
325  end;
326
327  { RadioButtoninstall1 }
328  RadioButtoninstall1 := TRadioButton.Create(Page);
329  with RadioButtoninstall1 do
330  begin
331    Parent := Page.Surface;
332    Caption := ExpandConstant('{cm:install_RadioButtoninstall1_Caption0}');
333    Left := ScaleX(16);
334    Top := ScaleY(0);
335    Width := ScaleX(385);
336    Height := ScaleY(25);
337    Checked := True;
338    TabOrder := 0;
339    TabStop := True;
340  end;
341
342  { RadioButtoninstall2 }
343  RadioButtoninstall2 := TRadioButton.Create(Page);
344  with RadioButtoninstall2 do
345  begin
346    Parent := Page.Surface;
347    Caption := ExpandConstant('{cm:install_RadioButtoninstall2_Caption0}');
348    Left := ScaleX(16);
349    Top := ScaleY(60);
350    Width := ScaleX(385);
351    Height := ScaleY(25);
352    TabOrder := 1;
353    TabStop := True;
354  end;
355
356  { RadioButtoninstall3 }
357  RadioButtoninstall3 := TRadioButton.Create(Page);
358  with RadioButtoninstall3 do
359  begin
360    Parent := Page.Surface;
361    Caption := ExpandConstant('{cm:install_RadioButtoninstall3_Caption0}');
362    Left := ScaleX(16);
363    Top := ScaleY(80);
364    Width := ScaleX(385);
365    Height := ScaleY(25);
366    TabOrder := 2;
367    TabStop := True;
368  end;
369
370  { RadioButtoninstall4 }
371  RadioButtoninstall4 := TRadioButton.Create(Page);
372  with RadioButtoninstall4 do
373  begin
374    Parent := Page.Surface;
375    Caption := ExpandConstant('{cm:install_RadioButtoninstall4_Caption0}');
376    Left := ScaleX(16);
377    Top := ScaleY(100);
378    Width := ScaleX(385);
379    Height := ScaleY(25);
380    TabOrder := 3;
381    TabStop := True;
382  end;
383
384  { LabelAppLang }
385  LabelAppLang := TLabel.Create(Page);
386  with LabelAppLang do
387  begin
388    Parent := Page.Surface;
389    Caption := ExpandConstant('{cm:install_LabelAppLang_Caption0}');
390    Left := ScaleX(16);
391    Top := ScaleY(143);
392    Width := ScaleX(99);
393    Height := ScaleY(13);
394  end;
395  if (GetWindowsVersion < $06000000) then LabelAppLang.visible:=false;
396
397  { ComboBox1 }
398  ComboBox1 := TComboBox.Create(Page);
399  with ComboBox1 do
400  begin
401    Parent := Page.Surface;
402    Left := ScaleX(128);
403    Top := ScaleY(140);
404    Width := ScaleX(240);
405    Height := ScaleY(21);
406    TabOrder := 4;
407    Style := csDropDownList;
408    Text := 'EN - English';
409    Items.Add('AR - Arabic');
410    Items.Add('BG - Bulgarian');
411    Items.Add('BY-CR - Belarusian (Cyrillic)');
412    Items.Add('BY-LT - Belarusian (Latin)');
413    Items.Add('CHS - Chinese Simplified');
414    Items.Add('CHT - Chinese Traditional');
415    Items.Add('CZ - Czech');
416    Items.Add('DE-UML - German');
417    Items.Add('DE-UML-ALT - German (alternative)');
418    Items.Add('Default / Do not change current language');
419    Items.Add('EN - English');
420    Items.Add('EN-GB - British English');
421    Items.Add('ES-ES - Spanish');
422    Items.Add('ES-LA - Spanish (Latin-America)');
423    Items.Add('EU - Basque');
424    Items.Add('FI - Finnish');
425    Items.Add('FR - French');
426    Items.Add('GL - Galician');
427    Items.Add('GR - Greek');
428    Items.Add('HU - Hungarian');
429    Items.Add('ID - Bahasa Indonesia');
430    Items.Add('IT - Italian');
431    Items.Add('JA - Japanese');
432    Items.Add('KO - Korean');
433    Items.Add('NL - Dutch');
434    Items.Add('NO - Norwegian');
435    Items.Add('PL - Polish');
436    Items.Add('PT-BR - Portuguese (Brazil)');
437    Items.Add('PT-PT - Portuguese (Portugal)');
438    Items.Add('RO - Romanian');
439    Items.Add('RU - Russian');
440    Items.Add('SI - Sinhala');
441    Items.Add('SK - Slovak');
442    Items.Add('SL - Slovenian');
443    Items.Add('SV - Swedish');
444    Items.Add('TJ - Tajik');
445    Items.Add('TR - Turkish');
446    Items.Add('UK - Ukrainian');
447    Items.Add('UZ - Uzbek');
448    Items.Add('VN - Vietnamese');
449    ItemIndex := 9;
450  end;
451  if (GetWindowsVersion < $06000000) then ComboBox1.visible:=false;
452
453  try
454  l:=uppercase(paramstr(paramcount));
455  if length(l)>0 then if l[1]='/' then l:=copy(l,2,length(l)-1);
456  case l of
457  'AR': i:=0;
458  'BG': i:=1;
459  'BY-CR','BY': i:=2;
460  'BY-LT': i:=3;
461  'CHS','CH': i:=4;
462  'CHT': i:=5;
463  'CZ': i:=6;
464  'DE-UML','DE': i:=7;
465  'DEFAULT': i:=9;
466  'EN': i:=10;
467  'EN-GB': i:=11;
468  'ES-ES','ES': i:=12;
469  'ES-LA': i:=13;
470  'EU': i:=14;
471  'FI': i:=15;
472  'FR': i:=16;
473  'GL': i:=17;
474  'GR': i:=18;
475  'HU': i:=19;
476  'ID': i:=20;
477  'IT': i:=21;
478  'JA': i:=22;
479  'KO': i:=23;
480  'NL': i:=24;
481  'NO': i:=25;
482  'PL': i:=26;
483  'PT-BR': i:=27;
484  'PT-PT','PT': i:=28;
485  'RO': i:=29;
486  'RU': i:=30;
487  'SI': i:=31;
488  'SK': i:=32;
489  'SL': i:=33;
490  'SV': i:=34;
491  'TJ': i:=35;
492  'TR': i:=36;
493  'UK': i:=37;
494  'UZ': i:=38;
495  'VN': i:=39;
496  else i:=9;
497  end;
498  if i>=0 then
499     combobox1.itemindex:=i;
500  except
501  end;
502
503  { cbinstallcu }
504  cbinstallcu := Tcheckbox.Create(Page);
505  with cbinstallcu do
506  begin
507    Parent := Page.Surface;
508    Caption := ExpandConstant('{cm:install_cbinstallcu_Caption0}');
509    Left := ScaleX(16);
510    Top := ScaleY(170);
511    Width := ScaleX(160);
512    Height := ScaleY(25);
513  end;
514
515  { cbreset }
516  cbreset := Tcheckbox.Create(Page);
517  with cbreset do
518  begin
519    Parent := Page.Surface;
520    Caption := ExpandConstant('{cm:install_cbreset_Caption0}');
521    Left := ScaleX(16);
522    Top := ScaleY(203);
523    Width := ScaleX(160);
524    Height := ScaleY(25);
525  end;
526  if (GetWindowsVersion < $06000000) then cbreset.visible:=false;
527
528  { lupdate }
529  lupdate := TLabel.Create(Page);
530  with lupdate do
531  begin
532    Parent := Page.Surface;
533    Caption := ExpandConstant('{cm:install_lupdate_Caption0}');
534    Left := ScaleX(220);
535    Top := ScaleY(208);
536    Width := ScaleX(88);
537    Height := ScaleY(13);
538    Cursor := crHand;
539    Font.Color := 16711680;
540    Font.Height := ScaleY(-11);
541    Font.Name := 'Tahoma';
542    Font.Style := [fsUnderline];
543    OnClick := @install_lupdateClick;
544  end;
545
546  { l1 }
547  l1 := TLabel.Create(Page);
548  with l1 do
549  begin
550    Parent := Page.Surface;
551    Caption := ExpandConstant('{cm:install_l1_Caption0}');
552    Left := ScaleX(316);
553    Top := ScaleY(208);
554    Width := ScaleX(4);
555    Height := ScaleY(13);
556    Font.Height := ScaleY(-11);
557    Font.Name := 'Tahoma';
558  end;
559
560  { lhelp }
561  lhelp := TLabel.Create(Page);
562  with lhelp do
563  begin
564    Parent := Page.Surface;
565    Caption := ExpandConstant('{cm:install_lhelp_Caption0}');
566    Left := ScaleX(328);
567    Top := ScaleY(208);
568    Width := ScaleX(21);
569    Height := ScaleY(13);
570    Cursor := crHand;
571    Font.Color := 16711680;
572    Font.Height := ScaleY(-11);
573    Font.Name := 'Tahoma';
574    Font.Style := [fsUnderline];
575    OnClick := @install_lhelpClick;
576  end;
577
578  { l2 }
579  l2 := TLabel.Create(Page);
580  with l2 do
581  begin
582    Parent := Page.Surface;
583    Caption := ExpandConstant('{cm:install_l2_Caption0}');
584    Left := ScaleX(357);
585    Top := ScaleY(208);
586    Width := ScaleX(4);
587    Height := ScaleY(13);
588    Font.Height := ScaleY(-11);
589    Font.Name := 'Tahoma';
590  end;
591
592  { lfaq }
593  lfaq := TLabel.Create(Page);
594  with lfaq do
595  begin
596    Parent := Page.Surface;
597    Caption := ExpandConstant('{cm:install_lfaq_Caption0}');
598    Left := ScaleX(369);
599    Top := ScaleY(208);
600    Width := ScaleX(21);
601    Height := ScaleY(13);
602    Cursor := crHand;
603    Font.Color := 16711680;
604    Font.Height := ScaleY(-11);
605    Font.Name := 'Tahoma';
606    Font.Style := [fsUnderline];
607    OnClick := @install_lfaqClick;
608  end;
609
610  with Page do
611  begin
612    OnActivate := @install_Activate;
613    OnShouldSkipPage := @install_ShouldSkipPage;
614    OnBackButtonClick := @install_BackButtonClick;
615    OnNextButtonClick := @install_NextButtonClick;
616    OnCancelButtonClick := @install_CancelButtonClick;
617  end;
618
619  Result := Page.ID;
620end;
621
622				{ Associations_Activate }
623
624				procedure Associations_Activate(Page: TWizardPage);
625				begin
626				  // enter code here...
627				end;
628
629				{ Associations_ShouldSkipPage }
630
631				function Associations_ShouldSkipPage(Page: TWizardPage): Boolean;
632				begin
633				  if (radiobuttoninstall3.Checked = True) or (radiobuttoninstall4.Checked = True) then Result := True
634          else Result := False;
635				end;
636
637				{ Associations_BackButtonClick }
638
639				function Associations_BackButtonClick(Page: TWizardPage): Boolean;
640				begin
641				  Result := True;
642				end;
643
644				{ Associations_NextkButtonClick }
645
646				function Associations_NextButtonClick(Page: TWizardPage): Boolean;
647				begin
648				  Result := True;
649				end;
650
651				{ Associations_CancelButtonClick }
652
653				procedure Associations_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
654				begin
655				  // enter code here...
656				end;
657
658				{ Associations_CreatePage }
659
660				function Associations_CreatePage(PreviousPageId: Integer): Integer;
661				var
662				  Page: TWizardPage;
663				begin
664				  Page := CreateCustomPage(
665				    PreviousPageId,
666				    ExpandConstant('{cm:Associations_Caption}'),
667				    ExpandConstant('{cm:Associations_Description}')
668				  );
669
670{ Labelfull1 }
671Labelfull1 := TLabel.Create(Page);
672with Labelfull1 do
673begin
674  Parent := Page.Surface;
675  Caption := ExpandConstant('{cm:Associations_Labelfull1_Caption0}');
676  Left := ScaleX(0);
677  Top := ScaleY(0);
678  Width := ScaleX(163);
679  Height := ScaleY(13);
680  Font.Color := -16777208;
681  Font.Height := ScaleY(-11);
682  Font.Name := 'Tahoma';
683  Font.Style := [fsBold];
684  WordWrap := True;
685end;
686
687{ Bevel1 }
688Bevel1 := TBevel.Create(Page);
689with Bevel1 do
690begin
691  Parent := Page.Surface;
692  Left := ScaleX(0);
693  Top := ScaleY(20);
694  Width := ScaleX(410);
695  Height := ScaleY(52);
696end;
697
698{ Labelread1 }
699Labelread1 := TLabel.Create(Page);
700with Labelread1 do
701begin
702  Parent := Page.Surface;
703  Caption := ExpandConstant('{cm:Associations_Labelread1_Caption0}');
704  Left := ScaleX(0);
705  Top := ScaleY(112);
706  Width := ScaleX(128);
707  Height := ScaleY(13);
708  Font.Color := -16777208;
709  Font.Height := ScaleY(-11);
710  Font.Name := 'Tahoma';
711  Font.Style := [fsBold];
712  WordWrap := True;
713end;
714
715{ Bevel2 }
716Bevel2 := TBevel.Create(Page);
717with Bevel2 do
718begin
719  Parent := Page.Surface;
720  Left := ScaleX(0);
721  Top := ScaleY(132);
722  Width := ScaleX(410);
723  Height := ScaleY(78);
724end;
725
726{ cb7z }
727cb7z := TCheckBox.Create(Page);
728with cb7z do
729begin
730  Parent := Page.Surface;
731  Caption := ExpandConstant('{cm:Associations_cb7z_Caption0}');
732  Left := ScaleX(6);
733  Top := ScaleY(24);
734  Width := ScaleX(81);
735  Height := ScaleY(17);
736  Checked := True;
737  State := cbChecked;
738  TabOrder := 2;
739end;
740
741{ cbarc }
742cbarc := TCheckBox.Create(Page);
743with cbarc do
744begin
745  Parent := Page.Surface;
746  Caption := ExpandConstant('{cm:Associations_cbarc_Caption0}');
747  Left := ScaleX(110);
748  Top := ScaleY(24);
749  Width := ScaleX(73);
750  Height := ScaleY(17);
751  Checked := True;
752  State := cbChecked;
753  TabOrder := 3;
754end;
755
756{ cbbr }
757cbbr := TCheckBox.Create(Page);
758with cbbr do
759begin
760  Parent := Page.Surface;
761  Caption := ExpandConstant('{cm:Associations_cbbr_Caption0}');
762  Left := ScaleX(214);
763  Top := ScaleY(24);
764  Width := ScaleX(73);
765  Height := ScaleY(17);
766  Checked := True;
767  State := cbChecked;
768  TabOrder := 4;
769end;
770
771{ cbpaq8 }
772cbpaq8 := TCheckBox.Create(Page);
773with cbpaq8 do
774begin
775  Parent := Page.Surface;
776  Caption := ExpandConstant('{cm:Associations_cbpaq8_Caption0}');
777  Left := ScaleX(318);
778  Top := ScaleY(24);
779  Width := ScaleX(81);
780  Height := ScaleY(17);
781  Checked := True;
782  State := cbChecked;
783  TabOrder := 5;
784end;
785
786{ cbquad }
787cbquad := TCheckBox.Create(Page);
788with cbquad do
789begin
790  Parent := Page.Surface;
791  Caption := ExpandConstant('{cm:Associations_cbquad_Caption0}');
792  Left := ScaleX(6);
793  Top := ScaleY(48);
794  Width := ScaleX(100);
795  Height := ScaleY(17);
796  Checked := True;
797  State := cbChecked;
798  TabOrder := 6;
799end;
800
801{ cbtar }
802cbtar := TCheckBox.Create(Page);
803with cbtar do
804begin
805  Parent := Page.Surface;
806  Caption := ExpandConstant('{cm:Associations_cbtar_Caption0}');
807  Left := ScaleX(110);
808  Top := ScaleY(48);
809  Width := ScaleX(73);
810  Height := ScaleY(17);
811  Checked := True;
812  State := cbChecked;
813  TabOrder := 7;
814end;
815
816{ cbzip }
817cbzip := TCheckBox.Create(Page);
818with cbzip do
819begin
820  Parent := Page.Surface;
821  Caption := ExpandConstant('{cm:Associations_cbzip_Caption0}');
822  Left := ScaleX(214);
823  Top := ScaleY(48);
824  Width := ScaleX(81);
825  Height := ScaleY(17);
826  Checked := True;
827  State := cbChecked;
828  TabOrder := 8;
829end;
830
831{ cbzst }
832cbzst := TCheckBox.Create(Page);
833with cbzst do
834begin
835  Parent := Page.Surface;
836  Caption := ExpandConstant('{cm:Associations_cbzst_Caption0}');
837  Left := ScaleX(318);
838  Top := ScaleY(48);
839  Width := ScaleX(81);
840  Height := ScaleY(17);
841  Checked := True;
842  State := cbChecked;
843  TabOrder := 9;
844end;
845
846{ cbfullnone }
847cbfullnone := TCheckBox.Create(Page);
848with cbfullnone do
849begin
850  Parent := Page.Surface;
851  Caption := ExpandConstant('{cm:Associations_cbfullnone_Caption0}');
852  Left := ScaleX(0);
853  Top := ScaleY(74);
854  Width := ScaleX(321);
855  Height := ScaleY(25);
856  TabOrder := 0;
857end;
858
859{ cbarj }
860cbarj := TCheckBox.Create(Page);
861with cbarj do
862begin
863  Parent := Page.Surface;
864  Caption := ExpandConstant('{cm:Associations_cbarj_Caption0}');
865  Left := ScaleX(110);
866  Top := ScaleY(136);
867  Width := ScaleX(81);
868  Height := ScaleY(17);
869  Checked := True;
870  State := cbChecked;
871  TabOrder := 11;
872end;
873
874{ cbcab }
875cbcab := TCheckBox.Create(Page);
876with cbcab do
877begin
878  Parent := Page.Surface;
879  Caption := ExpandConstant('{cm:Associations_cbcab_Caption0}');
880  Left := ScaleX(214);
881  Top := ScaleY(136);
882  Width := ScaleX(73);
883  Height := ScaleY(17);
884  Checked := True;
885  State := cbChecked;
886  TabOrder := 12;
887end;
888
889{ cblinux }
890cblinux := TCheckBox.Create(Page);
891with cblinux do
892begin
893  Parent := Page.Surface;
894  Caption := ExpandConstant('{cm:Associations_cblinux_Caption0}');
895  Left := ScaleX(6);
896  Top := ScaleY(184);
897  Width := ScaleX(200);
898  Height := ScaleY(17);
899  Checked := True;
900  State := cbChecked;
901  TabOrder := 18;
902end;
903
904{ cbiso }
905cbiso := TCheckBox.Create(Page);
906with cbiso do
907begin
908  Parent := Page.Surface;
909  Caption := ExpandConstant('{cm:Associations_cbiso_Caption0}');
910  Left := ScaleX(6);
911  Top := ScaleY(160);
912  Width := ScaleX(81);
913  Height := ScaleY(17);
914  TabOrder := 14;
915end;
916
917{ cblha }
918cblha := TCheckBox.Create(Page);
919with cblha do
920begin
921  Parent := Page.Surface;
922  Caption := ExpandConstant('{cm:Associations_cblha_Caption0}');
923  Left := ScaleX(110);
924  Top := ScaleY(160);
925  Width := ScaleX(73);
926  Height := ScaleY(17);
927  Checked := True;
928  State := cbChecked;
929  TabOrder := 15;
930end;
931
932{ cblzh }
933cblzh := TCheckBox.Create(Page);
934with cblzh do
935begin
936  Parent := Page.Surface;
937  Caption := ExpandConstant('{cm:Associations_cblzh_Caption0}');
938  Left := ScaleX(214);
939  Top := ScaleY(160);
940  Width := ScaleX(73);
941  Height := ScaleY(17);
942  Checked := True;
943  State := cbChecked;
944  TabOrder := 16;
945end;
946
947{ cbrar }
948cbrar := TCheckBox.Create(Page);
949with cbrar do
950begin
951  Parent := Page.Surface;
952  Caption := ExpandConstant('{cm:Associations_cbrar_Caption0}');
953  Left := ScaleX(318);
954  Top := ScaleY(160);
955  Width := ScaleX(81);
956  Height := ScaleY(17);
957  Checked := True;
958  State := cbChecked;
959  TabOrder := 17;
960end;
961
962{ cbcpio }
963cbcpio := TCheckBox.Create(Page);
964with cbcpio do
965begin
966  Parent := Page.Surface;
967  Caption := ExpandConstant('{cm:Associations_cbcpio_Caption0}');
968  Left := ScaleX(318);
969  Top := ScaleY(136);
970  Width := ScaleX(73);
971  Height := ScaleY(17);
972  Checked := True;
973  State := cbChecked;
974  TabOrder := 13;
975end;
976
977{ cbreadnone }
978cbreadnone := TCheckBox.Create(Page);
979with cbreadnone do
980begin
981  Parent := Page.Surface;
982  Caption := ExpandConstant('{cm:Associations_cbreadnone_Caption0}');
983  Left := ScaleX(0);
984  Top := ScaleY(210);
985  Width := ScaleX(329);
986  Height := ScaleY(25);
987  TabOrder := 1;
988end;
989
990{ cbace }
991cbace := TCheckBox.Create(Page);
992with cbace do
993begin
994  Parent := Page.Surface;
995  Caption := ExpandConstant('{cm:Associations_cbace_Caption0}');
996  Left := ScaleX(6);
997  Top := ScaleY(136);
998  Width := ScaleX(81);
999  Height := ScaleY(17);
1000  Checked := True;
1001  State := cbChecked;
1002  TabOrder := 10;
1003end;
1004
1005{ cbMac }
1006cbMac := TCheckBox.Create(Page);
1007with cbMac do
1008begin
1009  Parent := Page.Surface;
1010  Caption := ExpandConstant('{cm:Associations_cbMac_Caption0}');
1011  Left := ScaleX(214);
1012  Top := ScaleY(184);
1013  Width := ScaleX(200);
1014  Height := ScaleY(17);
1015  Checked := True;
1016  State := cbChecked;
1017  TabOrder := 19;
1018end;
1019
1020				  with Page do
1021				  begin
1022				    OnActivate := @Associations_Activate;
1023				    OnShouldSkipPage := @Associations_ShouldSkipPage;
1024				    OnBackButtonClick := @Associations_BackButtonClick;
1025				    OnNextButtonClick := @Associations_NextButtonClick;
1026				    OnCancelButtonClick := @Associations_CancelButtonClick;
1027				  end;
1028
1029				  Result := Page.ID;
1030				end;
1031
1032{ context_Activate }
1033
1034procedure context_Activate(Page: TWizardPage);
1035begin
1036  // enter code here...
1037end;
1038
1039{ context_ShouldSkipPage }
1040
1041function context_ShouldSkipPage(Page: TWizardPage): Boolean;
1042begin
1043	if (radiobuttoninstall1.Checked = True) or (radiobuttoninstall3.Checked = True) or (radiobuttoninstall4.Checked = True) then Result := True
1044  else Result := False;
1045end;
1046
1047{ context_BackButtonClick }
1048
1049function context_BackButtonClick(Page: TWizardPage): Boolean;
1050begin
1051  Result := True;
1052end;
1053
1054{ context_NextkButtonClick }
1055
1056function context_NextButtonClick(Page: TWizardPage): Boolean;
1057begin
1058  Result := True;
1059end;
1060
1061{ context_CancelButtonClick }
1062
1063procedure context_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
1064begin
1065  // enter code here...
1066end;
1067
1068{ context_CreatePage }
1069
1070function context_CreatePage(PreviousPageId: Integer): Integer;
1071var
1072  Page: TWizardPage;
1073begin
1074  Page := CreateCustomPage(
1075    PreviousPageId,
1076    ExpandConstant('{cm:context_Caption}'),
1077    ExpandConstant('{cm:context_Description}')
1078  );
1079
1080{ Bevel1context }
1081  Bevel1context := TBevel.Create(Page);
1082  with Bevel1context do
1083  begin
1084    Parent := Page.Surface;
1085    Left := ScaleX(8);
1086    Top := ScaleY(2);
1087    Width := ScaleX(396);
1088    Height := ScaleY(210);
1089  end;
1090
1091  { cbcontextnone }
1092  cbcontextnone := TCheckBox.Create(Page);
1093  with cbcontextnone do
1094  begin
1095    Parent := Page.Surface;
1096    Caption := ExpandConstant('{cm:context_cbcontextnone_Caption0}');
1097    Left := ScaleX(8);
1098    Top := ScaleY(214);
1099    Width := ScaleX(240);
1100    Height := ScaleY(17);
1101    TabOrder := 0;
1102  end;
1103
1104  { cbcascaded }
1105  cbcascaded := TCheckBox.Create(Page);
1106  with cbcascaded do
1107  begin
1108    Parent := Page.Surface;
1109    Caption := ExpandConstant('{cm:context_cbcascaded_Caption0}');
1110    Left := ScaleX(260);
1111    Top := ScaleY(214);
1112    Width := ScaleX(185);
1113    Height := ScaleY(17);
1114    Checked := True;
1115    State := cbChecked;
1116    TabOrder := 1;
1117  end;
1118  if (GetWindowsVersion <= $06000000) then cbcascaded.visible:=false;
1119
1120  { cbcontextadd2archive }
1121  cbcontextadd2archive := TCheckBox.Create(Page);
1122  with cbcontextadd2archive do
1123  begin
1124    Parent := Page.Surface;
1125    Caption := ExpandConstant('{cm:context_cbcontextadd2archive_Caption0}');
1126    Left := ScaleX(16);
1127    Top := ScaleY(8);
1128    Width := ScaleX(169);
1129    Height := ScaleY(17);
1130    Checked := True;
1131    State := cbChecked;
1132    TabOrder := 2;
1133  end;
1134
1135  { cbcontextadd2archiveseparate }
1136  cbcontextadd2archiveseparate := TCheckBox.Create(Page);
1137  with cbcontextadd2archiveseparate do
1138  begin
1139    Parent := Page.Surface;
1140    Caption := ExpandConstant('{cm:context_cbcontextadd2archiveseparate_Caption0}');
1141    Left := ScaleX(16);
1142    Top := ScaleY(28);
1143    Width := ScaleX(169);
1144    Height := ScaleY(17);
1145    TabOrder := 3;
1146  end;
1147
1148  { cbcontextsfx }
1149  cbcontextsfx := TCheckBox.Create(Page);
1150  with cbcontextsfx do
1151  begin
1152    Parent := Page.Surface;
1153    Caption := ExpandConstant('{cm:context_cbcontextsfx_Caption0}');
1154    Left := ScaleX(16);
1155    Top := ScaleY(48);
1156    Width := ScaleX(169);
1157    Height := ScaleY(17);
1158    TabOrder := 4;
1159  end;
1160
1161  { cbcontext7zs }
1162  cbcontext7zs := TCheckBox.Create(Page);
1163  with cbcontext7zs do
1164  begin
1165    Parent := Page.Surface;
1166    Caption := ExpandConstant('{cm:context_cbcontext7zs_Caption0}');
1167    Left := ScaleX(16);
1168    Top := ScaleY(68);
1169    Width := ScaleX(169);
1170    Height := ScaleY(17);
1171    Checked := True;
1172    State := cbChecked;
1173    TabOrder := 5;
1174  end;
1175
1176  { CheckBox3f }
1177  CheckBox3f := TCheckBox.Create(Page);
1178  with CheckBox3f do
1179  begin
1180    Parent := Page.Surface;
1181    Caption := ExpandConstant('{cm:context_CheckBox3f_Caption0}');
1182    Left := ScaleX(16);
1183    Top := ScaleY(88);
1184    Width := ScaleX(169);
1185    Height := ScaleY(17);
1186    TabOrder := 6;
1187  end;
1188
1189  { CheckBox3 }
1190  CheckBox3 := TCheckBox.Create(Page);
1191  with CheckBox3 do
1192  begin
1193    Parent := Page.Surface;
1194    Caption := ExpandConstant('{cm:context_CheckBox3_Caption0}');
1195    Left := ScaleX(16);
1196    Top := ScaleY(108);
1197    Width := ScaleX(169);
1198    Height := ScaleY(17);
1199    TabOrder := 7;
1200  end;
1201
1202  { cbcontextzips }
1203  cbcontextzips := TCheckBox.Create(Page);
1204  with cbcontextzips do
1205  begin
1206    Parent := Page.Surface;
1207    Caption := ExpandConstant('{cm:context_cbcontextzips_Caption0}');
1208    Left := ScaleX(16);
1209    Top := ScaleY(128);
1210    Width := ScaleX(169);
1211    Height := ScaleY(17);
1212    Checked := True;
1213    State := cbChecked;
1214    TabOrder := 8;
1215  end;
1216
1217  { CheckBox4 }
1218  CheckBox4 := TCheckBox.Create(Page);
1219  with CheckBox4 do
1220  begin
1221    Parent := Page.Surface;
1222    Caption := ExpandConstant('{cm:context_CheckBox4_Caption0}');
1223    Left := ScaleX(16);
1224    Top := ScaleY(148);
1225    Width := ScaleX(169);
1226    Height := ScaleY(17);
1227    TabOrder := 9;
1228  end;
1229
1230  { cbcontext7zsenc }
1231  cbcontext7zsenc := TCheckBox.Create(Page);
1232  with cbcontext7zsenc do
1233  begin
1234    Parent := Page.Surface;
1235    Caption := ExpandConstant('{cm:context_cbcontext7zsenc_Caption0}');
1236    Left := ScaleX(16);
1237    Top := ScaleY(168);
1238    Width := ScaleX(169);
1239    Height := ScaleY(17);
1240    Checked := True;
1241    State := cbChecked;
1242    TabOrder := 10;
1243  end;
1244
1245  { cbcontextzipmail }
1246  cbcontextzipmail := TCheckBox.Create(Page);
1247  with cbcontextzipmail do
1248  begin
1249    Parent := Page.Surface;
1250    Caption := ExpandConstant('{cm:context_cbcontextzipmail_Caption0}');
1251    Left := ScaleX(16);
1252    Top := ScaleY(188);
1253    Width := ScaleX(169);
1254    Height := ScaleY(17);
1255    TabOrder := 11;
1256  end;
1257
1258  { cbcontextsplit }
1259  cbcontextsplit := TCheckBox.Create(Page);
1260  with cbcontextsplit do
1261  begin
1262    Parent := Page.Surface;
1263    Caption := ExpandConstant('{cm:context_cbcontextsplit_Caption0}');
1264    Left := ScaleX(208);
1265    Top := ScaleY(8);
1266    Width := ScaleX(177);
1267    Height := ScaleY(17);
1268    TabOrder := 12;
1269  end;
1270
1271  { cbcontextconvert }
1272  cbcontextconvert := TCheckBox.Create(Page);
1273  with cbcontextconvert do
1274  begin
1275    Parent := Page.Surface;
1276    Caption := ExpandConstant('{cm:context_cbcontextconvert_Caption0}');
1277    Left := ScaleX(208);
1278    Top := ScaleY(28);
1279    Width := ScaleX(177);
1280    Height := ScaleY(17);
1281    Checked := True;
1282    State := cbChecked;
1283    TabOrder := 13;
1284  end;
1285
1286  { cbcontextext }
1287  cbcontextext := TCheckBox.Create(Page);
1288  with cbcontextext do
1289  begin
1290    Parent := Page.Surface;
1291    Caption := ExpandConstant('{cm:context_cbcontextext_Caption0}');
1292    Left := ScaleX(208);
1293    Top := ScaleY(48);
1294    Width := ScaleX(193);
1295    Height := ScaleY(17);
1296    Checked := True;
1297    State := cbChecked;
1298    TabOrder := 14;
1299  end;
1300
1301  { cbcontextext2here }
1302  cbcontextext2here := TCheckBox.Create(Page);
1303  with cbcontextext2here do
1304  begin
1305    Parent := Page.Surface;
1306    Caption := ExpandConstant('{cm:context_cbcontextext2here_Caption0}');
1307    Left := ScaleX(208);
1308    Top := ScaleY(68);
1309    Width := ScaleX(193);
1310    Height := ScaleY(17);
1311    Checked := True;
1312    State := cbChecked;
1313    TabOrder := 15;
1314  end;
1315
1316  { cbcontextext2smart }
1317  cbcontextext2smart := TCheckBox.Create(Page);
1318  with cbcontextext2smart do
1319  begin
1320    Parent := Page.Surface;
1321    Caption := ExpandConstant('{cm:context_cbcontextext2smart_Caption0}');
1322    Left := ScaleX(208);
1323    Top := ScaleY(88);
1324    Width := ScaleX(177);
1325    Height := ScaleY(17);
1326    Checked := True;
1327    State := cbChecked;
1328    TabOrder := 16;
1329  end;
1330
1331  { cbcontextext2folder }
1332  cbcontextext2folder := TCheckBox.Create(Page);
1333  with cbcontextext2folder do
1334  begin
1335    Parent := Page.Surface;
1336    Caption := ExpandConstant('{cm:context_cbcontextext2folder_Caption0}');
1337    Left := ScaleX(208);
1338    Top := ScaleY(108);
1339    Width := ScaleX(177);
1340    Height := ScaleY(17);
1341    TabOrder := 17;
1342  end;
1343
1344  { cbcontexttest }
1345  cbcontexttest := TCheckBox.Create(Page);
1346  with cbcontexttest do
1347  begin
1348    Parent := Page.Surface;
1349    Caption := ExpandConstant('{cm:context_cbcontexttest_Caption0}');
1350    Left := ScaleX(208);
1351    Top := ScaleY(128);
1352    Width := ScaleX(185);
1353    Height := ScaleY(17);
1354    TabOrder := 18;
1355  end;
1356
1357  { cbcontextbrowse }
1358  cbcontextbrowse := TCheckBox.Create(Page);
1359  with cbcontextbrowse do
1360  begin
1361    Parent := Page.Surface;
1362    Caption := ExpandConstant('{cm:context_cbcontextbrowse_Caption0}');
1363    Left := ScaleX(208);
1364    Top := ScaleY(148);
1365    Width := ScaleX(169);
1366    Height := ScaleY(17);
1367    Checked := True;
1368    State := cbChecked;
1369    TabOrder := 19;
1370  end;
1371
1372  { cbcontextcrc }
1373  cbcontextcrc := TCheckBox.Create(Page);
1374  with cbcontextcrc do
1375  begin
1376    Parent := Page.Surface;
1377    Caption := ExpandConstant('{cm:context_cbcontextcrc_Caption0}');
1378    Left := ScaleX(208);
1379    Top := ScaleY(168);
1380    Width := ScaleX(169);
1381    Height := ScaleY(17);
1382    Checked := True;
1383    State := cbChecked;
1384    TabOrder := 20;
1385  end;
1386
1387  { cbcontextwipe }
1388  cbcontextwipe := TCheckBox.Create(Page);
1389  with cbcontextwipe do
1390  begin
1391    Parent := Page.Surface;
1392    Caption := ExpandConstant('{cm:context_cbcontextwipe_Caption0}');
1393    Left := ScaleX(208);
1394    Top := ScaleY(188);
1395    Width := ScaleX(177);
1396    Height := ScaleY(17);
1397    TabOrder := 21;
1398  end;
1399
1400  with Page do
1401  begin
1402    OnActivate := @context_Activate;
1403    OnShouldSkipPage := @context_ShouldSkipPage;
1404    OnBackButtonClick := @context_BackButtonClick;
1405    OnNextButtonClick := @context_NextButtonClick;
1406    OnCancelButtonClick := @context_CancelButtonClick;
1407  end;
1408
1409  Result := Page.ID;
1410end;
1411
1412{ Links_Activate }
1413
1414procedure Links_Activate(Page: TWizardPage);
1415begin
1416  // enter code here...
1417end;
1418
1419{ Links_ShouldSkipPage }
1420
1421function Links_ShouldSkipPage(Page: TWizardPage): Boolean;
1422begin
1423if (radiobuttoninstall1.Checked = True) or (radiobuttoninstall3.Checked = True) or (radiobuttoninstall4.Checked = True) then Result := True
1424else Result := False;
1425end;
1426
1427{ Links_BackButtonClick }
1428
1429function Links_BackButtonClick(Page: TWizardPage): Boolean;
1430begin
1431  Result := True;
1432end;
1433
1434{ Links_NextkButtonClick }
1435
1436function Links_NextButtonClick(Page: TWizardPage): Boolean;
1437begin
1438  Result := True;
1439end;
1440
1441{ Links_CancelButtonClick }
1442
1443procedure Links_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
1444begin
1445  // enter code here...
1446end;
1447
1448{ Links_CreatePage }
1449
1450function Links_CreatePage(PreviousPageId: Integer): Integer;
1451var
1452  Page: TWizardPage;
1453begin
1454  Page := CreateCustomPage(
1455    PreviousPageId,
1456    ExpandConstant('{cm:Links_Caption}'),
1457    ExpandConstant('{cm:Links_Description}')
1458  );
1459
1460{ Bevel1fun }
1461  Bevel1fun := TBevel.Create(Page);
1462  with Bevel1fun do
1463  begin
1464    Parent := Page.Surface;
1465    Left := ScaleX(8);
1466    Top := ScaleY(2);
1467    Width := ScaleX(396);
1468    Height := ScaleY(210);
1469  end;
1470
1471  { cbfunext2here }
1472  cbfunext2here := TCheckBox.Create(Page);
1473  with cbfunext2here do
1474  begin
1475    Parent := Page.Surface;
1476    Caption := ExpandConstant('{cm:Links_cbfunext2here_Caption0}');
1477    Left := ScaleX(208);
1478    Top := ScaleY(48);
1479    Width := ScaleX(177);
1480    Height := ScaleY(17);
1481    Checked := True;
1482    State := cbChecked;
1483    TabOrder := 12;
1484  end;
1485
1486  { cbfun7z }
1487  cbfun7z := TCheckBox.Create(Page);
1488  with cbfun7z do
1489  begin
1490    Parent := Page.Surface;
1491    Caption := ExpandConstant('{cm:Links_cbfun7z_Caption0}');
1492    Left := ScaleX(16);
1493    Top := ScaleY(28);
1494    Width := ScaleX(169);
1495    Height := ScaleY(17);
1496    TabOrder := 2;
1497  end;
1498
1499  { cbfunzip }
1500  cbfunzip := TCheckBox.Create(Page);
1501  with cbfunzip do
1502  begin
1503    Parent := Page.Surface;
1504    Caption := ExpandConstant('{cm:Links_cbfunzip_Caption0}');
1505    Left := ScaleX(16);
1506    Top := ScaleY(88);
1507    Width := ScaleX(177);
1508    Height := ScaleY(17);
1509    TabOrder := 5;
1510  end;
1511
1512  { cbfunsfx }
1513  cbfunsfx := TCheckBox.Create(Page);
1514  with cbfunsfx do
1515  begin
1516    Parent := Page.Surface;
1517    Caption := ExpandConstant('{cm:Links_cbfunsfx_Caption0}');
1518    Left := ScaleX(16);
1519    Top := ScaleY(148);
1520    Width := ScaleX(177);
1521    Height := ScaleY(17);
1522    TabOrder := 8;
1523  end;
1524
1525  { cbfunsplit }
1526  cbfunsplit := TCheckBox.Create(Page);
1527  with cbfunsplit do
1528  begin
1529    Parent := Page.Surface;
1530    Caption := ExpandConstant('{cm:Links_cbfunsplit_Caption0}');
1531    Left := ScaleX(208);
1532    Top := ScaleY(168);
1533    Width := ScaleX(177);
1534    Height := ScaleY(17);
1535    TabOrder := 19;
1536  end;
1537
1538    { cbfunconvert }
1539  cbfunconvert := TCheckBox.Create(Page);
1540  with cbfunconvert do
1541  begin
1542    Parent := Page.Surface;
1543    Caption := ExpandConstant('{cm:Links_cbfunconvert_Caption0}');
1544    Left := ScaleX(208);
1545    Top := ScaleY(188);
1546    Width := ScaleX(169);
1547    Height := ScaleY(17);
1548    TabOrder := 20;
1549  end;
1550
1551  { cbfunnone }
1552  cbfunnone := TCheckBox.Create(Page);
1553  with cbfunnone do
1554  begin
1555    Parent := Page.Surface;
1556    Caption := ExpandConstant('{cm:Links_cbfunnone_Caption0}');
1557    Left := ScaleX(8);
1558    Top := ScaleY(214);
1559    Width := ScaleX(321);
1560    Height := ScaleY(17);
1561    TabOrder := 0;
1562  end;
1563
1564  { cbfunext2folder }
1565  cbfunext2folder := TCheckBox.Create(Page);
1566  with cbfunext2folder do
1567  begin
1568    Parent := Page.Surface;
1569    Caption := ExpandConstant('{cm:Links_cbfunext2folder_Caption0}');
1570    Left := ScaleX(208);
1571    Top := ScaleY(68);
1572    Width := ScaleX(180);
1573    Height := ScaleY(17);
1574    Checked := True;
1575    State := cbChecked;
1576    TabOrder := 13;
1577  end;
1578
1579  { cbfun7zs }
1580  cbfun7zs := TCheckBox.Create(Page);
1581  with cbfun7zs do
1582  begin
1583    Parent := Page.Surface;
1584    Caption := ExpandConstant('{cm:Links_cbfun7zs_Caption0}');
1585    Left := ScaleX(32);
1586    Top := ScaleY(48);
1587    Width := ScaleX(161);
1588    Height := ScaleY(17);
1589    TabOrder := 3;
1590  end;
1591
1592  { cbfunzips }
1593  cbfunzips := TCheckBox.Create(Page);
1594  with cbfunzips do
1595  begin
1596    Parent := Page.Surface;
1597    Caption := ExpandConstant('{cm:Links_cbfunzips_Caption0}');
1598    Left := ScaleX(32);
1599    Top := ScaleY(108);
1600    Width := ScaleX(153);
1601    Height := ScaleY(17);
1602    TabOrder := 6;
1603  end;
1604
1605  { cbfunencrypt }
1606  cbfunencrypt := TCheckBox.Create(Page);
1607  with cbfunencrypt do
1608  begin
1609    Parent := Page.Surface;
1610    Caption := ExpandConstant('{cm:Links_cbfunencrypt_Caption0}');
1611    Left := ScaleX(16);
1612    Top := ScaleY(188);
1613    Width := ScaleX(169);
1614    Height := ScaleY(17);
1615    TabOrder := 10;
1616  end;
1617
1618  { cbfuntest }
1619  cbfuntest := TCheckBox.Create(Page);
1620  with cbfuntest do
1621  begin
1622    Parent := Page.Surface;
1623    Caption := ExpandConstant('{cm:Links_cbfuntest_Caption0}');
1624    Left := ScaleX(208);
1625    Top := ScaleY(108);
1626    Width := ScaleX(185);
1627    Height := ScaleY(17);
1628    Checked := True;
1629    State := cbChecked;
1630    TabOrder := 15;
1631  end;
1632
1633  { cbfunzipmail }
1634  cbfunzipmail := TCheckBox.Create(Page);
1635  with cbfunzipmail do
1636  begin
1637    Parent := Page.Surface;
1638    Caption := ExpandConstant('{cm:Links_cbfunzipmail_Caption0}');
1639    Left := ScaleX(32);
1640    Top := ScaleY(128);
1641    Width := ScaleX(153);
1642    Height := ScaleY(17);
1643    TabOrder := 7;
1644  end;
1645
1646  { cbfun7zmail }
1647  cbfun7zmail := TCheckBox.Create(Page);
1648  with cbfun7zmail do
1649  begin
1650    Parent := Page.Surface;
1651    Caption := ExpandConstant('{cm:Links_cbfun7zmail_Caption0}');
1652    Left := ScaleX(32);
1653    Top := ScaleY(68);
1654    Width := ScaleX(161);
1655    Height := ScaleY(17);
1656    TabOrder := 4;
1657  end;
1658
1659  { cbfunsfxmail }
1660  cbfunsfxmail := TCheckBox.Create(Page);
1661  with cbfunsfxmail do
1662  begin
1663    Parent := Page.Surface;
1664    Caption := ExpandConstant('{cm:Links_cbfunsfxmail_Caption0}');
1665    Left := ScaleX(32);
1666    Top := ScaleY(168);
1667    Width := ScaleX(161);
1668    Height := ScaleY(17);
1669    TabOrder := 9;
1670  end;
1671
1672  { cbfunwipe }
1673  cbfunwipe := TCheckBox.Create(Page);
1674  with cbfunwipe do
1675  begin
1676    Parent := Page.Surface;
1677    Caption := ExpandConstant('{cm:Links_cbfunwipe_Caption0}');
1678    Left := ScaleX(208);
1679    Top := ScaleY(148);
1680    Width := ScaleX(169);
1681    Height := ScaleY(17);
1682    TabOrder := 18;
1683  end;
1684
1685  { cbfunext2to }
1686  cbfunext2to := TCheckBox.Create(Page);
1687  with cbfunext2to do
1688  begin
1689    Parent := Page.Surface;
1690    Caption := ExpandConstant('{cm:Links_cbfunext2to_Caption0}');
1691    Left := ScaleX(208);
1692    Top := ScaleY(88);
1693    Width := ScaleX(177);
1694    Height := ScaleY(17);
1695    Checked := True;
1696    State := cbChecked;
1697    TabOrder := 14;
1698  end;
1699
1700  { CheckBoxbrowsepath }
1701  CheckBoxbrowsepath := TCheckBox.Create(Page);
1702  with CheckBoxbrowsepath do
1703  begin
1704    Parent := Page.Surface;
1705    Caption := ExpandConstant('{cm:Links_CheckBoxbrowsepath_Caption0}');
1706    Left := ScaleX(208);
1707    Top := ScaleY(8);
1708    Width := ScaleX(177);
1709    Height := ScaleY(17);
1710    Checked := True;
1711    State := cbChecked;
1712    TabOrder := 16;
1713  end;
1714
1715  { CheckBoxcommand }
1716  CheckBoxcommand := TCheckBox.Create(Page);
1717  with CheckBoxcommand do
1718  begin
1719    Parent := Page.Surface;
1720    Caption := ExpandConstant('{cm:Links_CheckBoxcommand_Caption0}');
1721    Left := ScaleX(208);
1722    Top := ScaleY(128);
1723    Width := ScaleX(177);
1724    Height := ScaleY(17);
1725    TabOrder := 17;
1726  end;
1727
1728  { cbfunadd }
1729  cbfunadd := TCheckBox.Create(Page);
1730  with cbfunadd do
1731  begin
1732    Parent := Page.Surface;
1733    Caption := ExpandConstant('{cm:Links_cbfunadd_Caption0}');
1734    Left := ScaleX(16);
1735    Top := ScaleY(8);
1736    Width := ScaleX(169);
1737    Height := ScaleY(17);
1738    Checked := True;
1739    State := cbChecked;
1740    TabOrder := 1;
1741  end;
1742
1743  { cbfunopen }
1744  cbfunopen := TCheckBox.Create(Page);
1745  with cbfunopen do
1746  begin
1747    Parent := Page.Surface;
1748    Caption := ExpandConstant('{cm:Links_cbfunopen_Caption0}');
1749    Left := ScaleX(208);
1750    Top := ScaleY(28);
1751    Width := ScaleX(169);
1752    Height := ScaleY(17);
1753    Checked := True;
1754    State := cbChecked;
1755    TabOrder := 11;
1756  end;
1757
1758  with Page do
1759  begin
1760    OnActivate := @Links_Activate;
1761    OnShouldSkipPage := @Links_ShouldSkipPage;
1762    OnBackButtonClick := @Links_BackButtonClick;
1763    OnNextButtonClick := @Links_NextButtonClick;
1764    OnCancelButtonClick := @Links_CancelButtonClick;
1765  end;
1766
1767  Result := Page.ID;
1768end;
1769
1770				{ InitializeWizard }
1771
1772				procedure InitializeWizard();
1773				begin
1774          Associations_CreatePage(wpSelectDir);//InfoBefore);
1775				  Links_CreatePage(wpSelectDir);
1776				  context_CreatePage(wpSelectDir);
1777				  install_CreatePage(wpInfoBefore);//(wpWelcome);
1778				end;
1779
1780function shouldskippage(CurPageID: Integer): Boolean;
1781begin
1782if (radiobuttoninstall1.Checked = True) or (radiobuttoninstall4.Checked = True) then
1783   begin
1784   if curpageid=wpSelectDir then Result := True;
1785	 if curpageid=wpSelectTasks then Result := True;
1786	 end;
1787end;
1788
1789procedure clearlinks;
1790begin
1791deletefile(expandconstant('{sendto}')+'\Add to archive.lnk');
1792deletefile(expandconstant('{sendto}')+'\Convert.lnk');
1793deletefile(expandconstant('{sendto}')+'\Add to 7Z.lnk');
1794deletefile(expandconstant('{sendto}')+'\Add to 7Z and send by mail.lnk');
1795deletefile(expandconstant('{sendto}')+'\Add to separate 7Z.lnk');
1796deletefile(expandconstant('{sendto}')+'\Add to ZIP.lnk');
1797deletefile(expandconstant('{sendto}')+'\Add to ZIP and send by mail.lnk');
1798deletefile(expandconstant('{sendto}')+'\Add to separate ZIP.lnk');
1799deletefile(expandconstant('{sendto}')+'\Add to self-extracting archive.lnk');
1800deletefile(expandconstant('{sendto}')+'\Add to sfx and send by mail.lnk');
1801deletefile(expandconstant('{sendto}')+'\Encrypt (PEA).lnk');
1802deletefile(expandconstant('{sendto}')+'\Split file.lnk');
1803deletefile(expandconstant('{sendto}')+'\Secure delete.lnk');
1804deletefile(expandconstant('{sendto}')+'\Extract here.lnk');
1805deletefile(expandconstant('{sendto}')+'\Extract....lnk');
1806deletefile(expandconstant('{sendto}')+'\Extract here (in new folder).lnk');
1807deletefile(expandconstant('{sendto}')+'\Open with PeaZip.lnk');
1808deletefile(expandconstant('{sendto}')+'\Test archive(s).lnk');
1809deletefile(expandconstant('{sendto}')+'\Open as archive.lnk');
1810deletefile(expandconstant('{sendto}')+'\Browse path with PeaZip.lnk');
1811deletefile(expandconstant('{sendto}')+'\Open command prompt here.lnk');
1812//legacy
1813deletefile(expandconstant('{sendto}')+'\Encrypt.lnk');
1814deletefile(expandconstant('{sendto}')+'\Add to .7Z.lnk');
1815deletefile(expandconstant('{sendto}')+'\Add to .7Z and send by mail.lnk');
1816deletefile(expandconstant('{sendto}')+'\Add to separate .7Z.lnk');
1817deletefile(expandconstant('{sendto}')+'\Add to .ZIP.lnk');
1818deletefile(expandconstant('{sendto}')+'\Add to .ZIP and send by mail.lnk');
1819deletefile(expandconstant('{sendto}')+'\Add to separate .ZIP.lnk');
1820end;
1821
1822procedure clearcontextlegacy;
1823begin
1824RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\SOFTWARE\Classes\*\shell\Add to archive');
1825RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to 7Z');
1826RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Encrypt (7Z)');
1827RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to 7Z, fastest');
1828RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to 7Z, normal');
1829RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to 7Z, ultra');
1830RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to ZIP');
1831RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to ZIP, fastest');
1832RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to ZIP, normal');
1833RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to ZIP, ultra');
1834RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Zip and mail');
1835RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to self-extracting archive');
1836RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to separate archive(s)');
1837RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to separate 7Z');
1838RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to separate ZIP');
1839RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Open as archive');
1840RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Browse path with PeaZip');
1841RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Split file');
1842RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Convert');
1843RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Secure delete');
1844RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\CRC, hash and file tools');
1845RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Extract...');
1846RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Extract here');
1847RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Extract here (smart new folder)');
1848RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Extract here (in new folder)');
1849RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Test archive(s)');
1850RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to archive');
1851RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to 7Z');
1852RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Encrypt (7Z)');
1853RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, fastest');
1854RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, normal');
1855RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, ultra');
1856RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to ZIP');
1857RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, fastest');
1858RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, normal');
1859RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, ultra');
1860RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Zip and mail');
1861RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to self-extracting archive');
1862RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to separate archive(s)');
1863RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to separate 7Z');
1864RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to separate ZIP');
1865RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Browse path with PeaZip');
1866RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Split file');
1867RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Convert');
1868RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Secure delete');
1869RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\CRC, hash and file tools');
1870RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Extract...');
1871//local
1872RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\SOFTWARE\Classes\*\shell\Add to archive');
1873RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to 7Z');
1874RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Encrypt (7Z)');
1875RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, fastest');
1876RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, normal');
1877RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, ultra');
1878RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to ZIP');
1879RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to ZIP, fastest');
1880RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to ZIP, normal');
1881RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to ZIP, ultra');
1882RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Zip and mail');
1883RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to self-extracting archive');
1884RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to separate archive(s)');
1885RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to separate 7Z');
1886RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to separate ZIP');
1887RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Open as archive');
1888RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Browse path with PeaZip');
1889RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Split file');
1890RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Convert');
1891RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Secure delete');
1892RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\CRC, hash and file tools');
1893RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Extract...');
1894RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Extract here');
1895RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Extract here (smart new folder)');
1896RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Extract here (in new folder)');
1897RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Test archive(s)');
1898RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to archive');
1899RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z');
1900RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Encrypt (7Z)');
1901RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, fastest');
1902RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, normal');
1903RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, ultra');
1904RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP');
1905RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, fastest');
1906RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, normal');
1907RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, ultra');
1908RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Zip and mail');
1909RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to self-extracting archive');
1910RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to separate archive(s)');
1911RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to separate 7Z');
1912RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to separate ZIP');
1913RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Browse path with PeaZip');
1914RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Split file');
1915RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Convert');
1916RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Secure delete');
1917RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\CRC, hash and file tools');
1918RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Extract...');
1919//legacy
1920RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .7Z');
1921RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .7Z, fastest');
1922RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .7Z, normal');
1923RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .7Z, ultra');
1924RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .ZIP');
1925RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .ZIP, fastest');
1926RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .ZIP, normal');
1927RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to .ZIP, ultra');
1928RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to separate .7Z');
1929RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\Add to separate .ZIP');
1930RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .7Z');
1931RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, fastest');
1932RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, normal');
1933RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, ultra');
1934RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP');
1935RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, fastest');
1936RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, normal');
1937RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, ultra');
1938RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to separate .7Z');
1939RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\Directory\shell\Add to separate .ZIP');
1940RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .7Z');
1941RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .7Z, fastest');
1942RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .7Z, normal');
1943RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .7Z, ultra');
1944RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .ZIP');
1945RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .ZIP, fastest');
1946RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .ZIP, normal');
1947RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to .ZIP, ultra');
1948RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to separate .7Z');
1949RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\Add to separate .ZIP');
1950RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .7Z');
1951RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, fastest');
1952RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, normal');
1953RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .7Z, ultra');
1954RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP');
1955RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, fastest');
1956RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, normal');
1957RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to .ZIP, ultra');
1958RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to separate .7Z');
1959RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\Directory\shell\Add to separate .ZIP');
1960end;
1961
1962procedure clearcontextseven;
1963var s3264:integer;
1964begin
1965RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\*\shell\PeaZip');
1966RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip');
1967RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\*\shell\PeaZip');
1968RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip');
1969if IsWin64 then s3264:=HKLM64 else s3264:=HKLM32;
1970   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate');
1971   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesingle');
1972   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7z');
1973   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zencrypt');
1974   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest');
1975   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7znormal');
1976   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zultra');
1977   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezip');
1978   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipfastest');
1979   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipnormal');
1980   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipultra');
1981   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipmail');
1982   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesfx');
1983   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browseasarchive');
1984   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browsepath');
1985   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2split');
1986   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2convert');
1987   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2wipe');
1988   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2here');
1989   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2smart');
1990   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2folder');
1991   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2main');
1992   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2a');
1993   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2test');
1994   RegDeleteKeyIncludingSubkeys(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.analyze');
1995end;
1996
1997procedure clearassociations;
1998begin
1999if RegKeyExists(HKLM, 'SOFTWARE\Classes\SOFTWARE\PeaZip') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\SOFTWARE\PeaZip');
2000if RegKeyExists(HKLM, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional');
2001if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PEA') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PEA');
2002if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.001') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.001');
2003if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.7Z') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.7Z');
2004if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.XZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.XZ');
2005if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ARC') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ARC');
2006if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.WRC') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.WRC');
2007if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.BR') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.BR');
2008if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ZST') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ZST');
2009if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TZST') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TZST');
2010if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ1') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ1');
2011if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ5') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ5');
2012if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ8') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.LPAQ8');
2013if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8F') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8F');
2014if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8JD') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8JD');
2015if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8L') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8L');
2016if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8O') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PAQ8O');
2017if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ZPAQ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ZPAQ');
2018if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.QUAD') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.QUAD');
2019if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.BALZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.BALZ');
2020if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.BCM') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.BCM');
2021if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TAR') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TAR');
2022if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.GZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.GZ');
2023if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TGZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TGZ');
2024if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.BZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.BZ');
2025if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.BZ2') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.BZ2');
2026if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TBZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TBZ');
2027if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TBZ2') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TBZ2');
2028if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ZIP') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ZIP');
2029if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ZIPX') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ZIPX');
2030if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ACE') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ACE');
2031if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ARJ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ARJ');
2032if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.CAB') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.CAB');
2033if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.CPIO') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.CPIO');
2034if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.Z') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.Z');
2035if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TZ');
2036if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.TAZ') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.TAZ');
2037if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.ISO') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.ISO');
2038if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.UDF') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.UDF');
2039if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.LHA') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.LHA');
2040if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.DEB') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.DEB');
2041if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PET') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PET');
2042if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.PUP') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.PUP');
2043if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.RPM') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.RPM');
2044if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.SLP') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.SLP');
2045if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.LZH') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.LZH');
2046if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.DMG') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.DMG');
2047if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.HFS') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.HFS');
2048if RegKeyExists(HKLM, 'SOFTWARE\Classes\PeaZip.RAR') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\PeaZip.RAR');
2049//local
2050if RegKeyExists(HKCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip');
2051if RegKeyExists(HKCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional');
2052if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PEA') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PEA');
2053if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.001') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.001');
2054if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.7Z') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.7Z');
2055if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.XZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.XZ');
2056if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ARC') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ARC');
2057if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.WRC') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.WRC');
2058if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.BR') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.BR');
2059if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ZST') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ZST');
2060if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TZST') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TZST');
2061if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ1') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ1');
2062if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ5') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ5');
2063if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ8') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.LPAQ8');
2064if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8F') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8F');
2065if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8JD') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8JD');
2066if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8L') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8L');
2067if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8O') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PAQ8O');
2068if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ZPAQ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ZPAQ');
2069if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.QUAD') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.QUAD');
2070if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.BALZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.BALZ');
2071if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.BCM') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.BCM');
2072if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TAR') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TAR');
2073if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.GZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.GZ');
2074if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TGZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TGZ');
2075if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.BZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.BZ');
2076if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.BZ2') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.BZ2');
2077if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TBZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TBZ');
2078if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TBZ2') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TBZ2');
2079if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ZIP') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ZIP');
2080if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ZIPX') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ZIPX');
2081if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ACE') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ACE');
2082if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ARJ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ARJ');
2083if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.CAB') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.CAB');
2084if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.CPIO') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.CPIO');
2085if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.Z') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.Z');
2086if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TZ');
2087if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.TAZ') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.TAZ');
2088if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.ISO') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.ISO');
2089if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.UDF') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.UDF');
2090if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.LHA') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.LHA');
2091if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.DEB') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.DEB');
2092if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PET') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PET');
2093if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.PUP') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.PUP');
2094if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.RPM') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.RPM');
2095if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.SLP') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.SLP');
2096if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.LZH') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.LZH');
2097if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.DMG') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.DMG');
2098if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.HFS') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.HFS');
2099if RegKeyExists(HKCU, 'SOFTWARE\Classes\PeaZip.RAR') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Classes\PeaZip.RAR');
2100end;
2101
2102procedure contextseven;
2103var
2104  s,sfs,sall,smenuadd:ansistring;
2105  s3264:integer;
2106begin
2107      s:='';
2108      sfs:='';
2109      sall:='';
2110
2111      s:=s+'PeaZip.ext2browseasarchive; ';
2112      if cbcontextbrowse.state = cbChecked then s:=s+'PeaZip.ext2browsepath; ';
2113      if cbcontextadd2archive.state = cbChecked then s:=s+'PeaZip.add2separate; ';
2114      if cbcontextadd2archiveseparate.state = cbChecked then s:=s+'PeaZip.add2separatesingle; ';
2115      if cbcontextsfx.state = cbChecked then s:=s+'PeaZip.add2separatesfx; ';
2116      if cbcontext7zs.state = cbChecked then s:=s+'PeaZip.add2separate7z; ';
2117      if checkbox3f.state = cbChecked then s:=s+'PeaZip.add2separate7zfastest; ';
2118      if checkbox3.state = cbChecked then s:=s+'PeaZip.add2separate7zultra; ';
2119      if cbcontextzips.state = cbChecked then s:=s+'PeaZip.add2separatezip; ';
2120      if checkbox4.state = cbChecked then s:=s+'PeaZip.add2separatezipfastest; ';
2121      if cbcontext7zsenc.state = cbChecked then s:=s+'PeaZip.add2separate7zencrypt; ';
2122      if cbcontextzipmail.state = cbChecked then s:=s+'PeaZip.add2separatezipmail; ';
2123      if cbcontextsplit.state = cbChecked then s:=s+'PeaZip.add2split; ';
2124      if cbcontextconvert.state = cbChecked then s:=s+'PeaZip.add2convert; ';
2125
2126      if cbcontextadd2archive.state = cbChecked then smenuadd:='PeaZip.add2separate'
2127      else
2128         if cbcontextadd2archiveseparate.state = cbChecked then smenuadd:='PeaZip.add2separatesingle'
2129         else
2130            if cbcontextsfx.state = cbChecked then smenuadd:='PeaZip.add2separatesfx'
2131            else
2132               if cbcontext7zs.state = cbChecked then smenuadd:='PeaZip.add2separate7z'
2133               else
2134                  if checkbox3f.state = cbChecked then smenuadd:='PeaZip.add2separate7zfastest'
2135                  else
2136                     if checkbox3.state = cbChecked then smenuadd:='PeaZip.add2separate7zultra'
2137                     else
2138                        if cbcontextzips.state = cbChecked then smenuadd:='PeaZip.add2separatezip'
2139                        else
2140                           if checkbox4.state = cbChecked then smenuadd:='PeaZip.add2separatezipfastest'
2141                           else
2142                              if cbcontext7zsenc.state = cbChecked then smenuadd:='PeaZip.add2separate7zencrypt'
2143                              else
2144                                 if cbcontextzipmail.state = cbChecked then smenuadd:='PeaZip.add2separatezipmail'
2145                                 else
2146                                    if cbcontextsplit.state = cbChecked then smenuadd:='PeaZip.add2split'
2147                                    else
2148                                       if cbcontextconvert.state = cbChecked then smenuadd:='PeaZip.add2convert';
2149
2150      if cbcontextcrc.state = cbChecked then s:=s+'PeaZip.analyze; ';
2151      if cbcontextwipe.state = cbChecked then s:=s+'PeaZip.add2wipe; ';
2152
2153      sfs:='PeaZip.ext2main; '+s; //AllFileSystemObjects
2154
2155      if cbcontextext.state = cbChecked then sall:=sall+'PeaZip.ext2main; ';
2156      if cbcontextext2here.state = cbChecked then sall:=sall+'PeaZip.ext2here; ';
2157      if cbcontextext2smart.state = cbChecked then sall:=sall+'PeaZip.ext2smart; ';
2158      if cbcontextext2folder.state = cbChecked then sall:=sall+'PeaZip.ext2folder; ';
2159      if cbcontexttest.state = cbChecked then sall:=sall+'PeaZip.ext2test; ';
2160
2161      sall:=sall+s; //*
2162
2163      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\PeaZip', 'SubCommands', sall);
2164      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\PeaZip', 'MultiSelectModel', 'player');
2165      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\PeaZip', 'Icon', ExpandConstant('"{app}\peazip.exe",0'));
2166      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\PeaZip\command', '', ''); //workaround: in Windows 7 it is not needed a \command key for this type of entry, but some optimization/cleaning utilities (i.e. TuneUp) would otherwise delete all entries in \shell missing a \command key
2167      RegDeleteValue(sLMCU, 'SOFTWARE\Classes\*\shell\PeaZip\command', ''); //the key created for the workaround is emptied to default value, otherwise it may be detected as a defective link by some utilities
2168
2169      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip', 'SubCommands', sfs);
2170      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip', 'MultiSelectModel', 'player');
2171      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip', 'Icon', ExpandConstant('"{app}\peazip.exe",0'));
2172      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip\command', '', ''); //workaround: in Windows 7 it is not needed a \command key for this type of entry, but some optimization/cleaning utilities (i.e. TuneUp) would otherwise delete all entries in \shell missing a \command key
2173      RegDeleteValue(sLMCU, 'SOFTWARE\Classes\AllFileSystemObjects\shell\PeaZip\command', ''); //the key created for the workaround is emptied to default value, otherwise it may be detected as a defective link by some utilities
2174
2175      if IsWin64 then s3264:=HKLM64 else s3264:=HKLM32;
2176
2177        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate', '', '&Add to archive');
2178        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",2'));
2179        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi" "%1"'));
2180        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesingle', '', 'Add to separate archive(s)');
2181        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesingle', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",2'));
2182        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesingle\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiseparate" "%1"'));
2183        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7z', '', 'Add to &7Z');
2184        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7z', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",10'));
2185        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7z\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7z" "%1"'));
2186        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest', '', 'Add to 7Z, fastest');
2187        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",10'));
2188        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zfastest" "%1"'));
2189        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7znormal', '', 'Add to 7Z, normal');
2190        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7znormal', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",10'));
2191        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7znormal\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7znormal" "%1"'));
2192        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest', '', 'Add to 7Z, fastest');
2193        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",10'));
2194        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zfastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zfastest" "%1"'));
2195        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zultra', '', 'Add to 7Z, ultra');
2196        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zultra', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",10'));
2197        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zultra\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zultra" "%1"'));
2198        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezip', '', 'Add to &ZIP');
2199        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezip', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",13'));
2200        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezip\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizip" "%1"'));
2201        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipfastest', '', 'Add to ZIP, fastest');
2202        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipfastest', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",13'));
2203        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipfastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipfastest" "%1"'));
2204        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipnormal', '', 'Add to ZIP, normal');
2205        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipnormal', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",13'));
2206        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipnormal\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipnormal" "%1"'));
2207        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipultra', '', 'Add to ZIP, ultra');
2208        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipultra', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",13'));
2209        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipultra\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipultra" "%1"'));
2210        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zencrypt', '', 'Encrypt (7Z)');
2211        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zencrypt', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",0'));
2212        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separate7zencrypt\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zencrypt" "%1"'));
2213        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipmail', '', 'Zip and mail');
2214        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipmail', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",3'));
2215        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatezipmail\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipmail" "%1"'));
2216        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesfx', '', 'Add to self-extracting archive');
2217        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesfx', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",11'));
2218        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2separatesfx\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisfx" "%1"'));
2219        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browseasarchive', '', '&Open as archive');
2220        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browseasarchive', 'Icon', ExpandConstant('"{app}\peazip.exe",0'));
2221        RegWriteDWordValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browseasarchive', 'CommandFlags', 32);
2222        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browseasarchive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2browseasarchive" "%1"'));
2223        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browsepath', '', '&Browse path with PeaZip');
2224        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browsepath', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",8'));
2225        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2browsepath\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2browsepath" "%1"'));
2226        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2split', '', 'Split file');
2227        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2split', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",5'));
2228        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2split\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisplit" "%1"'));
2229        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2convert', '', 'Convert');
2230        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2convert', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",7'));
2231        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2convert\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiconvert" "%1"'));
2232        RegWriteDWordValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\'+smenuadd, 'CommandFlags', 32);
2233        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2wipe', '', 'Secure delete');
2234        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2wipe', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",6'));
2235        RegWriteDWordValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2wipe', 'CommandFlags', 32);
2236        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.add2wipe\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2wipe" "%1"'));
2237        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2here', '', 'Extract &here');
2238        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2here', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",4'));
2239        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2here\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multihere" "%1"'));
2240        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2smart', '', 'Extract here (&smart new folder)');
2241        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2smart', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",4'));
2242        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2smart\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multismart" "%1"'));
2243        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2folder', '', 'Extract here (in &new folder)');
2244        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2folder', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",4'));
2245        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2folder\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multifolder" "%1"'));
2246        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2main', '', '&Extract...');
2247        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2main', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",4'));
2248        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2main\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multi" "%1"'));
2249        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2a', '', 'Extract archives');
2250        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2a', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",4'));
2251        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2a\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multi" "%1"'));
2252        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2test', '', 'Test archive(s)');
2253        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2test', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",1'));
2254        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.ext2test\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2test" "%1"'));
2255        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.analyze', '', 'CRC, hash and file tools');
2256        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.analyze', 'Icon', ExpandConstant('"{app}\res\icons\peazip_seven.icl",9'));
2257        RegWriteDWordValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.analyze', 'CommandFlags', 32);
2258        RegWriteStringValue(s3264, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PeaZip.analyze\command', '', ExpandConstant('"{app}\res\PEA.EXE" "PEAUTILS" "12" "%1"'));
2259
2260end;
2261
2262procedure contextlegacy;
2263begin
2264
2265    if cbcontextadd2archive.state = cbChecked then
2266       begin
2267       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to archive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi" "%1"'));
2268       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to archive', 'MultiSelectModel', 'player');
2269       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to archive', '', '&Add to archive');
2270       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to archive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi" "%1"'));
2271       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to archive', 'MultiSelectModel', 'player');
2272       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to archive', '', '&Add to archive');
2273       end;
2274
2275    if cbcontext7zs.state = cbChecked then
2276       begin
2277       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7z" "%1"'));
2278       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z', 'MultiSelectModel', 'player');
2279       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z', '', 'Add to &7Z');
2280       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7z" "%1"'));
2281       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z', 'MultiSelectModel', 'player');
2282       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z', '', 'Add to &7Z');
2283       end;
2284    if CheckBox3.state = cbChecked then
2285       begin
2286       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, fastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zfastest" "%1"'));
2287       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, fastest', 'MultiSelectModel', 'player');
2288       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, fastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zfastest" "%1"'));
2289       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, fastest', 'MultiSelectModel', 'player');
2290       end;
2291    if CheckBox3.state = cbChecked then
2292       begin
2293       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, ultra\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zultra" "%1"'));
2294       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to 7Z, ultra', 'MultiSelectModel', 'player');
2295       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, ultra\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zultra" "%1"'));
2296       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to 7Z, ultra', 'MultiSelectModel', 'player');
2297       end;
2298    if cbcontextzips.state = cbChecked then
2299       begin
2300       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to ZIP\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizip" "%1"'));
2301       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to ZIP', 'MultiSelectModel', 'player');
2302       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to ZIP', '', 'Add to &ZIP');
2303       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizip" "%1"'));
2304       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP', 'MultiSelectModel', 'player');
2305       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP', '', 'Add to &ZIP');
2306       end;
2307    if CheckBox4.state = cbChecked then
2308       begin
2309       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to ZIP, fastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipfastest" "%1"'));
2310       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to ZIP, fastest', 'MultiSelectModel', 'player');
2311       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, fastest\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipfastest" "%1"'));
2312       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to ZIP, fastest', 'MultiSelectModel', 'player');
2313       end;
2314    if cbcontext7zsenc.state = cbChecked then
2315       begin
2316       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Encrypt (7Z)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zencrypt" "%1"'));
2317       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Encrypt (7Z)', 'MultiSelectModel', 'player');
2318       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Encrypt (7Z)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multi7zencrypt" "%1"'));
2319       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Encrypt (7Z)', 'MultiSelectModel', 'player');
2320       end;
2321    if cbcontextzipmail.state = cbChecked then
2322       begin
2323       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Zip and mail\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipmail" "%1"'));
2324       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Zip and mail', 'MultiSelectModel', 'player');
2325       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Zip and mail\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multizipmail" "%1"'));
2326       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Zip and mail', 'MultiSelectModel', 'player');
2327       end;
2328    if cbcontextsfx.state = cbChecked then
2329       begin
2330       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to self-extracting archive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisfx" "%1"'));
2331       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to self-extracting archive', 'MultiSelectModel', 'player');
2332       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to self-extracting archive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisfx" "%1"'));
2333       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to self-extracting archive', 'MultiSelectModel', 'player');
2334       end;
2335    if cbcontextadd2archiveseparate.state = cbChecked then
2336       begin
2337       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to separate archive(s)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiseparate" "%1"'));
2338       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Add to separate archive(s)', 'MultiSelectModel', 'player');
2339       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to separate archive(s)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiseparate" "%1"'));
2340       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Add to separate archive(s)', 'MultiSelectModel', 'player');
2341       end;
2342
2343       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Open as archive\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2openasarchive" "%1"'));
2344       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Open as archive', 'MultiSelectModel', 'player');
2345       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Open as archive', '', '&Open as archive');
2346
2347    if cbcontextbrowse.state = cbChecked then
2348       begin
2349       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Browse path with PeaZip\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2browsepath" "%1"'));
2350       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Browse path with PeaZip', 'MultiSelectModel', 'player');
2351       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Browse path with PeaZip', '', '&Browse path with PeaZip');
2352       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Browse path with PeaZip\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2browsepath" "%1"'));
2353       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Browse path with PeaZip', 'MultiSelectModel', 'player');
2354       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Browse path with PeaZip', '', '&Browse path with PeaZip');
2355       end;
2356
2357    if cbcontextcrc.state = cbChecked then
2358       begin
2359       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\CRC, hash and file tools\command', '', ExpandConstant('"{app}\res\PEA.EXE" "PEAUTILS" "12" "%1"'));
2360       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\CRC, hash and file tools', 'MultiSelectModel', 'single');
2361       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\CRC, hash and file tools\command', '', ExpandConstant('"{app}\res\PEA.EXE" "PEAUTILS" "12" "%1"'));
2362       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\CRC, hash and file tools', 'MultiSelectModel', 'single');
2363       end;
2364
2365    if cbcontextsplit.state = cbChecked then
2366       begin
2367       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Split file\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisplit" "%1"'));
2368       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Split file', 'MultiSelectModel', 'player');
2369       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Split file\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multisplit" "%1"'));
2370       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Split file', 'MultiSelectModel', 'player');
2371       end;
2372    if cbcontextconvert.state = cbChecked then
2373       begin
2374       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Convert\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiconvert" "%1"'));
2375       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Convert', 'MultiSelectModel', 'player');
2376       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Convert\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2multiconvert" "%1"'));
2377       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Convert', 'MultiSelectModel', 'player');
2378       end;
2379    if cbcontextwipe.state = cbChecked then
2380       begin
2381       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Secure delete\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2wipe" "%1"'));
2382       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Secure delete', 'MultiSelectModel', 'player');
2383       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Secure delete\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-add2wipe" "%1"'));
2384       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Secure delete', 'MultiSelectModel', 'player');
2385       end;
2386
2387    if cbcontextext2here.state = cbChecked then
2388       begin
2389       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract...\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multi" "%1"'));
2390       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract...', 'MultiSelectModel', 'player');
2391       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract...', '', '&Extract...');
2392       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Extract...\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multi" "%1"'));
2393       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Extract...', 'MultiSelectModel', 'player');
2394       RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\Directory\shell\Extract...', '', '&Extract...');
2395       end;
2396
2397    if cbcontextext2here.state = cbChecked then
2398       begin
2399          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multihere" "%1"'));
2400          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here', 'MultiSelectModel', 'player');
2401          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here', '', 'Extract &here');
2402       end;
2403    if cbcontextext2smart.state = cbChecked then
2404       begin
2405          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (smart new folder)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multismart" "%1"'));
2406          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (smart new folder)', 'MultiSelectModel', 'player');
2407          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (smart new folder)', '', 'Extract here (&smart new folder)');
2408       end;
2409    if cbcontextext2folder.state = cbChecked then
2410       begin
2411          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (in new folder)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2multifolder" "%1"'));
2412          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (in new folder)', 'MultiSelectModel', 'player');
2413          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Extract here (in new folder)', '', 'Extract here (in &new folder)');
2414       end;
2415    if cbcontexttest.state = cbChecked then
2416       begin
2417          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Test archive(s)\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "-ext2test" "%1"'));
2418          RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\*\shell\Test archive(s)', 'MultiSelectModel', 'player');
2419       end;
2420end;
2421
2422procedure dolinks;
2423begin
2424    //link to PeaZip -add2archive: add to generic archive
2425    if cbfunadd.state = cbChecked then
2426      begin
2427  CreateShellLink(
2428  ExpandConstant('{sendto}\Add to archive.lnk'),
2429  'PeaZip archiver, add to archive',
2430  ExpandConstant('{app}\peazip.exe'),
2431  '-add2archive',
2432  '',
2433  ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2434  2,//icon index
2435  SW_SHOWNORMAL);
2436      end;
2437
2438    //link to PeaZip -add2convert: convert existing archives
2439    if cbfunconvert.state = cbChecked then
2440      begin
2441  CreateShellLink(
2442  ExpandConstant('{sendto}\Convert.lnk'),
2443  'PeaZip archiver, convert existing archive',
2444  ExpandConstant('{app}\peazip.exe'),
2445  '-add2convert',
2446  '',
2447  ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2448  7,//icon index
2449  SW_SHOWNORMAL);
2450      end;
2451
2452    //link to PeaZip -ext2here: extract here
2453    if cbfunext2here.state = cbChecked then
2454      begin
2455      CreateShellLink(
2456      ExpandConstant('{sendto}\Extract here.lnk'),
2457      'PeaZip archiver, extract here',
2458      ExpandConstant('{app}\peazip.exe'),
2459      '-ext2here',
2460      '',
2461      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2462      4,//icon index
2463      SW_SHOWNORMAL);
2464      end;
2465
2466    //link to PeaZip -ext2folder: extract here to new folder
2467    if cbfunext2folder.state = cbChecked then
2468      begin
2469      CreateShellLink(
2470      ExpandConstant('{sendto}\Extract here (in new folder).lnk'),
2471      'PeaZip archiver, extract here to new folder',
2472      ExpandConstant('{app}\peazip.exe'),
2473      '-ext2folder',
2474      '',
2475      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2476      4,//icon index
2477      SW_SHOWNORMAL);
2478      end;
2479
2480    //link to PeaZip -ext2main: extract with options
2481    if cbfunext2to.state = cbChecked then
2482      begin
2483      CreateShellLink(
2484      ExpandConstant('{sendto}\Extract....lnk'),
2485      'PeaZip archiver, extract into specified path',
2486      ExpandConstant('{app}\peazip.exe'),
2487      '-ext2main',
2488      '',
2489      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2490      4,//icon index
2491      SW_SHOWNORMAL);
2492      end;
2493
2494    //link to PeaZip -add27z: add to .7z archive
2495    if cbfun7z.state = cbChecked then
2496      begin
2497      CreateShellLink(
2498      ExpandConstant('{sendto}\Add to .7Z.lnk'),
2499      'PeaZip archiver, add to .7Z archive',
2500      ExpandConstant('{app}\peazip.exe'),
2501      '-add27z',
2502      '',
2503      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2504      10,//icon index
2505      SW_SHOWNORMAL);
2506      end;
2507
2508    //link to PeaZip -add27zmail: add to .7z archive and send by mail
2509    if cbfun7zmail.state = cbChecked then
2510      begin
2511      CreateShellLink(
2512      ExpandConstant('{sendto}\Add to .7Z and send by mail.lnk'),
2513      'PeaZip archiver, add to .7Z archive and send it by mail',
2514      ExpandConstant('{app}\peazip.exe'),
2515      '-add27zmail',
2516      '',
2517      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2518      3,//icon index
2519      SW_SHOWNORMAL);
2520      end;
2521
2522    //link to PeaZip -add2separate7z: add to separate .7z archives
2523    if cbfun7zs.state = cbChecked then
2524      begin
2525      CreateShellLink(
2526      ExpandConstant('{sendto}\Add to separate .7Z.lnk'),
2527      'PeaZip archiver, add to separate .7Z archives',
2528      ExpandConstant('{app}\peazip.exe'),
2529      '-add2separate7z',
2530      '',
2531      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2532      10,//icon index
2533      SW_SHOWNORMAL);
2534      end;
2535
2536    //link to PeaZip -add2zip: add to .zip archive
2537    if cbfunzip.state = cbChecked then
2538      begin
2539      CreateShellLink(
2540      ExpandConstant('{sendto}\Add to .ZIP.lnk'),
2541      'PeaZip archiver, add to .ZIP archive',
2542      ExpandConstant('{app}\peazip.exe'),
2543      '-add2zip',
2544      '',
2545      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2546      13,//icon index
2547      SW_SHOWNORMAL);
2548      end;
2549
2550    //link to PeaZip -add2zipmail: add to .zip archive and send by mail
2551    if cbfunzipmail.state = cbChecked then
2552      begin
2553      CreateShellLink(
2554      ExpandConstant('{sendto}\Add to .ZIP and send by mail.lnk'),
2555      'PeaZip archiver, add to .ZIP archive and send it by mail',
2556      ExpandConstant('{app}\peazip.exe'),
2557      '-add2zipmail',
2558      '',
2559      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2560      3,//icon index
2561      SW_SHOWNORMAL);
2562      end;
2563
2564    //link to PeaZip -add2separatezip: add to separate .zip archives
2565    if cbfunzips.state = cbChecked then
2566      begin
2567      CreateShellLink(
2568      ExpandConstant('{sendto}\Add to separate .ZIP.lnk'),
2569      'PeaZip archiver, add to separate .ZIP archives',
2570      ExpandConstant('{app}\peazip.exe'),
2571      '-add2separatezip',
2572      '',
2573      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2574      13,//icon index
2575      SW_SHOWNORMAL);
2576      end;
2577
2578    //link to PeaZip -add2sfx7z: add to sfx 7z archive
2579    if cbfunsfx.state = cbChecked then
2580      begin
2581      CreateShellLink(
2582      ExpandConstant('{sendto}\Add to self-extracting archive.lnk'),
2583      'PeaZip archiver, add to self extracting .7z archive',
2584      ExpandConstant('{app}\peazip.exe'),
2585      '-add2sfx7z',
2586      '',
2587      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2588      11,//icon index
2589      SW_SHOWNORMAL);
2590      end;
2591
2592    //link to PeaZip -add2sfx7zmail: add to sfx 7z archive and send by mail
2593    if cbfunsfxmail.state = cbChecked then
2594      begin
2595      CreateShellLink(
2596      ExpandConstant('{sendto}\Add to sfx and send by mail.lnk'),
2597      'PeaZip archiver, add to self extracting .7z archive and send it by mail',
2598      ExpandConstant('{app}\peazip.exe'),
2599      '-add2sfx7zmail',
2600      '',
2601      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2602      3,//icon index
2603      SW_SHOWNORMAL);
2604      end;
2605
2606    //link to PeaZip -add2crypt: add to encrypted .pea archive
2607    if cbfunencrypt.state = cbChecked then
2608      begin
2609      CreateShellLink(
2610      ExpandConstant('{sendto}\Encrypt (PEA).lnk'),
2611      'PeaZip archiver, add to encrypted .pea archive',
2612      ExpandConstant('{app}\peazip.exe'),
2613      '-add2crypt',
2614      '',
2615      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2616      0,//icon index
2617      SW_SHOWNORMAL);
2618      end;
2619
2620    //link to PeaZip -add2split: raw file split
2621    if cbfunsplit.state = cbChecked then
2622      begin
2623      CreateShellLink(
2624      ExpandConstant('{sendto}\Split file.lnk'),
2625      'PeaZip archiver, raw split single file',
2626      ExpandConstant('{app}\peazip.exe'),
2627      '-add2split',
2628      '',
2629      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2630      5,//icon index
2631      SW_SHOWNORMAL);
2632      end;
2633
2634    //link to PeaZip -add2wipe: Secure delete
2635    if cbfunwipe.state = cbChecked then
2636      begin
2637      CreateShellLink(
2638      ExpandConstant('{sendto}\Secure delete.lnk'),
2639      'PeaZip archiver, secure delete',
2640      ExpandConstant('{app}\peazip.exe'),
2641      '-add2wipe',
2642      '',
2643      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2644      6,//icon index
2645      SW_SHOWNORMAL);
2646      end;
2647
2648    //link to PeaZip -ext2test: test archive's content
2649    if cbfuntest.state = cbChecked then
2650      begin
2651      CreateShellLink(
2652      ExpandConstant('{sendto}\Test archive(s).lnk'),
2653      'PeaZip archiver, test archive(s)',
2654      ExpandConstant('{app}\peazip.exe'),
2655      '-ext2test',
2656      '',
2657      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2658      1,//icon index
2659      SW_SHOWNORMAL);
2660      end;
2661
2662    //link to PeaZip -ext2openasarchive
2663    if cbfunopen.state = cbChecked then
2664      begin
2665      CreateShellLink(
2666      ExpandConstant('{sendto}\Open as archive.lnk'),
2667      'PeaZip archiver, open as archive',
2668      ExpandConstant('{app}\peazip.exe'),
2669      '-ext2openasarchive',
2670      '',
2671      '',//ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2672      1,//icon index
2673      SW_SHOWNORMAL);
2674      end;
2675
2676    //link to PeaZip -ext2browsepath: browse path
2677    if CheckBoxbrowsepath.state = cbChecked then
2678      begin
2679      CreateShellLink(
2680      ExpandConstant('{sendto}\Browse path with PeaZip.lnk'),
2681      'PeaZip archiver, browse path',
2682      ExpandConstant('{app}\peazip.exe'),
2683      '-ext2browsepath',
2684      '',
2685      ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2686      8,//icon index
2687      SW_SHOWNORMAL);
2688      end;
2689
2690    //link to PeaZip -ext2commandprompt: open command prompt here
2691    if CheckBoxcommand.state = cbChecked then
2692      begin
2693      CreateShellLink(
2694      ExpandConstant('{sendto}\Open command prompt here.lnk'),
2695      'PeaZip archiver, open command prompt here',
2696      ExpandConstant('{app}\peazip.exe'),
2697      '-ext2commandprompt',
2698      '',
2699      '',//ExpandConstant('{app}\res\icons\peazip_seven.icl'),//icon filename
2700      1,//icon index
2701      SW_SHOWNORMAL);
2702      end;
2703end;
2704
2705procedure doassociations;
2706begin
2707
2708  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.pea', '', 'PeaZip.PEA');
2709  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PEA', '', 'PEA archive');
2710  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PEA\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2711  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PEA\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2712
2713  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.001', '', 'PeaZip.001');
2714  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.001', '', 'Split file');
2715  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.001\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_BLOCK.ICO,0'));
2716  RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.001\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2717
2718  if cbfullnone.state = cbUnchecked then
2719    begin
2720    //declare that filetype associations were created
2721    RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip', '', 'Created filetype associations');
2722    //7z/arc
2723    if cb7z.state = cbChecked then
2724      begin
2725      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\7Z', '', 'Associated PeaZip with file type(s)');
2726      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.7z', '', 'PeaZip.7Z');
2727      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.7Z', '', '7Z archive');
2728      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.7Z\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_7Z.ICO,0'));
2729      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.7Z\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2730      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.xz', '', 'PeaZip.XZ');
2731      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.XZ', '', 'XZ compressed file');
2732      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.XZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2733      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.XZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2734      end;
2735    //arc/wrc
2736    if cbarc.state = cbChecked then
2737      begin
2738      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\ARC', '', 'Associated PeaZip with file type(s)');
2739      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.arc', '', 'PeaZip.ARC');
2740      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARC', '', 'FreeARC archive');
2741      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARC\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2742      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARC\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2743      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.wrc', '', 'PeaZip.WRC');
2744      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.WRC', '', 'FreeARC archive');
2745      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.WRC\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2746      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.WRC\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2747      end;
2748    //Brotli
2749    if cbbr.state = cbChecked then
2750      begin
2751      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\BR', '', 'Associated PeaZip with file type(s)');
2752      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.br', '', 'PeaZip.BR');
2753      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BR', '', 'Brotli compressed file');
2754      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BR\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2755      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BR\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2756      end;
2757    //Zstandard
2758    if cbzst.state = cbChecked then
2759      begin
2760      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\ZST', '', 'Associated PeaZip with file type(s)');
2761      //ZST
2762      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.zst', '', 'PeaZip.ZST');
2763      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZST', '', 'Zstandard compressed file');
2764      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZST\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2765      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZST\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2766      //TZST
2767      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tzst', '', 'PeaZip.TZST');
2768      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZST', '', 'Zstandard compressed TAR archive');
2769      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZST\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2770      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZST\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2771      end;
2772    //*PAQ group
2773    if cbpaq8.state = cbChecked then
2774      begin
2775      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\PAQ', '', 'Associated PeaZip with file type(s)');
2776      //LPAQ1
2777      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.lpaq1', '', 'PeaZip.LPAQ1');
2778      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ1', '', 'LPAQ1 compressed file');
2779      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ1\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2780      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ1\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2781      //LPAQ5
2782      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.lpaq5', '', 'PeaZip.LPAQ5');
2783      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ5', '', 'LPAQ5 compressed file');
2784      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ5\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2785      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ5\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2786      //LPAQ8
2787      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.lpaq8', '', 'PeaZip.LPAQ8');
2788      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ8', '', 'LPAQ8 compressed file');
2789      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ8\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2790      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LPAQ8\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2791      //PAQ8F
2792      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.paq8f', '', 'PeaZip.PAQ8F');
2793      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8F', '', 'PAQ8F archive');
2794      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8F\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2795      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8F\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2796      //PAQ8JD
2797      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.paq8jd', '', 'PeaZip.PAQ8JD');
2798      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8JD', '', 'PAQ8JD archive');
2799      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8JD\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2800      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8JD\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2801      //PAQ8L
2802      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.paq8l', '', 'PeaZip.PAQ8L');
2803      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8L', '', 'PAQ8L archive');
2804      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8L\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2805      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8L\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2806      //PAQ8O
2807      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.paq8o', '', 'PeaZip.PAQ8O');
2808      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8O', '', 'PAQ8O archive');
2809      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8O\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2810      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PAQ8O\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2811      //ZPAQ
2812      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.zpaq', '', 'PeaZip.ZPAQ');
2813      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZPAQ', '', 'ZPAQ archive');
2814      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZPAQ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2815      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZPAQ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2816      end;
2817    if cbquad.state = cbChecked then
2818      begin
2819      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\QUAD', '', 'Associated PeaZip with file type(s)');
2820      //QUAD
2821      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.quad', '', 'PeaZip.QUAD');
2822      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.QUAD', '', 'QUAD compressed file');
2823      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.QUAD\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2824      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.QUAD\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2825      //BALZ
2826      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.balz', '', 'PeaZip.BALZ');
2827      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BALZ', '', 'BALZ compressed file');
2828      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BALZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2829      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BALZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2830      //BCM
2831      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.bcm', '', 'PeaZip.BCM');
2832      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BCM', '', 'BCM compressed file');
2833      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BCM\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2834      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BCM\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2835      end;
2836    //Tar
2837    if cbtar.state = cbChecked then
2838      begin
2839      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\TAR', '', 'Associated PeaZip with file type(s)');
2840      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tar', '', 'PeaZip.TAR');
2841      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAR', '', 'TAR archive');
2842      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAR\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2843      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAR\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2844      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\GZ', '', 'Associated PeaZip with file type(s)');
2845      //GZ
2846      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.gz', '', 'PeaZip.GZ');
2847      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.GZ', '', 'GZip compressed file');
2848      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.GZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2849      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.GZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2850      //TGZ
2851      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tgz', '', 'PeaZip.TGZ');
2852      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TGZ', '', 'GZip compressed TAR archive');
2853      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TGZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2854      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TGZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2855      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\BZ2', '', 'Associated PeaZip with file type(s)');
2856      //BZ
2857      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.bz', '', 'PeaZip.BZ');
2858      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ', '', 'BZip2 compressed file');
2859      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2860      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2861      //BZ2
2862      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.bz2', '', 'PeaZip.BZ2');
2863      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ2', '', 'BZip2 compressed file');
2864      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ2\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2865      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.BZ2\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2866      //TBZ
2867      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tbz', '', 'PeaZip.TBZ');
2868      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ', '', 'BZip2 compressed TAR archive');
2869      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2870      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2871      //TBZ2
2872      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tbz2', '', 'PeaZip.TBZ2');
2873      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ2', '', 'BZip2 compressed TAR archive');
2874      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ2\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2875      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TBZ2\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2876      end;
2877    //Zip
2878    if cbzip.state = cbChecked then
2879      begin
2880      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\ZIP', '', 'Associated PeaZip with file type(s)');
2881      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.zip', '', 'PeaZip.ZIP');
2882      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIP', '', 'ZIP archive');
2883      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIP\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_ZIP.ICO,0'));
2884      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIP\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2885      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip\ZIPX', '', 'Associated PeaZip with file type(s)');
2886      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.zipx', '', 'PeaZip.ZIPX');
2887      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIPX', '', 'ZIPX archive');
2888      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIPX\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_ZIP.ICO,0'));
2889      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ZIPX\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2890      end;
2891    end;
2892  if cbreadnone.state = cbUnchecked then
2893    begin //associate types with browse/extract only support
2894    //declare that additional filetype associations were created
2895    RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional', '', 'Created additional filetype associations');
2896    //ACE
2897    if cbace.state = cbChecked then
2898      begin
2899      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\ACE', '', 'Associated PeaZip with file type(s)');
2900      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.ACE', '', 'PeaZip.ACE');
2901      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ACE', '', 'ACE archive');
2902      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ACE\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2903      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ACE\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2904      end;
2905    //ARJ
2906    if cbarj.state = cbChecked then
2907      begin
2908      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\ARJ', '', 'Associated PeaZip with file type(s)');
2909      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.ARJ', '', 'PeaZip.ARJ');
2910      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARJ', '', 'ARJ archive');
2911      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARJ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2912      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ARJ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2913      end;
2914    //CAB
2915    if cbcab.state = cbChecked then
2916      begin
2917      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\CAB', '', 'Associated PeaZip with file type(s)');
2918      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.CAB', '', 'PeaZip.CAB');
2919      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CAB', '', 'CAB archive');
2920      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CAB\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2921      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CAB\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2922      end;
2923    //CPIO
2924    if cbcpio.state = cbChecked then
2925      begin
2926      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\CPIO', '', 'Associated PeaZip with file type(s)');
2927      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.CPIO', '', 'PeaZip.CPIO');
2928      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CPIO', '', 'CPIO archive');
2929      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CPIO\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2930      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.CPIO\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2931      //Z
2932      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.Z', '', 'PeaZip.Z');
2933      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.Z', '', 'Z compressed file');
2934      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.Z\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2935      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.Z\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2936      //TZ
2937      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.tz', '', 'PeaZip.TZ');
2938      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZ', '', 'Z compressed TAR archive');
2939      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2940      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2941      //TZ
2942      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.taz', '', 'PeaZip.TAZ');
2943      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAZ', '', 'Z compressed TAR archive');
2944      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAZ\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2945      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.TAZ\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2946      end;
2947    //Disk images
2948    if cbiso.state = cbChecked then
2949      begin
2950      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\ISO', '', 'Associated PeaZip with file type(s)');
2951      //ISO
2952      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.ISO', '', 'PeaZip.ISO');
2953      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ISO', '', 'ISO disk image');
2954      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ISO\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_CD.ICO,0'));
2955      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.ISO\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2956      //UDF
2957      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.UDF', '', 'PeaZip.UDF');
2958      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.UDF', '', 'UDF disk image');
2959      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.UDF\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_CD.ICO,0'));
2960      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.UDF\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2961      end;
2962    //LHA
2963    if cblha.state = cbChecked then
2964      begin
2965      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\LHA', '', 'Associated PeaZip with file type(s)');
2966      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.LHA', '', 'PeaZip.LHA');
2967      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LHA', '', 'LHA archive');
2968      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LHA\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
2969      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LHA\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2970      end;
2971    //Linux packages (DEB, RPM, PET/PUP)
2972    if cblinux.state = cbChecked then
2973      begin
2974      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\linux', '', 'Associated PeaZip with file type(s)');
2975      //DEB
2976      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.DEB', '', 'PeaZip.DEB');
2977      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DEB', '', 'DEB package');
2978      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DEB\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
2979      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DEB\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2980      //PET
2981      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.PET', '', 'PeaZip.PET');
2982      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PET', '', 'PET package (Puppy Linux)');
2983      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PET\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
2984      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PET\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2985      //PUP
2986      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.PUP', '', 'PeaZip.PUP');
2987      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PUP', '', 'PUP package (Puppy Linux)');
2988      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PUP\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
2989      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.PUP\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2990      //RPM
2991      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.RPM', '', 'PeaZip.RPM');
2992      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RPM', '', 'RPM package');
2993      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RPM\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
2994      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RPM\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
2995      //SLP
2996      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.SLP', '', 'PeaZip.SLP');
2997      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.SLP', '', 'SLP package');
2998      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.SLP\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
2999      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.SLP\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
3000      end;
3001    //LZH
3002    if cblzh.state = cbChecked then
3003      begin
3004      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\LZH', '', 'Associated PeaZip with file type(s)');
3005      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.LZH', '', 'PeaZip.LZH');
3006      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LZH', '', 'LZH archive');
3007      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LZH\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP.ICO,0'));
3008      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.LZH\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
3009      end;
3010    //Mac formats (DMG, HFS)
3011    if cbMac.state = cbChecked then
3012      begin
3013      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\mac', '', 'Associated PeaZip with file type(s)');
3014      //DMG
3015      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.DMG', '', 'PeaZip.DMG');
3016      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DMG', '', 'DMG package');
3017      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DMG\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
3018      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.DMG\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
3019      //UDF
3020      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.HFS', '', 'PeaZip.HFS');
3021      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.HFS', '', 'UDF package');
3022      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.HFS\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_PACKAGE.ICO,0'));
3023      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.HFS\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
3024      end;
3025    //RAR
3026    if cbrar.state = cbChecked then
3027      begin
3028      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\SOFTWARE\PeaZip_additional\RAR', '', 'Associated PeaZip with file type(s)');
3029      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\.RAR', '', 'PeaZip.RAR');
3030      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RAR', '', 'RAR archive');
3031      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RAR\DefaultIcon', '', ExpandConstant('{app}\RES\ICONS\PEAZIP_RAR.ICO,0'));
3032      RegWriteStringValue(sLMCU, 'SOFTWARE\Classes\PeaZip.RAR\shell\open\command', '', ExpandConstant('"{app}\PEAZIP.EXE" "%1"'));
3033      end;
3034    end;
3035end;
3036
3037function NextButtonClick(CurPageID: Integer): Boolean;
3038var
3039  ResultCode: Integer;
3040  ErrorCode: Integer;
3041begin
3042
3043if CurPageID = wpReady then
3044  begin
3045
3046  if cbinstallcu.Checked = False then sLMCU:=HKLM
3047  else sLMCU:=HKCU;
3048
3049  if (radiobuttoninstall4.Checked = False) then //only for installers
3050    begin
3051    clearcontextlegacy;
3052    clearcontextseven;
3053    clearlinks;
3054    clearassociations;
3055    BringToFrontAndRestore();
3056
3057  if (radiobuttoninstall3.Checked = False) then
3058    begin
3059    //context menu
3060    if cbcontextnone.state = cbUnchecked then
3061       if (GetWindowsVersion >= $06010000) then
3062          if cbcascaded.state = cbChecked then contextseven
3063          else contextlegacy
3064       else contextlegacy;
3065    //sendto menu
3066    if cbfunnone.state = cbUnchecked then dolinks;
3067    //associations
3068    doassociations;
3069  end;
3070
3071  end;
3072
3073  try
3074  if cbreset.checked=true then
3075     if (GetWindowsVersion >= $06000000) then ShellExecAsOriginalUser('', ExpandConstant('{app}\peazip.exe'), '-peaziptotalreset', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
3076  except end;
3077
3078  BringToFrontAndRestore();
3079  end;
3080Result := True;
3081end;
3082
3083procedure dolanguage;
3084var
3085  ErrorCode: Integer;
3086  slang:string;
3087begin
3088case combobox1.itemindex of
3089 0: slang:='ar.txt';
3090 1: slang:='bg.txt';
3091 2: slang:='by-cr.txt';
3092 3: slang:='by-lt.txt';
3093 4: slang:='chs.txt';
3094 5: slang:='cht.txt';
3095 6: slang:='cz.txt';
3096 7: slang:='de-uml.txt';
3097 8: slang:='de-uml-alt.txt';
3098 9: slang:='*nochange';//do not change
3099 10: slang:='en.txt';
3100 11: slang:='en-gb.txt';
3101 12: slang:='es-es.txt';
3102 13: slang:='es-la.txt';
3103 14: slang:='eu.txt';
3104 15: slang:='fi.txt';
3105 16: slang:='fr.txt';
3106 17: slang:='gl.txt';
3107 18: slang:='gr.txt';
3108 19: slang:='hu.txt';
3109 20: slang:='id.txt';
3110 21: slang:='it.txt';
3111 22: slang:='ja.txt';
3112 23: slang:='ko.txt';
3113 24: slang:='nl.txt';
3114 25: slang:='no.txt';
3115 26: slang:='pl.txt';
3116 27: slang:='pt-br.txt';
3117 28: slang:='pt-pt.txt';
3118 29: slang:='ro.txt';
3119 30: slang:='ru.txt';
3120 31: slang:='si.txt';
3121 32: slang:='sk.txt';
3122 33: slang:='sl.txt';
3123 34: slang:='sv.txt';
3124 35: slang:='tj.txt';
3125 36: slang:='tr.txt';
3126 37: slang:='uk.txt';
3127 38: slang:='uz.txt';
3128 39: slang:='vn.txt';
3129 else slang:='';
3130end;
3131if slang<>'' then
3132   if (GetWindowsVersion >= $06000000) then ShellExec('', ExpandConstant('{app}\peazip.exe'), '-peaziplanguage '+slang, '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
3133end;
3134
3135procedure CurStepChanged(CurStep: TSetupStep);
3136begin
3137if CurStep=ssPostInstall then
3138   begin
3139   dolanguage;
3140   end;
3141end;
3142
3143procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
3144begin
3145if CurUninstallStep = usDone then
3146  begin
3147  clearlinks; //delete links
3148  clearcontextlegacy;
3149  clearcontextseven; //delete context menu items
3150  clearassociations; //don't delete classes root values, as recommended by guidelines for managing file associations
3151  BringToFrontAndRestore();
3152  end;
3153end;