Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата 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;
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
пытался добавить через месседж, но не видит, а в скрипте главном не могу. Прошу помощи..
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;
Ребята, как добавить 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;
Cпасибо, но что-то ошибку выдает тут »
Замените на MsgBox
10: MsgBox( 'Текст сообщения', mbInformation, MB_OK );
Или компилируйте на расширенной версии.
Dinvin4ester
02-10-2014, 13:40
saurn,
Компилирую на расширенной, поменял, на той же строке ошибка.
на той же строке ошибка. »
Перепроверил. Ошибок нет. Смотрите у себя. Если что, вот вам вариант с формой.
Замените 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC