А ктонить может модифицировать код слайдшоу так, чтобы инсталляха сама определяла какой у юзера монитор (простой или широкоэкранный) и в зависимости от этого использовался определенный набор картинок (для простого монитора 640x480 для широкоэкранного 704x368) ?
В том что это возможно, уверен на 100% ибо таким образом было сделано слайдшоу в золотом (полностью русском) издании Oblivion.
[more=Код слайдшоу][Code]
type TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var Form : TSetupForm;
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
S : String;
Width, Height:Integer;
function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';
function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do
begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var Percent: Integer;
begin
Percent:= PercentProgress;
with SlideImage do
begin
if ((percent>0) and (percent<4) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd1.bmp')
Tag:=1
end
else
if ((percent>5) and (percent<8) and (Tag<>2)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd2.bmp')
Tag:=2
end
else
if ((percent>9) and (percent<13) and (Tag<>3)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd3.bmp')
Tag:=3
end
else
if ((percent>14) and (percent<18) and (Tag<>4)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd4.bmp')
Tag:=4
end
else
if ((percent>19) and (percent<23) and (Tag<>5)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd5.bmp')
Tag:=5
end
else
if ((percent>24) and (percent<28) and (Tag<>6)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd6.bmp')
Tag:=6
end
else
if ((percent>32) and (percent<36) and (Tag<>7)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd7.bmp')
Tag:=7
end
else
if ((percent>37) and (percent<41) and (Tag<>8)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd8.bmp')
Tag:=8
end
else
if ((percent>42) and (percent<46) and (Tag<>9)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd9.bmp')
Tag:=9
end
else
if ((percent>47) and (percent<51) and (Tag<>10)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd10.bmp')
Tag:=10
end
else
if ((percent>52) and (percent<56) and (Tag<>11)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd11.bmp')
Tag:=11
end
else
if ((percent>57) and (percent<61) and (Tag<>12)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd12.bmp')
Tag:=12
end
else
if ((percent>62) and (percent<66) and (Tag<>13)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd13.bmp')
Tag:=13
end
else
if ((percent>67) and (percent<71) and (Tag<>14)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd14.bmp')
Tag:=14
end
else
if ((percent>72) and (percent<76) and (Tag<>15)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd15.bmp')
Tag:=15
end
else
if ((percent>77) and (percent<81) and (Tag<>16)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd16.bmp')
Tag:=16
end
else
if ((percent>82) and (percent<86) and (Tag<>17)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd17.bmp')
Tag:=17
end
else
if ((percent>87) and (percent<91) and (Tag<>18)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd18.bmp')
Tag:=18
end
else
if ((percent>92) and (percent<96) and (Tag<>19)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd19.bmp')
Tag:=19
end
else
if ((percent>97) and (percent<100) and (Tag<>20)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd20.bmp')
Tag:=20
end
end
end;
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';
procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('splash.wav'));
sndPlaySound(ExpandConstant('{tmp}\splash.wav'), $0001 or $9999);
WizardForm.Position:= poScreenCenter;
Width:= GetSystemMetrics(0);
Height:= GetSystemMetrics(1);
MainForm.BorderStyle:= bsNone;
MainForm.Left:= 0;
MainForm.Top:= 0;
MainForm.Width:= Width;
MainForm.Height:= Height;
ExtractTemporaryFile('1.bmp');
S:= (ExpandConstant('{tmp}')+'\1.bmp');
BackImage:=TBitmapImage.Create(MainForm);
BackImage.Bitmap.LoadFromFile(S);
BackImage.Align:= alClient;
BackImage.Parent:= MainForm;
BackImage.Stretch:= True;
MainForm.Visible:= True;
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('bbrd1.bmp');
ExtractTemporaryFile('bbrd2.bmp');
ExtractTemporaryFile('bbrd3.bmp');
ExtractTemporaryFile('bbrd4.bmp');
ExtractTemporaryFile('bbrd5.bmp');
ExtractTemporaryFile('bbrd6.bmp');
ExtractTemporaryFile('bbrd7.bmp');
ExtractTemporaryFile('bbrd8.bmp');
ExtractTemporaryFile('bbrd9.bmp');
ExtractTemporaryFile('bbrd10.bmp');
ExtractTemporaryFile('bbrd11.bmp');
ExtractTemporaryFile('bbrd12.bmp');
ExtractTemporaryFile('bbrd13.bmp');
ExtractTemporaryFile('bbrd14.bmp');
ExtractTemporaryFile('bbrd15.bmp');
ExtractTemporaryFile('bbrd16.bmp');
ExtractTemporaryFile('bbrd17.bmp');
ExtractTemporaryFile('bbrd18.bmp');
ExtractTemporaryFile('bbrd19.bmp');
ExtractTemporaryFile('bbrd20.bmp');
end;
procedure CurPageChanged(CurPageID: Integer);
var Pfunc : LongWord;
begin
If CurPageID = wpInstalling then
begin
Form := CreateCustomForm();
Form.Width:= MainForm.Width;
Form.Height:= MainForm.Height;
Form.BorderStyle := bsNone;
Form.Color:=clBlack;
Form.Parent:=MainForm;
Form.Position:=poScreenCenter;
Form.Show();
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
S:= (ExpandConstant('{tmp}') + '\bbrd1.bmp');
SlideImage:= TBitmapImage.Create(Form);
with SlideImage do
begin
Align:= alClient;
Stretch:= True;
Bitmap.LoadFromFile(S);
Parent:= Form;
Tag:= 1;
end
with WizardForm do
begin
MainPanel.Hide;
Bevel1.Hide;
Width:= ScaleX(395);
Height:= ScaleY(142);
Left:= ScaleX(0);
Top:= ScaleY(0);
Left:= ScaleX(MainForm.Left+20);
Top:= ScaleY(MainForm.Height-170);
InnerNotebook.Left:= ScaleX(10);
InnerNotebook.Top:= ScaleY(10);
InnerNotebook.Width:= ScaleX(370);
StatusLabel.Left:= ScaleX(0);
StatusLabel.Top:= ScaleY(0);
StatusLabel.Width:= WizardForm.InnerNotebook.Width;
FileNameLabel.Left:= ScaleX(0);
FileNameLabel.Top:= ScaleY(20);
FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
ProgressGauge.Top:= ScaleY(40);
ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
CancelButton.BringToFront;
CancelButton.Left:= ScaleX(154);
CancelButton.Top:= ScaleY(80);
end
end
begin
if CurPageID = wpFinished then
begin
Form.Free;
KillTimer(0, TimerID);
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end
end
end;
procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
if DirExists(ExpandConstant('{app}')) then
if ExpandConstant('{language}') = 'ua' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не порожня.'#13#13 +
'"Так" – повне видалення всіх файлів у папці, включаючи саму папку.' #13#13 +
'"Ні" – відкрити папку в провіднику, щоб вручну видалити файли.'#13#13 +
'"Скасувати" – нічого не робити, видалити папку пізніше самостійно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не видалена.' #13#13 'Папка або один з файлів у ній задіяні іншою програмою.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Помилка відкриття.' #13#13 'Папка не знайдена.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
else
if ExpandConstant('{language}') = 'ru' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
else
case MsgBox('Directory "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
'"Yes" to delete all of the files in the directory, including the directory itself.' #13#13 +
'"No" to open the directory with explorer to delete the files manually.'#13#13 +
'"Cancel" to do nothing and delete the directory later manually. ', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Directory is not deleted.' #13#13 'Directory or one of the files are used by the other application.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Error opening the directory.' #13#13 'Directory is not found.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
end
end
end;
function NextButtonClick(CurPage: Integer): Boolean;
begin
Result := True;
if CurPage = wpSelectDir then
if DirExists( ExpandConstant('{app}') ) then
begin
MsgBox(ExpandConstant('{cm:InstallationIsNotEnabled}'), mbError, mb_Ok);
Result := False;
end
end;
[/more]
В том что это возможно, уверен на 100% ибо таким образом было сделано слайдшоу в золотом (полностью русском) издании Oblivion.
[more=Код слайдшоу][Code]
type TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var Form : TSetupForm;
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
S : String;
Width, Height:Integer;
function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';
function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do
begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var Percent: Integer;
begin
Percent:= PercentProgress;
with SlideImage do
begin
if ((percent>0) and (percent<4) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd1.bmp')
Tag:=1
end
else
if ((percent>5) and (percent<8) and (Tag<>2)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd2.bmp')
Tag:=2
end
else
if ((percent>9) and (percent<13) and (Tag<>3)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd3.bmp')
Tag:=3
end
else
if ((percent>14) and (percent<18) and (Tag<>4)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd4.bmp')
Tag:=4
end
else
if ((percent>19) and (percent<23) and (Tag<>5)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd5.bmp')
Tag:=5
end
else
if ((percent>24) and (percent<28) and (Tag<>6)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd6.bmp')
Tag:=6
end
else
if ((percent>32) and (percent<36) and (Tag<>7)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd7.bmp')
Tag:=7
end
else
if ((percent>37) and (percent<41) and (Tag<>8)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd8.bmp')
Tag:=8
end
else
if ((percent>42) and (percent<46) and (Tag<>9)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd9.bmp')
Tag:=9
end
else
if ((percent>47) and (percent<51) and (Tag<>10)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd10.bmp')
Tag:=10
end
else
if ((percent>52) and (percent<56) and (Tag<>11)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd11.bmp')
Tag:=11
end
else
if ((percent>57) and (percent<61) and (Tag<>12)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd12.bmp')
Tag:=12
end
else
if ((percent>62) and (percent<66) and (Tag<>13)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd13.bmp')
Tag:=13
end
else
if ((percent>67) and (percent<71) and (Tag<>14)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd14.bmp')
Tag:=14
end
else
if ((percent>72) and (percent<76) and (Tag<>15)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd15.bmp')
Tag:=15
end
else
if ((percent>77) and (percent<81) and (Tag<>16)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd16.bmp')
Tag:=16
end
else
if ((percent>82) and (percent<86) and (Tag<>17)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd17.bmp')
Tag:=17
end
else
if ((percent>87) and (percent<91) and (Tag<>18)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd18.bmp')
Tag:=18
end
else
if ((percent>92) and (percent<96) and (Tag<>19)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd19.bmp')
Tag:=19
end
else
if ((percent>97) and (percent<100) and (Tag<>20)) then
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\bbrd20.bmp')
Tag:=20
end
end
end;
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';
procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('splash.wav'));
sndPlaySound(ExpandConstant('{tmp}\splash.wav'), $0001 or $9999);
WizardForm.Position:= poScreenCenter;
Width:= GetSystemMetrics(0);
Height:= GetSystemMetrics(1);
MainForm.BorderStyle:= bsNone;
MainForm.Left:= 0;
MainForm.Top:= 0;
MainForm.Width:= Width;
MainForm.Height:= Height;
ExtractTemporaryFile('1.bmp');
S:= (ExpandConstant('{tmp}')+'\1.bmp');
BackImage:=TBitmapImage.Create(MainForm);
BackImage.Bitmap.LoadFromFile(S);
BackImage.Align:= alClient;
BackImage.Parent:= MainForm;
BackImage.Stretch:= True;
MainForm.Visible:= True;
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('bbrd1.bmp');
ExtractTemporaryFile('bbrd2.bmp');
ExtractTemporaryFile('bbrd3.bmp');
ExtractTemporaryFile('bbrd4.bmp');
ExtractTemporaryFile('bbrd5.bmp');
ExtractTemporaryFile('bbrd6.bmp');
ExtractTemporaryFile('bbrd7.bmp');
ExtractTemporaryFile('bbrd8.bmp');
ExtractTemporaryFile('bbrd9.bmp');
ExtractTemporaryFile('bbrd10.bmp');
ExtractTemporaryFile('bbrd11.bmp');
ExtractTemporaryFile('bbrd12.bmp');
ExtractTemporaryFile('bbrd13.bmp');
ExtractTemporaryFile('bbrd14.bmp');
ExtractTemporaryFile('bbrd15.bmp');
ExtractTemporaryFile('bbrd16.bmp');
ExtractTemporaryFile('bbrd17.bmp');
ExtractTemporaryFile('bbrd18.bmp');
ExtractTemporaryFile('bbrd19.bmp');
ExtractTemporaryFile('bbrd20.bmp');
end;
procedure CurPageChanged(CurPageID: Integer);
var Pfunc : LongWord;
begin
If CurPageID = wpInstalling then
begin
Form := CreateCustomForm();
Form.Width:= MainForm.Width;
Form.Height:= MainForm.Height;
Form.BorderStyle := bsNone;
Form.Color:=clBlack;
Form.Parent:=MainForm;
Form.Position:=poScreenCenter;
Form.Show();
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
S:= (ExpandConstant('{tmp}') + '\bbrd1.bmp');
SlideImage:= TBitmapImage.Create(Form);
with SlideImage do
begin
Align:= alClient;
Stretch:= True;
Bitmap.LoadFromFile(S);
Parent:= Form;
Tag:= 1;
end
with WizardForm do
begin
MainPanel.Hide;
Bevel1.Hide;
Width:= ScaleX(395);
Height:= ScaleY(142);
Left:= ScaleX(0);
Top:= ScaleY(0);
Left:= ScaleX(MainForm.Left+20);
Top:= ScaleY(MainForm.Height-170);
InnerNotebook.Left:= ScaleX(10);
InnerNotebook.Top:= ScaleY(10);
InnerNotebook.Width:= ScaleX(370);
StatusLabel.Left:= ScaleX(0);
StatusLabel.Top:= ScaleY(0);
StatusLabel.Width:= WizardForm.InnerNotebook.Width;
FileNameLabel.Left:= ScaleX(0);
FileNameLabel.Top:= ScaleY(20);
FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
ProgressGauge.Top:= ScaleY(40);
ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
CancelButton.BringToFront;
CancelButton.Left:= ScaleX(154);
CancelButton.Top:= ScaleY(80);
end
end
begin
if CurPageID = wpFinished then
begin
Form.Free;
KillTimer(0, TimerID);
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end
end
end;
procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
if DirExists(ExpandConstant('{app}')) then
if ExpandConstant('{language}') = 'ua' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не порожня.'#13#13 +
'"Так" – повне видалення всіх файлів у папці, включаючи саму папку.' #13#13 +
'"Ні" – відкрити папку в провіднику, щоб вручну видалити файли.'#13#13 +
'"Скасувати" – нічого не робити, видалити папку пізніше самостійно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не видалена.' #13#13 'Папка або один з файлів у ній задіяні іншою програмою.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Помилка відкриття.' #13#13 'Папка не знайдена.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
else
if ExpandConstant('{language}') = 'ru' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
else
case MsgBox('Directory "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
'"Yes" to delete all of the files in the directory, including the directory itself.' #13#13 +
'"No" to open the directory with explorer to delete the files manually.'#13#13 +
'"Cancel" to do nothing and delete the directory later manually. ', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Directory is not deleted.' #13#13 'Directory or one of the files are used by the other application.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Error opening the directory.' #13#13 'Directory is not found.', mbError, MB_OK);
IDCANCEL: Form.Close;
end
end
end
end;
function NextButtonClick(CurPage: Integer): Boolean;
begin
Result := True;
if CurPage = wpSelectDir then
if DirExists( ExpandConstant('{app}') ) then
begin
MsgBox(ExpandConstant('{cm:InstallationIsNotEnabled}'), mbError, mb_Ok);
Result := False;
end
end;
[/more]