Войти

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


Страниц : 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Serega
08-12-2009, 02:14
а Transparent к каким элементам можно применять, только к лейблам? »
К сожалению, да.
Вот например TMemo можно сделать прозрачной? »
нет, но ухитряются делать TLabel под вид TMemo.

YURSHAT
08-12-2009, 02:44
Serega, ухитряются делать TLabel под вид TMemo »
Знаю, из четырех TLabel ...

vitl
08-12-2009, 13:49
1. Подскажите, что прописать в коде, чтобы в конце установки проверялось условие на наличие второго сетапа (лежит на DVD рядом с основным setup.exe, который стартуется первым), и если таковой имеется, запустить его, не показывая финального окна ("Завершение мастера установки"), а если второго сетапа на диске нет, просто выполнить установку без сообщений об отсутствии проверяемого файла?
2. Отключил окно приветствия. Как теперь отключить кнопку "Назад" в первом диалоге (если нельзя только в 1-ом, вообще отключить эту кнопку)?
Спасибо.

baikalchanen
08-12-2009, 14:49
Как наложить картинку на весь инсталятор и ещё чтобы все страницы были одинаковыми на фон а не как у меня на скрине?

baikalchanen
08-12-2009, 14:50
Это я скрины для спавнения вложил если что.

DemonAk
08-12-2009, 17:11
Приветстую, такой вопросик, как добавить в ini файл вот это:

[Settings]
Name=Имя

И Имя вписывалось в ini, которое я ввел на странице wpInfoBefore.

Все нашел уже :)

Теперь только вопросик как сделать чтобы на одной странице было 2 строки, одна ввод имени для одиночной игры, вторая ввод имени для сетевой игры. А то ейчас у меня 2 страницы, а хотелось бы на одной.

serg aka lain
08-12-2009, 23:53
1. Подскажите, что прописать в коде, чтобы в конце установки проверялось условие на наличие второго сетапа (лежит на DVD рядом с основным setup.exe, который стартуется первым), и если таковой имеется, запустить его, не показывая финального окна ("Завершение мастера установки"), а если второго сетапа на диске нет, просто выполнить установку без сообщений об отсутствии проверяемого файла?
2. Отключил окно приветствия. Как теперь отключить кнопку "Назад" в первом диалоге (если нельзя только в 1-ом, вообще отключить эту кнопку)?
Спасибо. »
пример
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=userdocs:My Program.

[Code]
procedure CurPageChanged(CurPageID: Integer);
var
ErrorCode: Integer;
begin
if CurPageID = wpWelcome then
WizardForm.NextButton.OnClick(WizardForm.NextButton);

if CurPageID = wpSelectDir then
WizardForm.BackButton.Hide;

if CurPageID = wpFinished then
if FileExists(ExpandConstant('{src}\setup_2.exe')) then
begin
Exec(ExpandConstant('{src}\setup_2.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
end;

serg aka lain
09-12-2009, 00:11
Теперь только вопросик как сделать чтобы на одной странице было 2 строки, одна ввод имени для одиночной игры, вторая ввод имени для сетевой игры. А то ейчас у меня 2 страницы, а хотелось бы на одной. »
можно так
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=userdocs:My Program.

[Code]
var
Page: TInputQueryWizardPage;

procedure InitializeWizard();
begin
Page := CreateInputQueryPage(wpSelectDir, 'Ввод имени', '',
'Пожалуйста, введите имя для сетевой и одиночной игры.');
Page.Add('ввод имени для одиночной игры:', False);
Page.Add('ввод имени для сетевой игры:', False);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;

if CurPageID = Page.ID then
SaveStringToFile(ExpandConstant('{userdesktop}\information.txt'),
'ввод имени для одиночной игры:' + ' ' + Page.Values[0] + #13#10
'ввод имени для сетевой игры:' + ' ' + Page.Values[1] + #13#10, False);
end;

DemonAk
09-12-2009, 02:04
serg aka lain
То что надо, огромное спасибо ;)

Dark Engel
09-12-2009, 10:13
Добрый день. Второй день бьюсь над проблемой.

1. Необходимо перед установкой проверять наличие ключа в реестре (не значения) в случае его отсутствия продолжать установку в случае существования переходить к пункту 2.
2. Необходимо перед установкой проверять значение ключа в реестре: в случае совпадения прерывать установку, если значение меньше предлагать обновление и в случае если больше говорить что установленная версия новее.

Подскажите кто может. Заранее спасибо. :angel:

P.S. Это первый мой инсталятор на inno setup :not-me:

vitl
09-12-2009, 11:13
Спасибо, serg aka lain!
Пример - то, что надо, только при включенном DisableDirPage=yes кнопка НАЗАД все равно есть.
Что сделать, чтобы Ваш приведенный код выполнялся правильно при задействованном DisableDirPage=yes ?

Молодой
09-12-2009, 14:01
Всем доброго времени суток, создал Setup , все сделал как надо, но возникла проблема!
Архивы распаковываються, но просто в корень папки, а не по подпапкам. Как исправить?
Заранее багодарен за ответ!

Dark Engel
09-12-2009, 14:15
Молодой, Указывай в скрипте не

D:\test\po\proga\*

а
D:\test\po\proga\*; DestDir: {app}
D:\test\po\proga\papka\*; DestDir: {app}\papka;
D:\test\po\proga\papka1\*; DestDir: {app}\papka1;
D:\test\po\proga\papka2\podpapka1\*; DestDir: {app}\papka2\podpapka1;
D:\test\po\proga\papka2\podpapka2\*; DestDir: {app}\papka2\podpapka2;
D:\test\po\proga\papka3\*; DestDir: {app}\papka3;

Молодой
09-12-2009, 14:19
Спасибо попробуем!

baikalchanen
09-12-2009, 15:54
Собрал скрипт с музыкой и с темой Vista.cjstyles,в итоге получается только с музыкой без темы либо только с темой без музыкой!
Помогите собрать скрипт с музыкой и с темой вместе.
Прикрепил два скрипта один с музыкой,другой с темой.

Молодой
09-12-2009, 17:50
Подскажите скрипт для расчета свободного места на жестком "Требуется свободного места..."
Заранее благодарен

A1EXXX
09-12-2009, 18:01
Inno Setup Compiler [ANSI] Beta (build 091209) English (http://restools.hanzify.org/inno/InnoCompiler_ANSI_BETA_091209_English(7zip).zip) by Restools (http://restools.hanzify.org/)

Молодой
09-12-2009, 18:12
A1EXXX, Спасибо, но это же не сам скрипт или я что то путаю?

A1EXXX
09-12-2009, 18:22
Молодой, это расширенная версия компилятора... По твоему вопросу, это, думаю, подойдёт:
[Code]
var
NeedSize:Integer; FreeMB, TotalMB: Cardinal; NeedSpaceLabel,FreeSpaceLabel: TLabel;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';
end;

procedure InitializeWizard();
begin
NeedSize := 630000; // здесь указать сколько требуется для установки (в Mb)

WizardForm.DiskSpaceLabel.Hide;

NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;

Молодой
09-12-2009, 18:45
A1EXXX, Огромное спасибо за скрипт, прописал, все работает! :oszone: :ok:




© OSzone.net 2001-2012