PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 [126] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

Rikill
01-08-2011, 17:09
Neutron,
ваще так надо:

var
welcomelabel1, welcomelabel2: tlabel;
procedure InitializeWizard();
WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(100), ScaleY(85), ScaleX(350), ScaleY(45));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='arial';
Font.Size:= 11;
Font.Color:=$FFFFFF;
Caption:='дарова васяня!!';
Parent:=WizardForm;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do begin
AutoSize:=False;
SetBounds(ScaleX(100), ScaleY(140), ScaleX(344), ScaleY(40));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:=fontname;
Font.Size:= 11;
Font.Color:=$FFFFFF;
Caption:= 'закрой все приложение не будь лохом!';
Parent:=WizardForm;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
welcomelabel1.hide;
welcomelabel2.hide;
case CurPageID of
wpWelcome: begin
WelcomeLabel1.Show;
WelcomeLabel2.Show;
end;
end;
end;

No4noylis
01-08-2011, 17:15
Rikill, Можно впринцепе и так, но зачем эти лейбы заново создавать если они уже есть?Просто меняешь Parent как я написал и все:)

VASYAKRN
01-08-2011, 17:15
пожалста добавте к моему скрипту ботву и одно изображение для примера в скрипт http://inno.at.ua/12.7z

insombia
01-08-2011, 18:46
Как сделать чтобы возле создания значков и установки припустим дирекста были три линии просто забыл как оно называется правильно

LinkOFF
01-08-2011, 19:45
Если вот эти линии http://i26.fastpic.ru/big/2011/0801/3f/017e03ee0cd3a4aaca9bb0445d89b13f.jpg
то вот так


[Setup]
ShowTasksTreeLines=true

И у меня вопрос
Как мне добавить проверку памяти на винчестере

Rikill
01-08-2011, 21:00
VASYAKRN, флудить харэ

nik1967
01-08-2011, 21:11
LinkOFF, может быть места? Если да, то как то так:
#define NeedSize "400427"
#define TotalNeedSize "500427"

[Setup]
AppName=NeedSize
AppVerName=TotalNeedSize
DefaultDirName={pf}\NeedSize
DefaultGroupName=NeedSize

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

[_Code]
//******************************************* [ начало Место для установки ] ***************************************************//

Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

var
FreeMB, TotalMB: Cardinal;
NeedSize, TotalNeedSize:Integer; TotalNeedSpaceLabel,NeedSpaceLabel,FreeSpaceLabel: TLabel;

Function MbOrTb(Byte: Extended): String;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' Гб' else
Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' Тб';
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
NeedSpaceLabel.Caption := 'Игра займет на диске: '+ MbOrTb(NeedSize);
TotalNeedSpaceLabel.Caption := 'Для распаковки требуется: '+ MbOrTb(TotalNeedSize);
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ MbOrTb(FreeMB);
WizardForm.NextButton.Enabled:= (FreeMB>TotalNeedSize);
WizardForm.NextButton.Enabled:= (FreeMB>NeedSize);
if (FreeMB<TotalNeedSize) then
FreeSpaceLabel.Font.Color:=clRed else
FreeSpaceLabel.Font.Color:=WizardForm.Font.Color;
if (FreeMB<NeedSize) then
FreeSpaceLabel.Font.Color:=clRed else
FreeSpaceLabel.Font.Color:=WizardForm.Font.Color;
end;

procedure InitializeWizard();
begin
NeedSize := {#NeedSize};
TotalNeedSize := {#TotalNeedSize};

WizardForm.DiskSpaceLabel.Hide;

TotalNeedSpaceLabel := TLabel.Create(WizardForm);
TotalNeedSpaceLabel.Parent := WizardForm.SelectDirPage;
TotalNeedSpaceLabel.SetBounds(ScaleX(5), ScaleY(200), ScaleX(209), ScaleY(13));

FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
FreeSpaceLabel.SetBounds(ScaleX(5), ScaleY(180), ScaleX(209), ScaleY(13));

NeedSpaceLabel := TLabel.Create(WizardForm);
NeedSpaceLabel.Parent := WizardForm.SelectDirPage;
NeedSpaceLabel.SetBounds(ScaleX(5), ScaleY(220), ScaleX(209), ScaleY(13));

WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
end;

//******************************************* [ конец Место для установки ] ***************************************************//

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then GetFreeSpaceCaption(nil);
end;

insombia
01-08-2011, 23:32
Как сделать чтобы когда запускаешь игру то игра запускалась сразу с высоким приоритетом?Код какой то или что?
P.S.Видел такое в репаке assassin's creed brotherhood от механиков

murlakatamenka
01-08-2011, 23:49
insombia, недавно кто-то выкладывал скрипт SetPriorityClass.iss
#define GameName "name"

[setup]
AppName={#GameName}
AppVersion=1.0
DefaultDirName={pf}\{#GameName}

[_code]

const
NORMAL_PRIORITY_CLASS = $00000020;
IDLE_PRIORITY_CLASS = $00000040;
HIGH_PRIORITY_CLASS = $00000080;
REALTIME_PRIORITY_CLASS = $00000100;

function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL;
external 'SetPriorityClass@kernel32';

function GetCurrentProcess: THandle;
external 'GetCurrentProcess@kernel32';

procedure InitializeWizard();
begin
SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS); //установка приоритета для инсталлятора.
end;
или вот скачать с rghost (http://rghost.ru/7854431)

Rikill
02-08-2011, 01:01
insombia, а не мог бы ты объяснить какая разница от этих приоритетов?

insombia
02-08-2011, 10:47
Rikill если запустить игру с высоким приоритетом она лучше идет меньше виснет

R.i.m.s.k.y.
02-08-2011, 11:02
если запустить игру с высоким приоритетом она лучше идет меньше виснет »
спорное утверждение, наоборот если игруха будет иметь слишком высокий приоритет то системным и прочим процессам будет меньше ресурсов, а ведь мы не в ДОСе живем, игрухи зависят от системных процессов, ресурсы которых игруха с повышенным приоритетом и отожрет

винды давно уже различают запуск полноэкранного приложения и переключают на него что можно дать "здесь и сейчас"
единственно что может пригодится - Set CPU Affinity для старых прог, не держащих многоядренность, тогда эта утилитка пригвоздит процесс к заданному ядру, да и то толку от нее только в ХР, виста и семерка это уже умеют делать сами.

Raf-9600
02-08-2011, 12:44
Ктонить подскажет, как сделать чтоб определённый файл устанавливался только в случае если пользователь выбрал два компонента?

Т.е. если к примеру так указать:
Source: d2speech.mpq; DestDir: {app}; Components: Voice\English Text\Russian
То файл установиться если выбран хотябы какой-то один из перечисленных компонентов, а мне нужно чтоб он устанавливался только если выбраны оба.

R.i.m.s.k.y.
02-08-2011, 13:04
Raf-9600, Components: Voice\English and Text\Russian

insombia
02-08-2011, 13:55
А как лучше всего сжимать игру через инно указывая просто папку с игрой или все файлы игры?Просто когда то распаковал установку лицензии alice madness returns то там все файлы игры были а не просто папка с игрой,игра сама занимала до 10 гб а инсталятор 6 с лишним

R.i.m.s.k.y.
02-08-2011, 14:47
А как лучше всего сжимать игру через инно указывая просто папку с игрой или все файлы игры »
сли нету скрытых или системных файлов внутри, то изомонопенисcуально :), можно указать одну папку и флаги recurseallsubdirs createallsubdirs
только учти, что если укажешь одну папку и поставишь в этой же строчке After/before install, то процедура под After/before install будет отрабатывать НАД КАЖДЫМ файлом в папке, что сильно замедлит установку при большом кол-ве мелких файлов
при указании папки целиком скрытые и системные подпапки/файлы пропускаются, если их нужно добавить - добавляй каждый поотдельности

LinkOFF
02-08-2011, 16:48
Подскажите как мне сделать чтоб при установке проценты были полными.Например не 16.4% а просто 16% и так далее (17%,18%...)

LinkOFF
02-08-2011, 18:23
Это не оно? »
Сам не знаю.Вроде оно

saha1010
02-08-2011, 18:35
Помогите сделать скрипт который будет только записывать 2 значения в реестр которые при установке должен будет ввести сам пользователь.

Например сюда
HKEY_LOCAL_MACHINE\SOFTWARE\ supesGame \\ name REG_SZ ...
HKEY_LOCAL_MACHINE\SOFTWARE\ supesGame \\Key REG_SZ ....

R.i.m.s.k.y.
02-08-2011, 18:41
Помогите сделать скрипт который будет только записывать 2 значения в реестр которые при установке должен будет ввести сам пользователь. »
на визуалбейсике это и то проще будет




© OSzone.net 2001-2012