Скрипты Inno Setup. Помощь и советы [часть 4]

Ответить
 • Просмотры: 32
Аватара пользователя
Devils Night

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Devils Night »

Ктонить может убрать возможность кликнуть ПКМ по тексту комментариев компонентов, из этого кода?


читать дальше »




Код:

Код: Выделить всё

[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=FF0A005457495A415244464F524D003010D602000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167651453656C656374436F6D706F6E656E7473506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED0000F11
Аватара пользователя
alert30

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение alert30 »

Как сделать выборочный компонент, чтобы при галочке: после установки прописывался реестр (reg-файл), при не галочке: после установки не прописывался реестр (reg-файл)?
Аватара пользователя
Raf-9600

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Raf-9600 »

Цитата Ivan_009:



Как прописать в секции [Run] установку Обновить DirectX
Скрипты Inno Setup. Помощь и советы [часть 4]




а если инет слабый и в тихом режиме (которого скорее всего нет) будет всю ночь напролёт качаться?

а если пользователь не хочет ставить панель Bing?

а ели у пользователя инет не безлимитный со всеми вытекающими последствиями?

Лучше не в тихом режиме!

Извини если вопрос не понял


Цитата Raf-9600:



может убрать возможность кликнуть ПКМ по тексту комментариев компонентов
Скрипты Inno Setup. Помощь и советы [часть 4]




у меня нет всплывающего меню при нажатии правой кнопкой

использую расширенную версию 5.4.2 (ANSI)
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Johny777 »

Raf-9600,

нафига?

а если у него дочерние как у тебя в примере?

смотри

я выбираю основной - игру. И тут дерево дочерних сворачивается. Т.е. рабиокнопки с выбором озвучек, чекбоксы к ним ещё дочерние

Тебе разве такое нужно?
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение R.i.m.s.k.y. »

Ну Ваня

вот два варианта

тебе второй подробнее расписать?

[Run]

Filename: {src}\dxwebsetup.exe; StatusMsg: установка директа; Flags: skipifdoesntexist waituntilterminated;



или



Код: Выделить всё

[/b]

var

  res: integer; 

если чекбокс отмечен, то

begin

 Exec(ExpandConstant('{src}\dxwebsetup.exe'), '', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, Res);

 WizardForm.StatusLabel.Caption := 'установка директа';

end;
Аватара пользователя
Devils Night

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Devils Night »

Цитата El Sanchez:



Johny777, добавь в нужные места:
Скрипты Inno Setup. Помощь и советы [часть 4]




El Sanchez, небольшой апдейт: перенес GetWindowRect в процедуру AppOnMessage, а то при перемещении формы нужно заново вычислять координаты прямоугольника скроллбокса, и добавил определение страницы, на которой скроллинг должен действовать, а то скроллилось и на другой странице.
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Johny777 »

Цитата Johny777:



у меня нет всплывающего меню при нажатии правой кнопкой
Скрипты Inno Setup. Помощь и советы [часть 4]




Странно, у меня вчера было... Сорри за ложную тревогу Изображение
Аватара пользователя
alert30

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение alert30 »

Johny777, это точно работает, просто я хочу, которую выше написал:

а) галочку поставишь в компоненте - установка + пропись реестр

б) не поставишь галочку в компоненте - установка

?



Извените, все заработало.
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Johny777 »

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

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Raf-9600 »

Цитата Johny777:



речь идёт о этом компоненте

Name: "Diablo\UPD"; Description: Активировать UPD; Flags: disablenouninstallwarning; Types: full
Скрипты Inno Setup. Помощь и советы [часть 4]




Нет, с этим вроди все в норме. От зависаний я избавился удалив:





Код:

Код: Выделить всё

begin
If IsComponentSelected('Hellfire\patch\100') then
WizardForm.ComponentsList.ItemEnabled[31]:=False   //Barbariantest
else
WizardForm.ComponentsList.ItemEnabled[31]:=True;
OldEvent_ComponentsListClickCheck(Sender);
end;

Но что тут нелогичного?..
Ответить

Вернуться в «Автоматическая установка приложений»