Скрипты Inno Setup. Помощь и советы [часть 7]

Ответить
 • Просмотры: 29
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение R.i.m.s.k.y. »

Dodakaedr, , поставь SW_SHOW и покажи значение SysErrorMessage(RCode)
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Dodakaedr »

Цитата saurn:



#1308

Если поискать, еще с десяток постов с примерами найдется.
Скрипты Inno Setup. Помощь и советы [часть 7]




Не работает
Аватара пользователя
El Sanchez

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение El Sanchez »

vint56, спасибо!

Можно ли убрать фон из под StatusLabel и FilenameLabel?
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Dodakaedr »

Цитата roman_kudin@vk:



Не работает
Скрипты Inno Setup. Помощь и советы [часть 7]




Пример рабочий(для большей уверенности проверил еще раз), а вот где вы его применили, а точнее как - это уже другой вопрос.


Цитата Kashtan007:



Можно ли убрать фон из под StatusLabel и FilenameLabel?
Скрипты Inno Setup. Помощь и советы [часть 7]




На юникодовой можно просто:



Код:

Код: Выделить всё

procedure InitializeWizard();
begin
    WizardForm.StatusLabel.Transparent := True;
end;

На ANSI придется создавать свой TLabel, так как TNewStaticText там не поддерживает прозрачность.
Аватара пользователя
nik1967

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение nik1967 »

Kashtan007, saurn уже ответил можно еще создать свой лейбл


читать дальше »




StatusLabel:= TLabel.Create(WizardForm);

with StatusLabel do

begin

Left:=ScaleX(95);

Top:= ScaleY(215);

Width:= ScaleX(600);

Height:= ScaleY(50);

AutoSize:= False;

Font.Name:= 'Georgia';

Font.Size:= 10;

Font.Style:= [fsBold, fsItalic];

Font.Color:= ClWhite;

Transparent := True;

Parent:= WizardForm.InstallingPage;

Caption:= ExpandConstant('{cm:Status}')

end;



FilenameLabel:= TLabel.Create(WizardForm);

with FilenameLabel do

begin

Left:= ScaleX(65);

Top:= ScaleY(275);

Width:= ScaleX(625);

Height:= ScaleY(20);

AutoSize:= False;

Font.Name:= 'Georgia'

Font.Size:= 10;

Font.Style:= [fsBold, fsItalic];

Font.Color:= ClWhite;

Transparent := True;

Parent:= WizardForm.InstallingPage;

end;
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Dodakaedr »

vint56, saurn, да у меня как раз юникод, все работает, но черный текст не видно, я ставлю белый, но он всеравно черный.

Делаю вот так:



Код:

Код: Выделить всё

WizardForm.StatusLabel.Font.Color:= clwhite;
WizardForm.FilenameLabel.Font.Color:= clwhite;

Мне кажется, что это из-за того, что я использую скин в установщике. Так ли это? Возможно ли решить проблему без редактирования самого скина?
Аватара пользователя
audiofeel

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение audiofeel »

Цитата Kashtan007:



Мне кажется, что это из-за того, что я использую скин в установщике.
Скрипты Inno Setup. Помощь и советы [часть 7]




Нет. При использовании свойства Transparent слетает свойство Color. В данном случае лучше использовать TLabel.
Аватара пользователя
nik1967

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение nik1967 »

saurn, спасибо за совет, попробую.
Аватара пользователя
ROMKA-1977

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение ROMKA-1977 »

Помогите пожалуйста!



Есть два кода:

1- скрипт для отображения списка дискового пространства.

2- скрипт отображающий текст из файла rtf в новом окне.



Необходимо объеденить два скрипта так чтобы в новом окне отображалась информация о дисковом пространстве.



Примеры скриптов:


читать дальше »




[Setup]

AppName=My Application

AppVersion=1.5

DefaultDirName={pf}\My Application



[Files]

Source: "ReadMeRu.rtf"; DestDir: "{tmp}"; Flags: ignoreversion


Код: Выделить всё


var

InfoForm: TSetupForm;

Info, Ok: TButton;

InfoBefore: TRichEditViewer;

ReadmeRu,ReadmeEn: AnsiString;



procedure Okclick(Sender: TObject);

begin

  InfoForm.Close;

  WizardForm.Enabled:=True;

end;



procedure FormClose(Sender: TObject; var Action: TCloseAction);

begin

  WizardForm.Enabled:=true;

end;



procedure InfoClick(Sender: TObject);

begin

InfoForm:= CreateCustomForm();

with InfoForm do begin

  ClientWidth := ScaleX(450);

  ClientHeight := ScaleY(230);

  CenterInsideControl(WizardForm, False);

  Caption:='Readme';

  onClose:=@FormClose;

Ok:=tbutton.create(InfoForm)

with Ok do begin

  SetBounds(ScaleX(365),ScaleY(200),ScaleX(75),ScaleY(23));

  parent:=InfoForm;

  Caption:='OK';

  onclick:=@OKclick;

  end;

InfoBefore:= TRichEditViewer.Create(InfoForm);

with InfoBefore do begin

  SetBounds(ScaleX(10),ScaleY(10),ScaleX(430),ScaleY(185));

  Parent:= InfoForm;

  //    ParentColor := True;

  //    Color:= WizardForm.Color;

  //    BorderStyle:= bsNone;

  ScrollBars:= ssVertical;

  ReadOnly:= true;

  RTFText:= ReadmeRu

end;

  InfoForm.Show;

  WizardForm.Enabled:=false;

end;

end;



procedure InitializeWizard;

begin

  ExtractTemporaryFile('ReadMeRu.rtf');

  LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);

  Info:=tbutton.create(WizardForm);

  with Info do begin

  Parent:=WizardForm;

  SetBounds(ScaleX(10),ScaleY(327),ScaleX(75),ScaleY(23));

  Caption:='Readme';

  OnClick:=@InfoClick;

end;

end;





[url=#]читать дальше »[/url]



[Setup]

OutputDir=Setup

AppName=DisksInfo

VersionInfoVersion=5.0

AppVerName=DisksInfo

DefaultDirName={pf}\My program

EnableDirDoesntExistWarning=true





[CustomMessages]

Ru.SysDirSelect=Выбранный путь включает в себя системную папку!%nВы уверены, что необходимо продолжать установку?



[Languages]

Name: Ru; MessagesFile: compiler:Languages\Russian.isl



[code]

var n: Integer; 

FreeMB, TotalMB: Cardinal; 

VolumeName, FileSystemName: String; 

VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint; 

ListBox: TListBox; 



const oneMB= 1024*1024;

function GetLogicalDrives: DWord; external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall';

function GetVolumeInformation(PathName,VolumeName: PChar; VolumeNameSize,VolumeSerialNumber,MaxComponentLength,FileSystemFlags: Longint; FileSystemName: PChar; FileSystemNameSize: Longint): Longint; external 'GetVolumeInformationA@kernel32.dll stdcall';

function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; external 'MessageBoxA@user32.dll stdcall';



Function ByteOrTB(Bytes: Extended; noMB: Boolean): String; { Перевод числа в значение бт/Кб/Мб/Гб/Тб (до 3х знаков после запятой)}

Begin

	if not noMB then Result:= FloatToStr(Int(Bytes)) +' Мб' else

		if Bytes < 1024 then Result:= FloatToStr(Int(Bytes)) +' Бт' else

			if Bytes/1024 < 1024 then Result:= FloatToStr(round((Bytes/1024)*10)/10) +' Кб' else

				If Bytes/oneMB < 1024 then Result:= FloatToStr(round(Bytes/oneMB*100)/100) +' Мб' else

					If Bytes/oneMB/1000 < 1024 then Result:= FloatToStr(round(Bytes/oneMB/1024*1000)/1000) +' Гб' else

						Result:= FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) +' Тб'

	StringChange(Result, ',', '.')

End;



Function DelSP(String: String): String; { Удаление начальных, конечных и повторных пробелов }

	Begin	while (Pos('  ', String) > 0) do Delete(String, Pos('  ', String), 1); Result:= Trim(String); End;



Function CutString(String: String; MaxLength: Longint): String; { Обрезать строку до заданного кол-ва символов}

	Begin

		if Length(String) > MaxLength then Result:= Copy(String, 1, 6) +'...'+ Copy(String, Length(String) - MaxLength +9, MaxLength)

		else Result:= String;

	End;



Procedure GetDiskInfo(Disk: String);

	Begin

		FileSystemName:= StringOfChar(' ', 32); VolumeName:= StringOfChar(' ', 256);

			GetVolumeInformation(Disk, VolumeName, 255, VolumeSerialNo, MaxComponentLength, FileSystemFlags, FileSystemName, 31);

		FileSystemName:= DelSp(FileSystemName); VolumeName:= DelSp(VolumeName); if VolumeName='' then VolumeName:='без метки';

	End;



Procedure ListBoxRefresh;	var FreeB, TotalB: Cardinal; Path, String: string; Begin

	ListBox.Items.Clear

for n:= 1 to 31 do	// диск 'А' пропустить

	if (GetLogicalDrives and (1 shl n)) > 0 then

		if (GetDriveType(Chr(ord('A') + n) +':\') = 2) or (GetDriveType(Chr(ord('A') + n) +':\') = 3) then

			if GetSpaceOnDisk(Chr(ord('A') + n) +':\', True, FreeMB, TotalMB) then ListBox.Items.Add(Chr(ord('A') + n) +':');

for n:= 0 to ListBox.Items.Count -1 do begin

	Path:= Copy(ListBox.Items[n],1,2) +'\'		{ если в накопителе нет диска, пропустить обновление }

	if GetSpaceOnDisk(Path, False, FreeB, TotalB) and GetSpaceOnDisk(Path, True, FreeMB, TotalMB) then begin GetDiskInfo(Path);

		if FreeB >= $7FFFFFFF then String:= PadL(ByteOrTB(FreeMB*oneMB, true),10) else String:= PadL(ByteOrTB(FreeB, true),10);

		if TotalB >= $7FFFFFFF then begin TotalB:= TotalMB; FreeB:= FreeMB; String:= PadL(ByteOrTB(TotalMB*oneMB, true),11) +' всего| '+ String end else String:= PadL(ByteOrTB(TotalB, true),11) +' всего| '+ String;

	ListBox.Items[n]:= Copy(Path,1,2) + String + PadL(FloatToStr(round(FreeB/TotalB*100)),3)+ '% своб|'+ PadL(FileSystemName,5)+ '| '+ CutString(VolumeName,9); end; end;

End;



Procedure ObjectOnClick(Sender: TObject); Begin

Case TObject(Sender) of

	ListBox:	for n:= 0 to ListBox.Items.Count-1 do if ListBox.Selected[n] then WizardForm.DirEdit.Text:= Copy(ListBox.Items[n],1,1) +Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text))

end; End;



Function NextButtonClick(CurPageID: Integer): Boolean; Begin

	Result:= True

	if (CurPageID = wpSelectDir) and (Pos(Uppercase(ExpandConstant('{win}')), Uppercase(ExpandConstant('{app}'))) > 0) then Result:= MessageBox(StrToInt(ExpandConstant('{wizardhwnd}')), ExpandConstant('{cm:SysDirSelect}'), 'Установка в системную папку', MB_YESNO or $30) = idYes;

End;



Procedure CurPageChanged(CurPageID: Integer);

Begin

	if CurPageID = wpSelectDir then ListBoxRefresh

End;



Procedure InitializeWizard;

Begin

	  ListBox:= TListBox.Create(WizardForm)

		ListBox.SetBounds(WizardForm.DirEdit.Left, WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 8, WizardForm.DirBrowseButton.Left + WizardForm.DirBrowseButton.Width - WizardForm.DirEdit.Left, WizardForm.DiskSpaceLabel.Top - (WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 12))

		ListBox.Font.Size:= 9

		ListBox.Font.Style:= [fsBold]

		ListBox.Font.Name:= 'Courier New';

		ListBox.OnClick:= @ObjectOnClick;

		ListBox.Parent:= WizardForm.SelectDirPage;

End;
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Nordek »

Цитата roman_kudin@vk:



как сделать окно инсталлятора шире?
Скрипты Inno Setup. Помощь и советы [часть 7]






Код:

Код: Выделить всё

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    Width:=600;
  end;
Ответить

Вернуться в «Автоматическая установка приложений»