Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
Raf-9600
07-04-2012, 00:36
Ктонить может убрать возможность кликнуть ПКМ по тексту комментариев компонентов, из этого кода?
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
ComponentsListTVStyle=true
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
russian.ComponentsName1=Моя программа™
russian.ComponentsName2=Помощь
russian.ComponentsName2_1=Документация
russian.ComponentsName2_2=Руководство пользователя
russian.ComponentsInfoPanel1=Описание
russian.ComponentsInfoPanel2=Наведите курсор мыши на компонент, чтобы прочитать его описание.
russian.ComponentsDescription1=Устанавливается обязательно
russian.ComponentsDescription2=Помощь
russian.ComponentsDescription3=Прочитать документацию
russian.ComponentsDescription4=Прочитать руководство пользователя
[Components]
Name: readme; Description: Справка; Types: full custom;
Name: readme\en; Description: "Английская "; Types: full custom; Flags: fixed
Name: readme\ru; Description: Русская; Types: full
;*************************************************************************
Name: plugs; Description: Плагины; Types: full ; Flags: collapsed
Name: plugs\wlx; Description: Внутреннего просмотра; Types: full
Name: plugs\wcx; Description: Архиваторные; Types: full
Name: plugs\wfx; Description: Системные; Types: full
Name: plugs\wfx\CanonCam; Description: CanonCam; Types: full
Name: plugs\wfx\PluginManager; Description: PluginManager; Types: full
Name: plugs\wfx\Registry; Description: Registry; Types: full
Name: plugs\wfx\Services; Description: Services; Types: full
Name: plugs\wfx\StartupGuard; Description: StartupGuard; Types: full
Name: plugs\wdx; Description: Другие; Types: full
[C0de]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
var
DRTF: TRichEditViewer;
procedure RedesignWizardForm;
begin
with WizardForm.ComponentsList do
begin
Width := ScaleX(201);
end;
{ DRTF }
DRTF := TRichEditViewer.Create(WizardForm);
with DRTF do
begin
Name := 'DRTF';
Parent := WizardForm.SelectComponentsPage;
Left := ScaleX(208);
Top := ScaleY(74);
Width := ScaleX(209);
Height := ScaleY(131);
Color := clMenu;
DragMode := dmAutomatic;
ReadOnly := True;
ScrollBars := ssVertical;
Text := '';
end;
DRTF.TabOrder := 4;
{ ReservationBegin }
// Вы можете добавить ваш код здесь.
{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!
type
TComponentDesc = record Description: String; Index: Integer; end;
var
Descs: array of TComponentDesc;
Indx: Integer;
procedure ShowDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var i: Integer;
begin
Indx:=-1;
for i:= 0 to GetArrayLength(Descs)-1 do begin
if (Descs[i].Index=Index) then begin Indx:=i; Break end; end;
if (Indx >=0)and(Area=iaItem) then DRTF.Text:= Descs[Indx].Description else DRTF.Text:= ExpandConstant('{cm:ComponentsInfoPanel2}');
end;
procedure AddDescription(AIndex: Integer; ADescription: String);
var i, k: Integer;
begin
i:= GetArrayLength(Descs); SetArrayLength(Descs, i+1);
Descs[i].Description:= ADescription; Descs[i].Index:= AIndex-1
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
WizardForm.ComponentsList.OnItemMouseMove:= @ShowDescription
AddDescription(1, 'Справка'); //первый параметр - это номер компонента, идет последовательно от начала записи компонентов
AddDescription(2, 'Эта сказка возникла в устных рассказах, пока не стала историей Великой Войны Кольца, включая множество эскурсов в более древние времена. Она начала создаваться после того, как был написан "Хоббит", и по его первой публикации в 1937 году: но я не торопился с продолжением, потому что хотел прежде собрать и привести в порядок мифологию и легенды древних дней, а для этого потребовалось несколько лет. Я делал это для собственного удовольствия и мало надеялся, что другие люди заинтересуются моей работой, особенно потому что она была преимущественно лингвистической по побуждениям и возникла из необходимости привести в порядок мои отрывочные сведения о языках эльфов.'); //Второй параметр - это собственно описание компонента
AddDescription(3, 'Русская справка');
AddDescription(4, 'Плагины');
AddDescription(5, 'Внутреннего просмотра');
AddDescription(6, 'Архиваторные');
AddDescription(7, 'Системные');
AddDescription(8, 'CanonCam');
AddDescription(9, 'PluginManager');
AddDescription(10, 'Registry');
AddDescription(11, 'Services');
AddDescription(12, 'StartupGuard');
AddDescription(13, 'Другие');
end;
[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010D602000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C6963697457696 4746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E65725 06167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F74656 26F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650D4 578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B5 06167651453656C656374436F6D706F6E656E7473506167650D4578706C69636974576964746803A1010E4578706C6963697 448656967687403ED0000F11
Ivan_009
07-04-2012, 01:42
Как прописать в секции [Run] установку Обновить DirectX (требуется интернет соединение) пробовал стандартный ключ silent почемуто ошибка... :help:
Johny777
07-04-2012, 02:06
Как прописать в секции [Run] установку Обновить DirectX »
а если инет слабый и в тихом режиме (которого скорее всего нет) будет всю ночь напролёт качаться?
а если пользователь не хочет ставить панель Bing?
а ели у пользователя инет не безлимитный со всеми вытекающими последствиями?
Лучше не в тихом режиме!
Извини если вопрос не понял
может убрать возможность кликнуть ПКМ по тексту комментариев компонентов »
у меня нет всплывающего меню при нажатии правой кнопкой
использую расширенную версию 5.4.2 (ANSI)
Ivan_009
07-04-2012, 02:15
Как прописать эапуск веб установщика DirectX :lol:
Johny777
07-04-2012, 02:23
Ну Ваня
вот два варианта
тебе второй подробнее расписать?
[Run]
Filename: {src}\dxwebsetup.exe; StatusMsg: установка директа; Flags: skipifdoesntexist waituntilterminated;
или
[code]
var
res: integer;
если чекбокс отмечен, то
begin
Exec(ExpandConstant('{src}\dxwebsetup.exe'), '', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, Res);
WizardForm.StatusLabel.Caption := 'установка директа';
end;
El Sanchez
07-04-2012, 12:20
Johny777, добавь в нужные места: »
El Sanchez, небольшой апдейт: перенес GetWindowRect в процедуру AppOnMessage, а то при перемещении формы нужно заново вычислять координаты прямоугольника скроллбокса, и добавил определение страницы, на которой скроллинг должен действовать, а то скроллилось и на другой странице.
Raf-9600
07-04-2012, 12:29
у меня нет всплывающего меню при нажатии правой кнопкой »
Странно, у меня вчера было... Сорри за ложную тревогу http://i26.fastpic.ru/big/2011/0719/4b/a301ce665424f1d6dcf65cddbd6b8e4b.gif
Raf-9600
07-04-2012, 14:58
Подскажите ктонить, можно ли сделать так, чтобы в приведённом ниже коде, при клике на какой-либо компонент, инсталлятор не зависал? При том нужно чтобы весь функционал остался.
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Components]
Name: "Diablo"; Description: Diablo; Flags: exclusive disablenouninstallwarning;
Name: "Diablo\Local"; Description: Локализация; Flags: exclusive disablenouninstallwarning
Name: "Diablo\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Diablo\Local\Russian\Stream"; Description: Stream; Flags: exclusive disablenouninstallwarning; Types: full
Name: "Diablo\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Diablo\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\Local\Deusch"; Description: Немецкая; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Diablo\patch\100"; Description: 1.00; Flags: exclusive collapsed disablenouninstallwarning; Types: full
Name: "Diablo\patch\107"; Description: 1.07; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\108"; Description: 1.08; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109"; Description: 1.09; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109b"; Description: 1.09b; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\NoCD"; Description: No-CD; Flags: disablenouninstallwarning; Types: full
Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning; Types: full
Name: "Hellfire"; Description: Hellfire; Flags: exclusive disablenouninstallwarning;
Name: "Hellfire\Local"; Description: Локализация; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Hellfire\Local\Russian\Stream"; Description: Stream; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Hellfire\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive disablenouninstallwarning;
Name: "Hellfire\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\patch\100"; Description: 1.00; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\patch\101"; Description: 1.01; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch\102"; Description: 1.02; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\NoCD"; Description: No-CD; Flags: disablenouninstallwarning
Name: "Hellfire\Hide"; Description: Скрытые возможности; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\Hide\multitest"; Description: Мультиплеер; Flags: disablenouninstallwarning collapsed;
Name: "Hellfire\Hide\multitest\udp"; Description: Активировать UDP; Flags: disablenouninstallwarning
Name: "Hellfire\Hide\NestArt"; Description: Статичная палитра Улья; Flags: disablenouninstallwarning dontinheritcheck;
Name: "Hellfire\Hide\bardtest"; Description: Класс - Бард; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\Barbariantest"; Description: Класс - Варвар; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\theoquest"; Description: Квест от Цилии; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\FarmersOrchard"; Description: Квест от фермера Лестера; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\Hide\cowquest"; Description: Квест от Полного Психа; Flags: exclusive disablenouninstallwarning
[C0de]
procedure ComponentsListOnClickCheck(Sender: TObject);
begin
if wizardform.ComponentsList.Checked[3] then //Diablo\Local\Russian\Stream
wizardform.ComponentsList.Checked[13]:=True; //Diablo\NoCD
begin
if wizardform.ComponentsList.Checked[4] then //Hellfire\Local\Russian\Fargus
wizardform.ComponentsList.Checked[25]:=True; //Hellfire\NoCD
end;
begin
if wizardform.ComponentsList.Checked[2] then //Diablo\Local\Russian
wizardform.ComponentsList.Checked[8]:=True; //Diablo\patch\100
end;
begin
if wizardform.ComponentsList.Checked[6] then //Diablo\Local\Deusch
wizardform.ComponentsList.Checked[12]:=True; //Diablo\patch\109b
end;
begin
if wizardform.ComponentsList.Checked[0] then //Diablo
wizardform.ComponentsList.Checked[1]:=True; //Diablo\Local
wizardform.ComponentsList.Checked[7]:=True; //Diablo\patch
end;
begin
if wizardform.ComponentsList.Checked[15] then //Hellfire
wizardform.ComponentsList.Checked[16]:=True; //Hellfire\Local
wizardform.ComponentsList.Checked[21]:=True; //Hellfire\patch
end;
end;
procedure InitializeWizard1();
begin
wizardform.ComponentsList.OnClickCheck:=@ComponentsListOnClickCheck
end;
var
OldEvent_ComponentsListClickCheck: TNotifyEvent;
procedure ComponentsListClickCheck(Sender: TObject);
//Hellfire
begin
If IsComponentSelected('Diablo\Local\Englisch') then begin
WizardForm.ComponentsList.ItemEnabled[9]:=True; //patch\107
WizardForm.ComponentsList.ItemEnabled[10]:=True; //patch\108
WizardForm.ComponentsList.ItemEnabled[11]:=True; //patch\109
end else begin
WizardForm.ComponentsList.ItemEnabled[9]:=False;
WizardForm.ComponentsList.ItemEnabled[10]:=False;
WizardForm.ComponentsList.ItemEnabled[11]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
begin
If IsComponentSelected('Hellfire\Local\Englisch') then begin
WizardForm.ComponentsList.ItemEnabled[23]:=True; //patch\101
WizardForm.ComponentsList.ItemEnabled[24]:=True; //patch\102
end else begin
WizardForm.ComponentsList.ItemEnabled[23]:=False; //patch\101
WizardForm.ComponentsList.ItemEnabled[24]:=False; //patch\102
OldEvent_ComponentsListClickCheck(Sender);
end;
end;
begin
If IsComponentSelected('Hellfire\patch\100') then
WizardForm.ComponentsList.ItemEnabled[31]:=False //Barbariantest
else
WizardForm.ComponentsList.ItemEnabled[31]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
begin
If IsComponentSelected('Diablo\Local\Deusch') or IsComponentSelected('Diablo\Local\Englisch') then
WizardForm.ComponentsList.ItemEnabled[12]:=True //Diablo\patch\109b
else
WizardForm.ComponentsList.ItemEnabled[12]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
begin
If IsComponentSelected('Diablo\Local\Deusch') then
WizardForm.ComponentsList.ItemEnabled[8]:=False //Diablo\patch\100
else
WizardForm.ComponentsList.ItemEnabled[8]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
begin
If IsComponentSelected('Diablo\patch\109') or IsComponentSelected('Diablo\patch\109b') then
WizardForm.ComponentsList.ItemEnabled[14]:=True //Diablo\UPD
else
WizardForm.ComponentsList.ItemEnabled[14]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
//------
begin
If IsComponentSelected('Diablo\Local\Deusch') then
WizardForm.ComponentsList.ItemEnabled[8]:=False //Diablo\patch\100
else
WizardForm.ComponentsList.ItemEnabled[8]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
end;
procedure InitializeWizard2();
begin
with WizardForm.ComponentsList do
begin
OldEvent_ComponentsListClickCheck := OnClickCheck;
OnClickCheck := @ComponentsListClickCheck;
ItemEnabled[9]:=False; //patch\107
ItemEnabled[10]:=False; //patch\108
ItemEnabled[11]:=False; //patch\109
ItemEnabled[12]:=False; //patch\109b
ItemEnabled[14]:=False; //Diablo\UPD
end;
end;
procedure InitializeWizard;
begin
InitializeWizard1();
InitializeWizard2();
end;
Johny777
07-04-2012, 15:57
Raf-9600,
кажется виснет из-за неполной или неправильной логики
вот записал пока в удобочитаемой форме (тормоза на месте)
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Components]
Name: "Diablo"; Description: Diablo; Flags: exclusive disablenouninstallwarning;
Name: "Diablo\Local"; Description: Локализация; Flags: exclusive disablenouninstallwarning
Name: "Diablo\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Diablo\Local\Russian\Stream"; Description: Stream; Flags: exclusive disablenouninstallwarning; Types: full
Name: "Diablo\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Diablo\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\Local\Deusch"; Description: Немецкая; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Diablo\patch\100"; Description: 1.00; Flags: exclusive collapsed disablenouninstallwarning; Types: full
Name: "Diablo\patch\107"; Description: 1.07; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\108"; Description: 1.08; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109"; Description: 1.09; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109b"; Description: 1.09b; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\NoCD"; Description: No-CD; Flags: disablenouninstallwarning; Types: full
Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning; Types: full
Name: "Hellfire"; Description: Hellfire; Flags: exclusive disablenouninstallwarning ;
Name: "Hellfire\Local"; Description: Локализация; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Hellfire\Local\Russian\Stream"; Description: Stream; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Hellfire\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive disablenouninstallwarning;
Name: "Hellfire\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\patch\100"; Description: 1.00; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\patch\101"; Description: 1.01; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch\102"; Description: 1.02; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\NoCD"; Description: No-CD; Flags: disablenouninstallwarning
Name: "Hellfire\Hide"; Description: Скрытые возможности; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\Hide\multitest"; Description: Мультиплеер; Flags: disablenouninstallwarning collapsed;
Name: "Hellfire\Hide\multitest\udp"; Description: Активировать UDP; Flags: disablenouninstallwarning
Name: "Hellfire\Hide\NestArt"; Description: Статичная палитра Улья; Flags: disablenouninstallwarning dontinheritcheck;
Name: "Hellfire\Hide\bardtest"; Description: Класс - Бард; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\Barbariantest"; Description: Класс - Варвар; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\theoquest"; Description: Квест от Цилии; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\FarmersOrchard"; Description: Квест от фермера Лестера; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\Hide\cowquest"; Description: Квест от Полного Психа; Flags: exclusive disablenouninstallwarning
[ Code]
var
OldEvent_ComponentsListClickCheck: TNotifyEvent;
procedure ComponentsListClickCheck(Sender: TObject);
begin
// if wizardform.ComponentsList.Checked[3] then //Diablo\Local\Russian\Stream
// wizardform.ComponentsList.Checked[13]:=True; //Diablo\NoCD
// if wizardform.ComponentsList.Checked[4] then //Hellfire\Local\Russian\Fargus
// wizardform.ComponentsList.Checked[25]:=True; //Hellfire\NoCD
// if wizardform.ComponentsList.Checked[2] then //Diablo\Local\Russian
// wizardform.ComponentsList.Checked[8]:=True; //Diablo\patch\100
// if wizardform.ComponentsList.Checked[6] then //Diablo\Local\Deusch
// wizardform.ComponentsList.Checked[12]:=True; //Diablo\patch\109b
// if wizardform.ComponentsList.Checked[0] then //Diablo
// wizardform.ComponentsList.Checked[1]:=True; //Diablo\Local
// wizardform.ComponentsList.Checked[7]:=True; //Diablo\patch
// if wizardform.ComponentsList.Checked[15] then //Hellfire
// wizardform.ComponentsList.Checked[16]:=True; //Hellfire\Local
// wizardform.ComponentsList.Checked[21]:=True; //Hellfire\patch
If IsComponentSelected('Diablo\Local\Englisch') then
begin
WizardForm.ComponentsList.ItemEnabled[9]:=True; //patch\107
WizardForm.ComponentsList.ItemEnabled[10]:=True; //patch\108
WizardForm.ComponentsList.ItemEnabled[11]:=True; //patch\109
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[9]:=False;
WizardForm.ComponentsList.ItemEnabled[10]:=False;
WizardForm.ComponentsList.ItemEnabled[11]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Hellfire\Local\Englisch') then
begin
WizardForm.ComponentsList.ItemEnabled[23]:=True; //patch\101
WizardForm.ComponentsList.ItemEnabled[24]:=True; //patch\102
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[23]:=False; //patch\101
WizardForm.ComponentsList.ItemEnabled[24]:=False; //patch\102
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Hellfire\patch\100') then
begin
WizardForm.ComponentsList.ItemEnabled[31]:=False //Barbariantest
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[31]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Diablo\Local\Deusch') or IsComponentSelected('Diablo\Local\Englisch') then
begin
WizardForm.ComponentsList.ItemEnabled[12]:=True //Diablo\patch\109b
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[12]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Diablo\Local\Deusch') then
begin
WizardForm.ComponentsList.ItemEnabled[8]:=False //Diablo\patch\100
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[8]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Diablo\patch\109') or IsComponentSelected('Diablo\patch\109b') then
begin
WizardForm.ComponentsList.ItemEnabled[14]:=True //Diablo\UPD
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[14]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
If IsComponentSelected('Diablo\Local\Deusch') then
begin
WizardForm.ComponentsList.ItemEnabled[8]:=False //Diablo\patch\100
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[8]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
end;
procedure InitializeWizard;
begin
with WizardForm.ComponentsList do
begin
OldEvent_ComponentsListClickCheck := OnClickCheck;
OnClickCheck := @ComponentsListClickCheck;
ItemEnabled[9]:=False; //patch\107
ItemEnabled[10]:=False; //patch\108
ItemEnabled[11]:=False; //patch\109
ItemEnabled[12]:=False; //patch\109b
ItemEnabled[14]:=False; //Diablo\UPD
TreeViewStyle := True;
end;
end;
нашёл конфликт!
дочерний элемент радиокнопки не может быть фиксирован
речь идёт о этом компоненте
Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning; Types: full
и куске процедуры
If IsComponentSelected('Diablo\patch\109') then
begin
WizardForm.ComponentsList.ItemEnabled[14]:=True //Diablo\UPD
OldEvent_ComponentsListClickCheck(Sender);
end
else
begin
WizardForm.ComponentsList.ItemEnabled[14]:=False;
OldEvent_ComponentsListClickCheck(Sender);
end;
те если выбрать патч, то только активировать
достаточно просто чтобы он был отмечен.
а если пользователь снимет галку, то Diablo\patch\109 не отмечен.
очень сложно с этими номерами понять логику.
Пересмотри
а лучше начни писать заново, проверяя после каждого действия всё ли работает
Raf-9600
07-04-2012, 17:33
речь идёт о этом компоненте
Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning; Types: full »
Нет, с этим вроди все в норме. От зависаний я избавился удалив:
begin
If IsComponentSelected('Hellfire\patch\100') then
WizardForm.ComponentsList.ItemEnabled[31]:=False //Barbariantest
else
WizardForm.ComponentsList.ItemEnabled[31]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;
Но что тут нелогичного?..
Johny777
07-04-2012, 17:36
Raf-9600,
Item Enabled : = False
объект включен НЕТ, те заблокирован
у тебя все дочернин объекты относятся к двум переключателям (двум играм)
а дочерний объект переключателя не может быть заблокированнным
пример
в 1 игре один элемент (та же активация например) заблокирован
я переключаюсь на игру 2, но все дочернин элементы первой должны лишиться своих флажков, а с одним не получается. Он заблокирован.
попробуй так скомпилировать
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
Raf-9600,
Name: "Diablo"; Description: Diablo; Flags: exclusive disablenouninstallwarning;
Name: "Diablo\Local"; Description: Локализация; Flags: exclusive disablenouninstallwarning
Name: "Diablo\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Diablo\Local\Russian\Stream"; Description: Stream; Flags: exclusive disablenouninstallwarning; Types: full
Name: "Diablo\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Diablo\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\Local\Deusch"; Description: Немецкая; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Diablo\patch\100"; Description: 1.00; Flags: exclusive collapsed disablenouninstallwarning; Types: full
Name: "Diablo\patch\107"; Description: 1.07; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\108"; Description: 1.08; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109"; Description: 1.09; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\patch\109b"; Description: 1.09b; Flags: exclusive collapsed disablenouninstallwarning
Name: "Diablo\NoCD"; Description: No-CD; Flags: disablenouninstallwarning; Types: full
///фиксирован
Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning fixed; Types: full
Name: "Hellfire"; Description: Hellfire; Flags: exclusive disablenouninstallwarning ;
Name: "Hellfire\Local"; Description: Локализация; Flags: disablenouninstallwarning
Name: "Hellfire\Local\Russian"; Description: Русская; Flags: exclusive collapsed disablenouninstallwarning; ExtraDiskSpaceRequired: 518540567
Name: "Hellfire\Local\Russian\Stream"; Description: Stream; Flags: exclusive collapsed disablenouninstallwarning;
Name: "Hellfire\Local\Russian\Fargus"; Description: Фаргус; Flags: exclusive disablenouninstallwarning;
Name: "Hellfire\Local\Englisch"; Description: Английская; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch"; Description: Версия; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\patch\100"; Description: 1.00; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\patch\101"; Description: 1.01; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\patch\102"; Description: 1.02; Flags: exclusive collapsed disablenouninstallwarning
Name: "Hellfire\NoCD"; Description: No-CD; Flags: disablenouninstallwarning
Name: "Hellfire\Hide"; Description: Скрытые возможности; Flags: collapsed disablenouninstallwarning
Name: "Hellfire\Hide\multitest"; Description: Мультиплеер; Flags: disablenouninstallwarning collapsed;
Name: "Hellfire\Hide\multitest\udp"; Description: Активировать UDP; Flags: disablenouninstallwarning
Name: "Hellfire\Hide\NestArt"; Description: Статичная палитра Улья; Flags: disablenouninstallwarning dontinheritcheck;
Name: "Hellfire\Hide\bardtest"; Description: Класс - Бард; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\Barbariantest"; Description: Класс - Варвар; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\theoquest"; Description: Квест от Цилии; Flags: disablenouninstallwarning;
Name: "Hellfire\Hide\FarmersOrchard"; Description: Квест от фермера Лестера; Flags: exclusive disablenouninstallwarning
Name: "Hellfire\Hide\cowquest"; Description: Квест от Полного Психа; Flags: exclusive disablenouninstallwarning
а теперь запусти и вылетит ошибка подтверждающая всё вышесказанное
---------------------------
Ошибка
---------------------------
Radio item cannot have disabled child items.
---------------------------
ОК
---------------------------
просто нужно при выборе A, выбиралось и B и если потом убрать галку с B, от галка(точка) уберётся и с A, НО не блокируй! (смысл? если они и так друг от друга зависят)
а у тебя в коде через раз блокировка и потому всё виснет,
и мой тебе совет
сделай окошко выбора компонентов больше по вертикали. Еслим внизу поставить галку, а вверху (где не видно) галка снимется (которая важнее той что снизу, но пользватель не видит, что её уже нет), то получится нехорошо
Raf-9600
07-04-2012, 17:47
а теперь запусти и вылетит ошибка подтверждающая всё вышесказанное »
Хмм... Хорошо. Выбери немецкую локализацию Diablo, поставь флажок напротив "Активировать UDP", а потом кликни на Hellfire. В результате "Активировать UDP" заблокируется, но инсталлятор не зависнет.
А вот если, к примеру, сделать все то же самое, но выбрать английскую локализацию, то инсталлятор зависнет... Либо мистика, либо я чего-то не догоняю :)
и мой тебе совет
сделай окошко выбора компонентов больше по вертикали. Еслим внизу поставить галку, а вверху (где не видно) галка снимется (которая важнее той что снизу, но пользватель не видит, что её уже нет), то получится нехорошо »
Такого у меня нет. Я рассчитывал, что пользователь выбирает компоненты сверху в низ, и соответственно, выбрав нижний компонент, с тем, что выше него, уже ничего не произойдет.
Johny777
07-04-2012, 17:55
Raf-9600,
выпей водяры и
начни сначала
но без строк WizardForm.ComponentsList.ItemEnabled[31]:=False или True
а заместо них
wizardform.ComponentsList.Checked[1]:=True; или False
никакой мистики
это просто вынос мозга
Raf-9600
07-04-2012, 17:56
НО не блокируй! (смысл? если они и так друг от друга зависят) »
Не все так просто. К примеру, немецкая локализация может работать только на версии 1.09b. Так почему бы выбрав её, не заблокировать другие версии игры, чтобы пользователь не путался?
Johny777
07-04-2012, 18:05
при выборе A, выбиралось и B и если потом убрать галку с B, от галка(точка) уберётся и с A »
если выбран компонен "немецкая локализация" то
If IsComponentSelected('немецкая локализация') then
начинаем
begin
WizardForm.ComponentsList.Checked[номер]:=True 1.09b патч отмечен (если он относится к радиокнопке, то 2 другие не отмечены). Если это чекбокс то снизу в этом же куске приписываешь, что они не отмечены, а чекбокс этога патча отмечен
OldEvent_ComponentsListClickCheck(Sender);
end конец
в противном случае
else
begin
WizardForm.ComponentsList.Checked[номер]:=false патч не отмечен
end;
end;
пользователь при всём желании не сможет обойти это условие
те установить патч с другой локализацией кроме немецкой не получится.
такое же услвии для патча только по отношению к немецкой озвучке
Но если ты его ещё и заблокируешь, то всё зависнет
в блокировке просто нет смысла!
Raf-9600
07-04-2012, 18:07
wizardform.ComponentsList.Checked[1]:=True; или False »
Выглядит не так симпатично как с ItemEnabled, но как резервный вариант решения ситуации вполне катит.
Но если ты его ещё и заблокируешь, то всё зависнет
в блокировке просто нет смысла! »
Блокировка визуально красиво выглядит (^_^)
Хоть ты и прав, но я ещё поколдую над ItemEnabled.
Johny777
07-04-2012, 18:13
я ещё поколдую над ItemEnabled. »
радиатор с кучей рёбрышек на мозг не забудь поставить! :laugh:
и ты используешь флаг collapsed
не забудь тогда приписать в InitializeWizard; строку
WizardForm.ComponentsList.TreeViewStyle := True;
Raf-9600
07-04-2012, 18:26
и ты используешь флаг collapsed
не забудь тогда приписать в InitializeWizard; строку
WizardForm.ComponentsList.TreeViewStyle := True; »
Я прописываю ComponentsListTVStyle=true в секции [Setup]
Raf-9600
07-04-2012, 19:52
Я добился своего. Везде где был прописан ItemEnabled там он и остался. К ним я лишь добавил правила снятия галочек с Hellfire\Hide\Barbariantest и Diablo\UPD http://www.kolobok.us/smiles/standart/umnik.gif
Raf-9600
07-04-2012, 22:56
Ктонить может перенести задачу из батника в секцию [Run] инсталлятора? Т.е. нужно чтобы действие выполнялись без bat файла, напрямую через cmd.exe
@Echo Off
For /F "tokens=*" %%i In (123.txt) Do <nul set /p $WRT="%%i. Good Bye" >123.txt
pause&goto :Eof
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.