Inno Setup (создание инсталяционных пакетов). Часть 3

Статус
В этой теме нельзя размещать новые ответы.

Devils Night

Ветеран
По поводу скрытия компонентов:

Недавно на Win7 увидел тот баг о чём писал Gnom.
Пока замечал только на семёрке. Действительно отображается криво.
Из наблюдений выяснил то, что, всё дело в темах. В стандартной виндовой теме отображается нормально, а вот в некоторых других, уже не корректно. На XP такого бага не замечал, как в стандартной теме, так и в не подписанных.
И если оно всё действительно так, то либо использовать ISSkin, либо не использовать сторонние темы, либо не использовать данную функцию скрытия, либо портировать код.
Так что c W7 не понятно, либо винда кривая, либо темы.
 

sergey3695

Ветеран
Модератор
urban, этож весь установщик переделывать. издеваешься что ли? не мне влом.
Devils Night, TreeViewStyle := false; не пробывал?
 

urban

Старожил
Devils Night, перенеси флаг с компонентов к задачам
 
Последнее редактирование:

Devils Night

Ветеран
перенесли флаг с компонентов к задачам
Было бы так просто!

C этим нет проблем, а так выдаёт: Parameter "Flags" icludes an unknown flag
 

sergey3695

Ветеран
Модератор
Devils Night, перенеси флаг с компонентов к задачам
Devils NightDevils Night, попробуй добавить тип установки к таск
не пиши бред. и меня запутал и человека.
Подскажите, как сделать тоже самое на задачах?
на TaskList ты так не сделаешь. можешь сделать TNewCheckListBox с компанентами на созданной потом доп. странице.
По поводу скрытия компонентов:

Недавно на Win7 увидел тот баг о чём писал Gnom.
Пока замечал только на семёрке. Действительно отображается криво.
Из наблюдений выяснил то, что, всё дело в темах. В стандартной виндовой теме отображается нормально, а вот в некоторых других, уже не корректно. На XP такого бага не замечал, как в стандартной теме, так и в не подписанных.
И если оно всё действительно так, то либо использовать ISSkin, либо не использовать сторонние темы, либо не использовать данную функцию скрытия, либо портировать код.
Так что c W7 не понятно, либо винда кривая, либо темы.
я сначала как-то не вчитывался,написал первое что в голову пришло. где баг то,я на скрине ничего не вижу.
 

Devils Night

Ветеран
можешь сделать TNewCheckListBox с компанентами на созданной потом доп. странице.
Ой блин, это получается заново делать страницу, навешивать чекбосы, прочую ересь и только тогда будет это скрытие, так что ли!?
Если так то этого больше всего не хотелось бы, и лишний код ни к чему, потом опять же сидеть разбираться в нём куда задумаю какие функции вставлять. Не, тогда нет, пусть уж остаётся как есть, чем потом ошибки разгребать.

где баг то,я на скрине ничего не вижу.
На скрине ничего и нету. Скрин для того чтоб было понятно о чём речь идёт в кратце. А баг появляется в некоторых темах на Win7.
 
Последнее редактирование:

urban

Старожил
как вынести прогресс бар на самый низ,там где кнопка отмены?
 

vint56

Ветеран
Проверенный
Devils Night как такой вариант
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Tasks]
Name: Temp; Description: "Temp";

[Components]
Name: ansi; Description: Главный компонент; Types: custom compact full; Flags: collapsed
Name: ansi\r; Description: Исключительный компонент; Flags: exclusive;
Name: ansi\s; Description: Компонент;

Код:
procedure InitializeWizard();
begin
    WizardForm.TypesCombo.hide;
    WizardForm.TasksList.hide;
    WizardForm.ComponentsList.Checked[2]:=True
    with WizardForm.ComponentsList do
  begin
    WantTabs := True;
    BorderStyle := bsNone;
    Color := clMenu;
    WizardForm.ComponentsList.Parent := WizardForm.SelectTasksPage;
    TreeViewStyle := True;
    Top:=50;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID = 7) then
  Result:= True;
end;[/SPOILER]

Вот что я смог сделать на Tasks но возникла проблема у него нету Flags: collapsed сворачивание дочерних компонентов но есть у компонентов
[SPOILER="пример"][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Tasks]
Name: a; Description: Главный компонент; Flags: ;
Name: a\1; Description: Исключительный компонент; Flags: exclusive;
Name: a\2; Description: Компонент; 

[Code]
procedure InitializeWizard();
begin
  with WizardForm.TasksList do
  begin
    ShowLines := True;
    TreeViewStyle := True;
  end;
end;[/SPOILER]
 
Последнее редактирование:

Devils Night

Ветеран
но возникла проблема у него нету Flags: collapsed
Это я уже заметил.
vint56, Второй вариант очень устроил.



как вынести прогресс бар на самый низ,там где кнопка отмены?
А стоит ли?
У меня вот что получилось:
[Setup]
AppName=Моя программа
AppVersion=1.5
DefaultDirName={pf}\Моя программа
DefaultGroupName=Моя программа
OutputDir=.

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Icons]
Name: {group}\{cm:UninstallProgram,Моя программа}; Filename: {uninstallexe}


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

Код:
[C[B][/B]ode]
procedure InitializeWizard();
begin
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Top := ScaleY(327);
WizardForm.ProgressGauge.Width := ScaleX(220);
WizardForm.ProgressGauge.Height := ScaleY(23);
end;
 

Бахытжан

Новичок
Всем добрый вечер!!!
Почему когда я запаковываю игру и вставлял его в скрипт он был русским, а когда заново установилраспоковал своим инсталлом он стал английским
что делать помогите
 

Snoopak96

Старожил
y_thelastknight,
1.http://krinkels.org/downloads.php?do=file&id=83

2.
Код:
var
StatLabel: TLabel;

type
 TTimerProc=procedure(h:longword; msg:longword; idevent:longword; dwTime:longword);

function SetTimer(hWnd: longword; nIDEvent, uElapse: longword; lpTimerFunc: longword): longword; external 'SetTimer@user32.dll stdcall';
function wsprintf( a:ansistring; b:ansistring; c:TTimerProc ): longword; external 'wsprintfA@user32.dll cdecl';
function memcpy( a:longword; c:ansistring; l:longword ): longword; external 'memcpy@msvcrt.dll cdecl';
function VirtualAlloc( a:longword; b:longword; c:longword; d:longword ): longword; external 'VirtualAlloc@kernel32.dll stdcall';
function sh_wrap( u: TTimerProc ): longword;
var
  x,y,cb: longword;
  s: ansistring;
begin
 SetLength( s, 256 );
 wsprintf( s, '%i %i;', u );
 x := StrToInt( Copy(s,1,Pos(' ',s)-1) );
 Delete( s, 1, Pos(' ',s) );
 y := StrToInt( Copy(s,1,Pos(';',s)-1) );
 s := chr(85)+chr(139)+chr(236)+chr(104)+chr(x)+chr(x shr 8)+chr(x shr 16)+chr(x shr 24)+chr(139)+chr(85)+chr(8)+chr(139)+chr(77)+chr(12)+chr(255)+chr(181)+chr(16)+chr(0)+chr(0)+chr(0)+chr(255)+chr(181)+chr(20)+chr(0)+chr(0)+chr(0)+chr(184)+chr(y)+chr(y shr 8)+chr(y shr 16)+chr(y shr 24)+chr(255)+chr(85)+chr(252)+chr(90)+chr(93)+chr(194)+chr(16)+chr(0);
 cb := VirtualAlloc( 0, $2000, $1000, $40 );
 memcpy( cb, s, Length(s) );
result := cb;
end;

Procedure mytimerproc1(h:longword; msg:longword; idevent:longword; dwTime:longword);
Begin
    StatLabel.Caption:=WizardForm.FileNamelabel.Caption;
End;

procedure InitializeWizard();
begin
  StatLabel:= TLabel.Create(WizardForm);
  StatLabel.Parent:= WizardForm.InstallingPage;
  StatLabel.AutoSize:= true;
  StatLabel.SetBounds(ScaleX(20), ScaleY(100), ScaleX(250), ScaleY(18));
  StatLabel.Transparent:= true;
  StatLabel.WordWrap:= false;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.FileNamelabel.Hide;
settimer(0,0,1,sh_wrap(@mytimerproc1));
end;
end;
 

urban

Старожил
Бахытжан почти у каждой игры есть реестр,так что может там есть строчка которая отвечает за язык
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху