Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]
Gnom_aka_Lexander
25-09-2012, 19:55
Johny777, есть. он идет вместе с библиотекой.Ivan_009, ImgLoad делаешь сразу, а в обработчике используешь ImgGetVisible, для проверки и ImgSetVisible для управления примерно так:
if ImgGetVisible(img) then ImgSetVisible(img, false) else ImgSetVisible(img, true);
а лучше так:
case ImgGetVisible(img) of
true : ImgSetVisible(img, false);
false: ImgSetVisible(img, true);
end; Хотя, как управлять условием - не более, чем дело вкуса, но по моему субъективному мнению, case... of работает быстрее.
P.S. и да, пишу по памяти, возможны грамматические ошибки.
Ivan_009
25-09-2012, 20:09
Gnom_aka_Lexander, У меня почемуто ошибка....
Ivan_009,
ImgGetVisibility
ImgSetVisibility
А открыть botva2.iss и посмотреть процедуры - не вариант?
Gnom_aka_Lexander
25-09-2012, 20:29
У меня почемуто ошибка.... »
P.S. и да, пишу по памяти, возможны грамматические ошибки. »
посемуА открыть botva2.iss и посмотреть процедуры - не вариант? »
Ivan_009
25-09-2012, 20:36
nik1967, чет нехочет закрыватся картинка открыватся открывается а закрытся не хочет... :(
код
procedure RepackButton(hBtn:HWND);
begin
case ImgGetVisibility(Logo) of
true : ImgSetVisibility(Logo, false);
false: ImgSetVisibility(Logo, true);
end;
ImgApplyChanges(WizardForm.Handle);
end;
Logo:= ImgLoad(WizardForm.handle, ExpandConstant('logo.png'), ScaleX(0), ScaleY(0), ScaleX(700), ScaleY(365), True, True);
ImgSetVisibility(Logo, false);
hRepackBtn:=BtnCreate(WizardForm.Handle, ScaleX(9), ScaleY(363), ScaleX(29), ScaleY(35), ExpandConstant('about.png'), 5, false);
BtnSetEvent(hRepackBtn,BtnClickEventID,WrapBtnCallback(@RepackButton,1));
BtnSetCursor(hRepackBtn,GetSysCursorHandle(32649));
Gnom_aka_Lexander, Спасибо все заработало... :yes:
Gnom_aka_Lexander
25-09-2012, 20:46
Ivan_009, я это для кого писал?ImgLoad делаешь сразу, а в обработчике используешь ImgGetVisible, для проверки и ImgSetVisible для управления »
Logo:= ImgLoad(WizardForm.handle, ExpandConstant('logo.png'), ScaleX(0), ScaleY(0), ScaleX(700), ScaleY(365), True, True);
это переносишь туда, где создаешь кнопку. там-же следом - ImgSetVisibility(Logo, false);
Подскажите, пожалуйста. Как привязать кустомные Check Box к одному из компонентов. То есть, если кустомный Check Box выбран, то становится выбранным и компонент?
Gnom_aka_Lexander
26-09-2012, 10:14
в обработчике чекбокса пишешь:
cese твой Чекбокс.Checked of
true : WizardForm.ComponentsList.CheckItem(0, cocheck);
false: WizardForm.ComponentsList.CheckItem(0, coUncheck);
end;
там, где нолик - порядковый номер твоего компонента. и учитывай, что нумерация начинается с нуля.
и в \Inno Setup 5\Scripts\WindowsHook есть пример »ошибку выдаёт
Файл: C:\Program Files\Inno Setup 5\Scripts\WindowsHook\WindowsHook.iss
Строка: 10:
Column 3:
Duplicate identifier 'TMSG'только я не нашёл где дубль.
ещё примерчик слишком большой и многого не понятно. может есть рабочий по меньше примерчик?
подскажите как сделать чтоб вместа галочки 'создать ярлык на рабочий стол' при переходе на страницу готовности всплыло сообщение 'создать ярлык на рабочем столе?' и кнопки 'Да' 'Нет'?
Gnom_aka_Lexander
26-09-2012, 10:26
только я не нашёл где дубль. »
просто удали эту структуру, когда писался этот скрипт, инно еще не содержала TMSG
подскажите как сделать чтоб вместа галочки 'создать ярлык на рабочий стол' »
покажи секцию ярлыков.
просто удали эту структуру, когда писался этот скрипт, инно еще не содержала TMSG »спасибо. убрал
TMSG = record
hwnd: HWND;
msg: LongWord;
wParam: Word;
lParam: LongWord;
MsgTime: LongWord;
pt: TPOINT;
end;
похоже работает. тока мне всё равно не понятен код.
нужно http://forum.oszone.net/post-1993713-1015.html
покажи секцию ярлыков. »
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Icons]
Name: "{commondesktop}\Application"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon
нужно чтоб заместо [Tasks] всплывало.
Gnom_aka_Lexander
26-09-2012, 10:42
SatHan,
Вариант номер один, мне не нравится, но соответствует поставленому тобой условию:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Icons]
Name: "{commondesktop}\Application"; Filename: "{app}\MyProg.exe"; Check: desktopicon
[*code]
var
Desctop : Boolean; // опорный флаг, исходя из которого будем создавать или не создавать ярлык
function desktopicon: Boolean;
begin
Result := Desctop;
end;
function InitializeSetup(): Boolean;
begin
Desctop := False; // Изначально говорим, что не нужно создавать ярлык.
Result := True;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then // Спрашиваем на странице готовности
Desctop := MsgBox(ExpandConstant('{cm:CreateDesktopIcon}'), mbConfirmation, MB_YESNO)= IDYES;
end;
Второй вариант - я считаю его более правильным.
Запрос будет во время установки, непосредственно в момент создания ярлыков.
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Icons]
Name: "{commondesktop}\Application"; Filename: "{app}\MyProg.exe"; Check: desktopicon
[*code]
function desktopicon: Boolean;
begin
Result := MsgBox(ExpandConstant('{cm:CreateDesktopIcon}'), mbConfirmation, MB_YESNO)= IDYES;
end;
естественно, задачу на создания ярлыка нужно удалить.
R.i.m.s.k.y.
26-09-2012, 11:06
там, где нолик - порядковый номер твоего компонента. и учитывай, что нумерация начинается с нуля. »
Ога, а потом в дистрах постоянно выскакивает "out of bounce"
_____________
Tco 03,
вот так можно узнать номер компонента по его имени или наоборот - по номеру узнать название
...
# define SVP "SmoothVideo Project 3.1"
...
SVPname := WizardForm.ComponentsList.Items.IndexOf(ExpandConstant('{#SVP}')); // номер по названию
SVPappname := WizardForm.ComponentsList.ItemCaption[SVPname]; //название по номеру
if SVPname >= 0 then begin
твои действия
end;
apozlevich
26-09-2012, 12:32
А как сделать так, что бы на 32-битной системе установился один файл, а на 64-битной другой?
Gnom_aka_Lexander
26-09-2012, 12:37
apozlevich, встроенная функция IsWin64 на файле, который под 64 стравишь Check : IsWin64 , который под 32 - Check : not IsWin64
apozlevich
26-09-2012, 12:43
Gnom_aka_Lexander, спасибо! Многого же нет в официальном FAQ о_О
А как сделать так, что бы если выбран компонент, менялась директива Setup (например Uninstallable) и запрещались иконки и записи в реестр?
Еще вопрос: как сделать так, что в зависимости от разрядности процессора (32-bit или 64-бит) меняется путь к файлу для ярлыков? Можно ли поступить так же, как и с файлами?
R.i.m.s.k.y.
26-09-2012, 12:56
А как сделать так, что бы если выбран компонент, менялась директива Setup (например Uninstallable) и запрещались иконки и записи в реестр? »
Не все директивы Setup можно менять
Еще вопрос: как сделать так, что в зависимости от разрядности процессора (32-bit или 64-бит) меняется путь к файлу для ярлыков? »
Точно так же как и выше Check: IsWin64 один путь, Check: not IsWin64 другой путь
_______
У каждой секции, кроме кода, есть свойство Components
Можно комбинировать, к примеру Components: not a; или Components: a and (not b);
Ты бы код выложил так проще будет хелпать чем сферические примеры рисовать
Gnom_aka_Lexander
26-09-2012, 12:57
менялась директива Setup »
Встроенная функция IsComponentSelected тут поможет. но не везде - некоторые свойства секции Setup не могут управляться внешними функциями.
и запрещались иконки и записи в реестр? »
в каждой секции есть свойство Components : имя компонента.Странно, этого нет в официальном FAQ о_О »
в справке есть вообще все. и где ты нашел официальный фак? Я тоже хочу поглядеть - вдруг там чего полезное есть?
в зависимости от разрядности процессора (32-bit или 64-бит) »
Процессора или ОС ? Это разные вещи.
Здравствуйте. Нужно сделать чтобы перед появлением WizardForm появлялась, например Forma1, и только после ее закрытия появлялась WizardForm
apozlevich
26-09-2012, 14:03
официальный фак »
Вот FAQ (http://www.jrsoftware.org/isfaq.php), Knowledge Base (http://www.jrsoftware.org/iskb.php) и референс (http://www.jrsoftware.org/ishelp/) от автора. До этого момента я смотрел только в референс, теперь буду смотреть все :) И втроенный хелп гляну.
Процессора или ОС ? Это разные вещи. »
Торможу, конечно ОС
Ты бы код выложил так проще будет хелпать чем сферические примеры рисовать »
Вот напишу по вашим примерам - выложу :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.