PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57

Vanadiy777
18-11-2022, 23:39
Но вот когда их объединяешь лезут ошибки. Не знаю как эту нестыковку поправить.
Как их вот "подружить" друг с другом. »
DA-Bro,

Видимо, объединяете не правильно...

Пробуйте...

[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={pf}\Test
DisableWelcomePage=False
OutputDir=.

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "EN"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy
//Source: "Language\Russian.lng"; DestDir: "{app}\Language"; Languages: RU; Flags: ignoreversion
//Source: "Language\English.lng"; DestDir: "{app}\Language"; Languages: EN; Flags: ignoreversion

[CustomMessages]
EN.text=More detailed
RU.text=Подробнее
EN.text1=Close
RU.text1=Закрыть
EN.text2=About the program
RU.text2=О программе
EN.text3=Website
RU.text3=Сайт
EN.FreeSpace=Free space on disk:
RU.FreeSpace=Доступно места на диске:
EN.NeedSpace=Need space on disk:
RU.NeedSpace=Требуется места на диске:

[_code]
var
Flag: Boolean;
WebButton,AboutButton: TNewButton;
RichEditViewer: TRichEditViewer;
Readme: AnsiString;
r: integer;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
FreeMB, TotalMB: Cardinal;
SizeStr: String;
SizeInt: Integer;
SymbolNumber: Integer;

function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
end;

function GetSize(): Integer;
begin
SizeStr:= WizardForm.DiskSpaceLabel.Caption;
for SymbolNumber:= 97 to 122 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); ///Находим все символы нижнего регистра и удаляем
while (Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr) > 0) do Delete(SizeStr, Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr),1); end; ///Находим все символы верхнего регистра и удаляем
for SymbolNumber:= 192 to 255 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); end; ///Находим все символы нижнего регистра и удаляем
while (Pos('.', SizeStr) > 0) do Delete(SizeStr, Pos('.', SizeStr), 1); ///Удаляем точки
Delete(SizeStr, Pos(',', SizeStr), 5) ///Удаляем дробную часть
Result:= StrToInt(Trim(SizeStr)); ///Переводим в число
end;

function CompareNum(FirstNum, SecondNum: Integer): Boolean;
begin
if FirstNum < SecondNum then Result:= False else Result:= True;
end;

function MbOrTb(Byte: Extended): String;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
if Byte/1024 < 1024 then Result:= NumToStr(Byte/1024) + ' Гб' else
Result:= NumToStr(Byte/(1024*1024)) + ' Тб'
end;

/// { Сколько требуется места на диске.procedure GetFreeSpaceCaption }
procedure GetFreeSpaceCaption(Sender: TObject);
var Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTb(FreeMB)
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt)
if WizardForm.CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Enabled:= CompareNum(FreeMB, SizeInt)
end;
end;

procedure WebButtonOnClick(Sender: TObject);
begin
ShellExec('open', 'http://forum.oszone.net/post-2996351-870.html', '','', SW_SHOW, ewNoWait, r);
end;

procedure SettingHideShowOnClick(Sender: TObject);
begin
Wizardform.NextButton.Enabled := True;
if Flag = False then begin
RichEditViewer.Hide;
Flag:= True;
AboutButton.Caption := CustomMessage('text');
end else begin
RichEditViewer.Show;
Flag:= False;
AboutButton.Caption:= CustomMessage('text1');
Wizardform.NextButton.Enabled:= True;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
// Wizardform.NextButton.Enabled:= False;
RichEditViewer.Hide;
AboutButton.Caption:= CustomMessage('text');
Flag:= True;
end;

wpSelectDir:
begin
GetFreeSpaceCaption(nil)
end;
end;
end;

procedure InitializeWizard();
begin
case ActiveLanguage of
'RU': begin
ExtractTemporaryFile('ReadMeRu.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', Readme);
end;
'EN': begin
ExtractTemporaryFile('ReadMeEn.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', Readme);
end;
end;

WebButton:= TNewButton.Create(WizardForm);
with WebButton do begin
Parent := WizardForm.WelcomePage;
SetBounds(ScaleX(42),ScaleY(250),ScaleX(80),ScaleY(23));
Caption := CustomMessage('text3');
WebButton.OnClick := @WebButtonOnClick;
end;

AboutButton:= TNewButton.Create(WizardForm);
with AboutButton do begin
AboutButton.SetBounds(ScaleX(42),ScaleY(280),ScaleX(80),ScaleY(23));
AboutButton.Caption:= CustomMessage('text');
AboutButton.ShowHint:= True;
AboutButton.Hint:= CustomMessage('text2');
AboutButton.OnClick:= @SettingHideShowOnClick;
AboutButton.Parent:= WizardForm.WelcomePage;
AboutButton.Cursor:= crHand;
Flag:= True;
end;

RichEditViewer:= TRichEditViewer.Create(WizardForm);
with RichEditViewer do begin
Parent:= WizardForm.WelcomePage;
SetBounds(ScaleX(164),ScaleY(0),ScaleX(333),ScaleY(314));
ScrollBars:= ssVertical;
ReadOnly:= True;
RTFText:= Readme;
end;

begin
WizardForm.DiskSpaceLabel.Hide;
#ifdef NeedSize
SizeInt:= {#NeedSize}
#else
SizeInt:= GetSize;
#endif

NeedSpaceLabel := TLabel.Create(WizardForm);
NeedSpaceLabel.SetBounds(ScaleX(0), ScaleY(198), ScaleX(209), ScaleY(13))
NeedSpaceLabel.Parent := WizardForm.SelectDirPage;
NeedSpaceLabel.Transparent:=true;

FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.SetBounds(ScaleX(0), ScaleY(216), ScaleX(209), ScaleY(13))
FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
FreeSpaceLabel.Transparent:=true;

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
end;
end;

DA-Bro
18-11-2022, 23:49
Vanadiy777, дык просто не знаю где подправлять). Уже всю голову сломал. Спасибо! Сейчас посмотрю.

Vanadiy777
19-11-2022, 00:01
дык просто не знаю где подправлять). »
DA-Bro,
ну, дык надо ж не просто копипастом делать, а посмотреть, что и где жить должно... :wink:

DA-Bro
19-11-2022, 00:03
Vanadiy777, Скрипт работает. Спасибо большое! Попробую остальное к нему добавить.

Подскажите пожалуйста, где была нестыковка. Что не так было?
Хоть знать на будущее.

Vanadiy777
19-11-2022, 00:15
Подскажите пожалуйста, где была нестыковка. Что не так было?
Хоть знать на будущее. »
DA-Bro,
Да я бы с удовольствием подсказал... Но я ж не знаю, что Вы там прописали в сценарии...
Давайте полный скрипт - вместе ошибки разберем... :) Может, и остальное вместе прикрутим...

DA-Bro
19-11-2022, 00:26
Vanadiy777, Спасибо!
Я уже вижу некоторые изменения. До меня бы сейчас конечно не дошло. Мало знаний.
Охота самому попробовать всё на место расставить.
Если что, попрошу уж помочь тогда мне тупоголовому).
Спасибо!

Vanadiy777
19-11-2022, 00:37
Охота самому попробовать всё на место расставить. »
DA-Bro,
да, примеры и подсказки - это все замечательно, я сам тоже не профессор в этом, и часто помощи прошу более опытных коллег...
По опыту: пока сам не попробуешь, и шишек не наколотишь - понимание не приходит... :)

DA-Bro
19-11-2022, 00:40
Vanadiy777, Когда интересно, можно и шишек понабивать)

А Вы не подскажите, как эти две строчки в свойствах экзешника закомментировать.
Или, если нельзя, совсем их убрать.

Vanadiy777
19-11-2022, 01:15
А Вы не подскажите, как эти две строчки закомментировать.
Или, если нельзя, совсем их убрать. »
DA-Bro,
нет, не подскажу, к сожалению...
Это надо править в SetupLdr.e32, но, это не всегда заканчивается положительным результатом...
Как вариант - просто не открывать этот файл в Restorator, и не париться на этот счет... :)

DA-Bro
19-11-2022, 01:18
Vanadiy777, ну так то их не видно. А в рестораторе смотришь: чего-то не хватает, не заполнено. Не порядок)))

Добавил я полностью весь скрипт. Всё отлично. Тьфу-тьфу-тьфу...

Спасибо большое! Выручили!

Vanadiy777
19-11-2022, 01:28
А в рестораторе смотришь: чего-то не хватает, не заполнено. Не порядок))) »
DA-Bro,
забейте... У меня, например, когда смотрю в рестораторе, "Оригинальное имя файла" - вообще такого пункта нет...
А "Комментарий" в SetupLdr.e32 поправьте в самом компиляторе...

DA-Bro
19-11-2022, 01:34
Vanadiy777, я вот хотел ещё строчку "О программе" убрать.

Нашел вот такое решение:

begin
WizardForm.Position:=poScreenCenter;
end;

А оно со скриптом, который Вы мне поправили не состыкуется.
Там файл Readme.RTF черно-белый становится, цвет и шрифт пропадают.

Может у Вас есть решение получше, как убрать эту строчку.

Vanadiy777
19-11-2022, 01:52
Может у Вас есть решение получше, как убрать эту строчку. »
DA-Bro,
надо всего одну строчку добавить без всяких begin и end.
Отметил красным, что надо добавить и, главное куда, остальное трогать не надо...

procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter;
case ActiveLanguage of

DA-Bro
19-11-2022, 02:35
Vanadiy777, Нет слов. Спасибо!

Просто и четко. Раз и строчки нету.

Справки, примеры, это всё конечно нужно изучать и пробовать. Но без подсказок грамотных людей также далеко не уедешь.

В школе бы учебники раздавали детям и иди отсюда домой изучай, через 10 лет на ЕГЭ придёшь расскажешь)
Так нет, без разъяснений учителей всё равно не обойтись никак.

Спасибо!

DA-Bro
19-11-2022, 03:09
Vanadiy777, а может подскажите.

Я вот скрипт один нашел: "Проценты в прогрессбаре установки".

var
ProgressLabel: TLabel;

procedure ExtLog();
begin
with WizardForm.ProgressGauge do begin
ProgressLabel.Caption:=IntToStr((Position-Min)/((Max - Min)/100)) + '%'
if (Position-Min)/((Max - Min)/100) > 50 then ProgressLabel.Font.Color:= clWhite
end
end;

procedure InitializeWizard;
begin
ProgressLabel:=TLabel.Create(WizardForm)
ProgressLabel.Top:= 4
ProgressLabel.Left:= 200
ProgressLabel.Caption:= '0%'
ProgressLabel.AutoSize:= True
ProgressLabel.Font.Color:= clBlue
ProgressLabel.Font.Style:= [fsBold]
ProgressLabel.Transparent:= True
ProgressLabel.Parent:= WizardForm.ProgressGauge
end;

А у него просто нолик с процентами моргает и всё.
Не понятно почему проценты не крутятся, а только "0 %" и всё.

Может есть у Вас получше или рабочее решение.

DA-Bro
19-11-2022, 09:46
надо всего одну строчку добавить без всяких begin и end. »

Vanadiy777 когда строчку эту вписал, с файлами RTF всё нормально, где кнопки на первой странице.

А сейчас проверил на другой перепаковке. У меня там страница "Информация" есть и там тоже файл InfoBefore.rtf.
Те файлы цветные нормальные, а этот черно-белый.

Может ещё что куда надо вписать, чтобы он на странице "Информация" тоже нормально в цвете отображался.

Подскажите пожалуйста!

Vanadiy777
19-11-2022, 10:52
А сейчас проверил на другой перепаковке. У меня там страница "Информация" есть и там тоже файл InfoBefore.rtf.
Те файлы цветные нормальные, а этот черно-белый. »
DA-Bro,

Это у Вас все в одном проекте реализовано, или в разных?

Давайте скрипт полностью, который не работает... Так будет быстрее и проще, а то я с Вами запутался совсем... :)

DA-Bro
19-11-2022, 11:27
Vanadiy777, отправил Вам в личку.

Да скрипт в данный момент на всё.

Просто в некоторые перепаковки добавляю InfoBeforeFile. Появляется страница "Информация", и там этот RTF черно-белый.
А где кнопки на первой странице, там нормально.

InfoBeforeFile = "{tmp}\InfoBefore.rtf"

Vanadiy777
19-11-2022, 12:10
DA-Bro,
отправил в личку...
Там готовый вариант и пример для тестов.

Про проценты в прогресс-баре пока не разобрался.

nik1967
19-11-2022, 12:26
А у него просто нолик с процентами моргает и всё.
Не понятно почему проценты не крутятся, а только "0 %" и всё. »Потому, что не вижу, где инициируется procedure ExtLog();




© OSzone.net 2001-2012