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

R.i.m.s.k.y.
09-10-2011, 13:45
Rikill, если есть папка D:\games - по умолчанию предлагать туда устанавливать (путь в окне выбора папки уже D:\Games\Игра), нету папки - в програмфилесы

Шрифты в обоих двух случаях отображаются нормально

VinTagE
09-10-2011, 14:01
Rikill, Эммм, Font_Classic.exe мой вариант ISFont.dll, да?
Протестировал всё работает нормально!

Rikill
09-10-2011, 14:03
VinTagE, да. Это твой. Тебя указать в моём посте? Он не у всех работает.

VinTagE
09-10-2011, 14:07
Rikill, Тебя указать в моём посте?
Как хочешь =)
Он не у всех работает.
Хотя мне писали что "ISFont.dll" работает достаточно хорошо.

Raf-9600
09-10-2011, 14:41
значит не правильно сделал из простого инно в рестулз. » Верно, все работает. Но проблема теперь в том, что комментариями, закрываются сведения, о необходимом месте на винчестере. Может ктонить сделать, чтоб комментарии отображались не снизу, а в виде боковушки, как при использовании DescCtrl.dll ?

http://i27.fastpic.ru/thumb/2011/1009/1c/ccfeda2c8e48023d35f019a0d7c2d01c.jpeg (http://fastpic.ru/view/27/2011/1009/ccfeda2c8e48023d35f019a0d7c2d01c.jpg.html)

Rikill
09-10-2011, 14:48
Raf-9600, InfoPanel и пр просто подвинь

Edison007
09-10-2011, 14:55
Друзья, Shegorat работает над библиотекой для правильного отображения шрифта в инсталляторе. Просим протестировать. В архиве два инсталлятора. Простой и от Shegorat. Напишите о результатах работ обеих библиотек! »
мне интересно, почему ты здесь об этом пишешь?

Rikill
09-10-2011, 14:55
Edison007, меня Gnom попросил распространить.

Raf-9600
09-10-2011, 14:56
InfoPanel и пр просто подвинь »
Да-да, все проще чем я думал. Нужно просто значения из скрипта для DescCtrl.dll, перенести в текущий http://www.kolobok.us/smiles/light_skin/yahoo.gif

saha1010
09-10-2011, 18:19
Помогите пожал уста вставить 2 слова
НАд двумя строчками которые получаются в этом скрипте.
Введите желаемый ник !!!ТОЛЬКО ЦИФРАМИ или ЛАТИНСКИМИ БУКВАМИ!!
Введите любой пароль !!!ТОЛЬКО ЦИФРАМИ или ЛАТИНСКИМИ БУКВАМИ!!!

Как на рисунке .

; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
var
ISCustomPage1: TWizardPage;
key1: TNewEdit;
key2: TNewEdit;
key3: TNewEdit;
key4: TNewEdit;
user: TNewEdit;

procedure InitializeWizard();
begin
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpWelcome, 'Информация о пользователе', 'Пожалуйста, введите данные о себе.');

{ key1 }
key1 := TNewEdit.Create(WizardForm);
with key1 do
begin
Name := 'key1';

Parent := ISCustomPage1.Surface;
Left := ScaleX(48);
Top := ScaleY(136);
Width := ScaleX(65);
Height := ScaleY(21);

Text := '';
MaxLength := 4; // количество знаков
end;

{ key2 }
key2 := TNewEdit.Create(WizardForm);
with key2 do
begin
Name := 'key2';
Parent := ISCustomPage1.Surface;
Left := ScaleX(136);
Top := ScaleY(136);
Width := ScaleX(65);
Height := ScaleY(21);
Text := '';
MaxLength := 4;
end;

{ key3 }
key3 := TNewEdit.Create(WizardForm);
with key3 do
begin
Name := 'key3';
Parent := ISCustomPage1.Surface;
Left := ScaleX(224);
Top := ScaleY(136);
Width := ScaleX(65);
Height := ScaleY(21);
Text := '';
MaxLength := 4;
end;

{ key4 }
key4 := TNewEdit.Create(WizardForm);
with key4 do
begin
Name := 'key4';
Parent := ISCustomPage1.Surface;
Left := ScaleX(312);
Top := ScaleY(136);
Width := ScaleX(65);
Height := ScaleY(21);
Text := '';
MaxLength := 4;
end;




{ user }
user := TNewEdit.Create(WizardForm);
with user do
begin
Name := 'user';
Parent := ISCustomPage1.Surface;
Left := ScaleX(48);
Top := ScaleY(56);
Width := ScaleX(329);
Height := ScaleY(21);
Text := '';
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
Var
S1, S2: String;
begin
result:=true;
if CurPageID = wpReady then begin//запись после страницы готовности.
S1 := ExpandConstant(key1.Text+'-'+key2.Text+'-'+key3.Text+'-'+key4.Text);
RegWriteStringValue(HKLM, 'Software\GSC Game World\STALKER-COP', 'InstallCDKEY', S1);
RegWriteStringValue(HKLM, 'SOFTWARE\Wow6432Node\GSC Game World\STALKER-COP', 'InstallCDKEY', S1);
S2 := user.Text;
RegWriteStringValue(HKLM, 'Software\GSC Game World\STALKER-COP', 'InstallUserName',S2);
RegWriteStringValue(HKLM, 'SOFTWARE\Wow6432Node\GSC Game World\STALKER-COP', 'InstallUserName',S2);
end;
end; "читать дальше"


http://s017.radikal.ru/i437/1110/95/367b760f79b9t.jpg (http://radikal.ru/F/s017.radikal.ru/i437/1110/95/367b760f79b9.jpg.html)

valyok666
09-10-2011, 18:31
saha1010, так что лейблы не создать новые?

Rikill
09-10-2011, 18:35
valyok666, боюсь он слов таких не знает...

valyok666
09-10-2011, 19:03
Rikill, ну я просто сказал стандартное слово=)

saha1010
09-10-2011, 19:54
valyok666Нет я не знаю что это но догадываюсь что наверно надпись внутри которая будет исчезать при наведении на неё. Думаю вам веднее как сделать лечше.

Gnom_aka_Lexander
09-10-2011, 20:41
Помогите пожал уста вставить 2 слова
НАд двумя строчками которые получаются в этом скрипте. »
Держи.
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[_code]
var
NickPage: TWizardPage;
key: array[0..3]of TNewEdit;
user: TNewEdit;

procedure InitializeWizard();
var
i1,i2:Integer;
begin
NickPage := CreateCustomPage(wpWelcome, 'Информация о пользователе', 'Пожалуйста, введите данные о себе.');

{ key }
for i1:=0 to 3 do begin
key[i1] := TNewEdit.Create(WizardForm);
with key[i1] do begin
Parent := NickPage.Surface;
SetBounds(ScaleX(48+88*i1),ScaleY(136),ScaleX(65),ScaleY(21));
MaxLength := 4; // количество знаков
end;
end;

{ user }
user := TNewEdit.Create(WizardForm);
with user do begin
Parent := NickPage.Surface;
SetBounds(ScaleX(48),ScaleY(56),ScaleX(329),ScaleY(21));
end;

for i2:=0 to 1 do
begin
with TLabel.Create(WizardForm) do begin
Parent := NickPage.Surface;
Transparent := True;
SetBounds(ScaleX(48),ScaleY(20+80*i2),ScaleX(329),ScaleY(30));
case i2 of
0:Caption := 'Введите желаемый ник'+#13#10+'!!!ТОЛЬКО ЦИФРАМИ или ЛАТИНСКИМИ БУКВАМИ!!';
1:Caption := 'Введите любой пароль'+#13#10+'!!!ТОЛЬКО ЦИФРАМИ или ЛАТИНСКИМИ БУКВАМИ!!!';
end;
Alignment := taCenter;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
Var
S1, S2: String;
begin
result:=true;
if CurPageID = wpReady then begin//запись после страницы готовности.
S1 := ExpandConstant(key[0].Text+'-'+key[1].Text+'-'+key[2].Text+'-'+key[3].Text);

RegWriteStringValue(HKLM, 'Software\GSC Game World\STALKER-COP', 'InstallCDKEY', S1);
RegWriteStringValue(HKLM, 'SOFTWARE\Wow6432Node\GSC Game World\STALKER-COP', 'InstallCDKEY', S1);

S2 := user.Text;

RegWriteStringValue(HKLM, 'Software\GSC Game World\STALKER-COP', 'InstallUserName',S2);
RegWriteStringValue(HKLM, 'SOFTWARE\Wow6432Node\GSC Game World\STALKER-COP', 'InstallUserName',S2);
end;
end;

Photon9
09-10-2011, 21:06
Хм, вобщем такой вопросец, как бы так написать скрипт чтобы по выбору устанавливалась нужная папка, тоесть имеем 2 папки имя у обеих base, но одна содержит файл zzpak_russian.pk4 который по сути является zip архивом, а другая содержимое этого файла 2 папки fonts и strings/ Иными словами нужно собрать так чтобы при установке был запрос ставить запакованые или распакованые ресурсы

Gnom_aka_Lexander
09-10-2011, 21:11
Photon9, Содержимое одной из этих папок, должно быть установлено в {app}\base я так понял?
Можно так:
[Files]
Source: base_packed\*; DestDir: {app}\base; Flags: recursesubdirs createallsubdirs; Components: res\pack
Source: base_UNpacked\*; DestDir: {app}\base; Flags: recursesubdirs createallsubdirs; Components: res\UNpack
[Components]
Name: res; Description: Ресурсы программы; Types: full
Name: res\pack; Description: Упакованные; Flags: exclusive
Name: res\UNpack; Description: неупакованные; Flags: exclusive Соответственно, в папку base_packed кладеш упакованные ресурсы (без подпапки base), а в папку base_UNpacked - неупакованные.

nik1967
10-10-2011, 00:53
я смотрю тут есть несколько репакеров игр:
вот вы мучаетесь делаете скрипты с красивыми картинками, музыкой и прочим медиапр0ном, но не знаете чту нужно нам - игрофанам на самом деле, а нужно всего то найти папку d:\games и по-умолчанию предлагать ставить туда, а не с-програмфилесы
такая мелочь зарулит в минуса любую оформлялку, которая еще в половине случаев дает ошибки "Rage out of bounds" »
Есть отличный скрипт от Serega ; скрипт, который определяет логические диски на компьютере и предлагает установить на первый
; логический диск не являющийся системным (если их несколько, в противном случае будет предложен
; системный диск).
; Автор: Serega, http://forum.oszone.net/member.php?userid=88670

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={code:NoSD}\Games\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[_Code]
function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall';
function GetDriveType(lpRootPathName: PChar): Cardinal; external 'GetDriveTypeA@kernel32.dll stdcall';

const
DRIVE_FIXED = 3;

function NoSD(s: string): string;
var
x, bit, i: Integer;
tp: Cardinal;
sd: string;
begin
sd:= ExpandConstant('{sd}');
Result:= sd;
// Вызываем функцию WinAPI
// Функция возвращает битовую маску установленных логических дисков.
// Бит 0 определяет наличие диска А:, бит 1 - диска B и т.д.
x:= GetLogicalDrives;
if x <> 0 then
// цикл по полученным битам переменной X
for i:= 1 to 64 do
begin
// Накладываем битовую маску для выделения бита с поряковым номером 0
bit:= x and 1;
// нашли логический диск...
if bit = 1 then
begin
// определяем тип логического диска
tp:= GetDriveType(PChar(Chr(64 + i) + ':'));
if tp = DRIVE_FIXED then
// если диск не является системным
if Chr(64 + i) <> Copy(sd, 1, 1) then
begin
Result:= Chr(64 + i) + ':';
Break;
end;
end;
// побитовый сдвиг вправо
x:= x shr 1;
end;
end;

R.i.m.s.k.y.
10-10-2011, 07:22
nik1967, спасибо, но я не для себя, я внес предложение репакерам

Rikill
10-10-2011, 14:18
R.i.m.s.k.y., странное предложение :) мне на цэ нравится ставить




© OSzone.net 2001-2012