В модуле ботвы же написано, что в таком Layered-окне стандартные объекты не будут отрисовываться. Потому что там используется немного другой принцип отображения формы.почему все элементы окна, даже кнопки ботвы скрываются за изображением CreateFormFromImage? В коде расположено все после CreateFormFromImage.
Я извиняюсь, но ты делал привязку процедуры Progress к файлам в секции Files? Или просто скопировал пример в свой скрипт?Ребят, всем привет, у меня вот этот Скрипт на расширенной версии компилятора ANSI ничего не отображает? Можете помочь? Должны показываться проценты распаковки и размер извлекаемого файла в Байтах, КБ, Мб, Гб, Тб и т.д.
Ну напримерShegorat, Я просто скопировал , скажите, а как привязать?
[noparse][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[Files]
Source: D:\testfiles\*; DestDir: {app}; AfterInstall: Progress; Flags: recursesubdirs createallsubdirs;
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.Bt=Бт
ru.Kb=Кб
ru.Mb=Мб
ru.Gb=Гб
ru.Tb=Тб
ru.Pb=Пб
ru.Eb=Эб
[Code]
var
ProgressLabel, SizeLabel: TLabel;
function BytesToReadable(Bytes: Extended; Signs: Integer): string;
{ Перевод числа в значение Бт/Кб/Мб/Гб/Тб/Пб/Эб (Signs - количество знаков после запятой)}
var
ABytes: Extended;
i: Integer;
begin
i := 0;
ABytes := Bytes;
while Int(ABytes) >= 1024 do
begin
ABytes := ABytes/1024;
i := i + 1;
end;
case i of
0: Result := FloatToStr(Int(ABytes)) + Padl(ExpandConstant('{cm:Bt}'), 1); // Байт
1: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Kb}'), [ABytes]); // Килобайт
2: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Mb}'), [ABytes]); // Мегабайт
3: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Gb}'), [ABytes]); // Гигабайт
4: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Tb}'), [ABytes]); // Терабайт
// больше Терабайта конечно не пригодится, покрайней мере в ближайшее время, но всё же...
5: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Pb}'), [ABytes]); // Петабайт
6: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Eb}'), [ABytes]); // Эксабайт
end;
StringChange(Result, ',', '.');
end;
function Size64(Hi, Lo: Integer): Extended;
begin
Result := Lo;
if Lo < 0 then
Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
for Hi := Hi - 1 downto 0 do
Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
end;
function GetFileSize(const FileName: string): Extended;
var
FindRec: TFindRec;
begin
Result := 0;
if FindFirst(FileName, FindRec) then
try
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
Result := Size64(FindRec.SizeHigh, FindRec.SizeLow);
finally
FindClose(FindRec);
end;
end;
procedure Progress();
begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%';
SizeLabel.Caption := BytesToReadable(GetFileSize(ExpandConstant(CurrentFileName)), 1);
end;
procedure InitializeWizard();
begin
ProgressLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left := Left + Width/2 - ScaleX(8);
ProgressLabel.Width:= 200;
ProgressLabel.Height:= 20;
ProgressLabel.AutoSize := False;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;
SizeLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left := Left;
SizeLabel.Width:= 200;
SizeLabel.Height:= 20;
SizeLabel.AutoSize := False;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
end;[/noparse]
После тестового прогона,из папки с инсталлятором и архивами файл records.inf(который там появится) надо переместить в папку со скриптом и в самом скрипте расскоментировать #define records,и ещё раз скомпилировать инсталлятор.Люди подскажите как убрать надпись "Тестовый прогон" и чтоб показывало сколько осталось, а то не понимаю(
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[B][[/B]Code]
var
TestCheckBox : TCheckBox;
procedure InitializeWizard;
begin
TestCheckBox := TCheckBox.Create(WizardForm);
with TestCheckBox do begin
Parent := WizardForm.WelcomePage;
Caption := 'TestCheckBox';
Checked := not RegKeyExists(HKEY_CURRENT_USER, 'Software\Jordan Russell\Inno Setup');
SetBounds(WizardForm.WizardBitmapImage.Width + ScaleX(10), WizardForm.Bevel.Top - ScaleY(30), Width, Height);
end;
end;
есть еще isxdl.dll, доступна даже в исходниках - где-то видел на сайте инно ссылку.аналогов насколько я знаю, пока не существует
Посмотрел поверхностно, скорость, размер не нашел. Попробую isxdl.dll.в модуле procedure ITD_NowDoDownload(sender: TWizardPage);
заменить TWizardPage на форму ну и так по мелочи
К сожалению, я не дельфи программистдля дельфи программиста это должно было быть очевидным, как мне кажется.
Как-бы я думал, что ты и правда знаешь паскаль. Буду знать, что пройти курс обучения языку и знать его в результате обучения - совсем не одно и тоже.[/MOD]Прошел курс Pascal и C++.
Верно, так и есть. Но все равно спасибо за информацию.Я ни разу не покупал, могу предположить, что после покупки сертификата, он будет прописан в системе, и проверятся на серверах мелких. будет включена в ближайшее обновление, при отсутствии в системе - проверяться онлайн. это по логике, реальные подробности можно спросить у гугла или вики, инфа по любому есть, тем более эта инфа достаточно важная.