PDA

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


Страниц : 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

Tco 03
01-10-2014, 13:33
Цитата sergey3695:
зачем тебе сворачивать его? »

В общем задача такая: В инсталляторе используется: WinTB.dll. Для отображения таскбара WinTB.dll использует: WizardForm.Handle. В инсталляторе, во время установки, есть возможность поиграть в мини-игру (так сказать для развлечения (если больше делать нечего)). Для этого дела есть естественно кнопка. Нажав на кнопку, инсталлятор сворачивается (так сказать, чтобы не мешал) и начинается игра. Сворачивается с помощью кода: SendMessage(WizardForm.Handle, WM_SYSCOMMAND, 61472, 0); Этот код и WinTB.dll используют: WizardForm.Handle. Так вот, нажав на кнопку, инсталлятор сворачивается и перестаёт работать таскбар, вместо таскбара там белое окно, так как при сворачивании, код: SendMessage(WizardForm.Handle, WM_SYSCOMMAND, 61472, 0); перехватил WizardForm.Handle. Дело в том, что если свернуть инсталлятор обычным способом (с помощью системного меню (там где сверху, справа, кнопки «Свернуть», «Закрыть»)) всё работает прекрасно. Вот поэтому и спрашиваю: -Как свернуть инсталлятор через секцию код, не использующий: WizardForm.Handle, или использующий тот же принцип, что и кнопка «Свернуть»?

ROMKA-1977
01-10-2014, 16:25
Подскажите пожалуйста код чекбокса "Не создавать папку в меню Пуск"

habib2302
01-10-2014, 16:32
ROMKA-1977,
[Setup]
AllowNoIcons=true
[Setup]
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes

[Tasks]
Name: group; Description: {cm:CreateGroupeIcon};

[Icons]
Name: {group}\имя ярлыка; Filename: {app}\{#MyAppExeName}; Tasks: group;
[Setup]
DefaultGroupName={#MyAppName}
AllowNoIcons=false

[Tasks]
Name: group; Description: {cm:CreateGroupeIcon};

[Icons]
Name: {group}\имя ярлыка; Filename: {app}\{#MyAppExeName}; Tasks: group;

ROMKA-1977
01-10-2014, 16:57
habib2302, мне нужен код кастомного чекбокса через [Code].

sergey3695
01-10-2014, 17:33
Tco 03, никак больше не свернуть. Проще изменить положение формы, типо скрыть. а на форму где проигрывается игра сделать кнопку на показ. к обратному положению формы. только так наверное.

Dodakaedr
01-10-2014, 17:42
мне нужен код кастомного чекбокса через . »
[CODE][Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "C:\Program Files\Inno Setup 5 Ultra\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{commonprograms}\My Program\My programm"; Filename: "{app}\MyProg.exe"; Check: "IconCheck";
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe";

[Code]
var
Pusk: TNewCheckBox;

function IconCheck: Boolean;
begin
Result:= Pusk.Checked;
end;

procedure InitializeWizard();
begin
Pusk := TNewCheckBox.Create(WizardForm);
with Pusk do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(1);
Top := ScaleY(110);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Ярлык в меню «Пуск»';
Checked := True;
end;
end;

Nordek
01-10-2014, 18:53
ROMKA-1977, Если при пробном воспроизведении примера (http://forum.oszone.net/post-2409552-1686.html) возникнет остановка на месте [Files] и вызовет ошибку: Source file "C:\Program Files\Inno Setup 5 Ultra\Examples\MyProg.exe" does not exist, то замените:
Source: "C:\Program Files\Inno Setup 5 Ultra\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

на
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion


Dodakaedr, Inno Ultra установлена не у всех.

El Sanchez
01-10-2014, 19:56
Как свернуть инсталлятор через секцию код, не использующий: WizardForm.Handle, или использующий тот же принцип, что и кнопка «Свернуть»? »
Tco 03,

PostMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);

ROMKA-1977
01-10-2014, 20:10
Dodakaedr, не то. Своей функции не выполняет. Гдето встречал на просторах форума но забыл сохранить.

Dodakaedr
01-10-2014, 20:13
Своей функции не выполняет. »
А какая должна быть функция? Может так? [Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "C:\Program Files\Inno Setup 5 Ultra\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{commonprograms}\My Program\My programm"; Filename: "{app}\MyProg.exe"; Check: "IconCheck";
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe";

[Code]
var
Pusk: TNewCheckBox;

function IconCheck: Boolean;
begin
Result:= not Pusk.Checked;
end;

procedure InitializeWizard();
begin
Pusk := TNewCheckBox.Create(WizardForm);
with Pusk do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(1);
Top := ScaleY(110);
Width := ScaleX(220);
Height := ScaleY(17);
Caption := 'Не создавать папку в меню Пуск';
Checked := True;
end;
end;

ROMKA-1977
01-10-2014, 20:40
А какая должна быть функция? Может так? »

Это просто чекбокс. Кнопку "Обзор" и GroupEdit не отключает.

Есть пример не полностью рабочий - на странице ReadyPage при включеном чекбоксе отображается опция Папка в меню «Пуск»:Name.

AppName=My program
VersionInfoVersion=5.0
AppVerName=My program
DefaultDirName={pf}\My program
DefaultGroupName=My program


[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[code]
var
No_Icons_CheckBox: TNewCheckBox;


function Is_No_Ico_CheckBox_Checked: Boolean;
begin
Result := No_Icons_CheckBox.Checked;
end;


procedure No_Icons_CheckBox_OnClick(Sender: TObject);
begin
with WizardForm do
begin
GroupEdit.Enabled := not TNewCheckBox(Sender).Checked;
GroupBrowseButton.Enabled := not TNewCheckBox(Sender).Checked;
end;
end;


procedure InitializeWizard();
begin
No_Icons_CheckBox := TNewCheckBox.Create(WizardForm);
with No_Icons_CheckBox do
begin
Parent := WizardForm.SelectProgramGroupPage;
SetBounds(ScaleX(32), ScaleY(168), ScaleX(200), ScaleY(17));
Caption := SetupMessage(msgNoProgramGroupCheck2);
OnClick :=@No_Icons_CheckBox_OnClick;
end;
end;

Dodakaedr
01-10-2014, 21:24
Это просто чекбокс. Кнопку "Обзор" и GroupEdit не отключает. »
А чем стандартная кнопка не устроила?

ROMKA-1977
01-10-2014, 21:28
А чем стандартная кнопка не устроила? »
Кастомный нужен для прозрачности фона текста (Transparent)

Dinvin4ester
01-10-2014, 22:41
Ребята, как добавить NFO , как тут - http://i64.fastpic.ru/big/2014/1001/1e/421f6595803d8bb92300901ea5b4d91e.png , http://i64.fastpic.ru/big/2014/1001/02/657aa8bd6daa054fe0c845c75c8eac02.png
скрипт - http://rghost.ru/58305419
пытался добавить через месседж, но не видит, а в скрипте главном не могу. Прошу помощи..

nik1967
02-10-2014, 00:18
ROMKA-1977, [Setup]
AppName=My program
VersionInfoVersion=5.0
AppVerName=My program
DefaultDirName={pf}\My program
DefaultGroupName=My program
OutputDir=.

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[code]
var
No_Icons_CheckBox: TNewCheckBox;

procedure No_Icons_CheckBox_OnClick(Sender: TObject);
begin
WizardForm.NoIconsCheck.Checked:= TNewCheckBox(Sender).Checked;
end;


procedure InitializeWizard();
begin
No_Icons_CheckBox:= TNewCheckBox.Create(WizardForm);
with No_Icons_CheckBox do begin
Parent:= WizardForm.SelectProgramGroupPage;
SetBounds(ScaleX(32), ScaleY(168), ScaleX(200), ScaleY(17));
Caption:= SetupMessage(msgNoProgramGroupCheck2);
OnClick:=@No_Icons_CheckBox_OnClick;
end;
end;

saurn
02-10-2014, 02:43
Ребята, как добавить NFO »
Скачать (http://rghost.ru/58308033)

Dinvin4ester
02-10-2014, 12:45
saurn,
Cпасибо, но что-то ошибку выдает тут
begin
case ( Sender as TButton ).Tag of
10: MsgBoxEx(Application.Handle, 'Òåêñò ñîîáùåíèÿ', 'Èíôîðìàöèÿ', MB_OK + MB_ICONINFORMATION, 0, 0);
end;
end;

saurn
02-10-2014, 13:32
Cпасибо, но что-то ошибку выдает тут »
Замените на MsgBox
10: MsgBox( 'Текст сообщения', mbInformation, MB_OK );
Или компилируйте на расширенной версии.

Dinvin4ester
02-10-2014, 13:40
saurn,
Компилирую на расширенной, поменял, на той же строке ошибка.

saurn
02-10-2014, 14:01
на той же строке ошибка. »
Перепроверил. Ошибок нет. Смотрите у себя. Если что, вот вам вариант с формой.
Замените procedure TButtonOnClick( Sender: TObject ) на ту, что под спойлером.
procedure TButtonOnClick( Sender: TObject );
var
iForm: Tform;
begin
case ( Sender as TButton ) of
NFOBtn:
begin
iForm := TForm.Create( nil );
with iForm do
try
BorderIcons := [];
ClientWidth := ScaleX( 300 );
ClientHeight := ScaleY( 300 );
Caption := 'Информация';
Position := poScreenCenter;

with TBevel.Create( nil ) do
begin
Parent := iForm;
SetBounds( ScaleX( 8 ), ScaleY( 8 ), ScaleX( 284 ), ScaleY( 249 ) );
Shape := bsFrame;
end;

with TNewStaticText.Create( nil ) do
begin
Parent := iForm;
SetBounds( ScaleX( 12 ), ScaleY( 12 ), ScaleX( 276 ), ScaleY( 241 ) );
AutoSize := False;
Caption := 'Информация:' + #13#10 +
'Версия:' + #13#10 +
'И т.д.';
WordWrap := True;
end;

with TNewButton.Create( nil ) do
begin
Parent := iForm;
SetBounds( ScaleX( 112 ), ScaleY( 266 ), ScaleX( 76 ), ScaleY( 25 ) );
ModalResult := mrOk;
Caption := 'Закрыть';
end;

ModalResult := ShowModal();
finally

Free;
end;
end;
end;
end;
А текст ошибки какой?




© OSzone.net 2001-2012