PDA

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


Страниц : 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

Nordek
07-08-2014, 10:56
Перейдите в Дизайнер диалогов:
http://i5.imageban.ru/thumbs/2014.08.07/6884d24a958e5eddb656830de15df0bb.png (http://i5.imageban.ru/out/2014/08/07/6884d24a958e5eddb656830de15df0bb.png)

Выберите SelectDirPage (хотя, не обязательно т.к действует для всех форм):
http://i6.imageban.ru/thumbs/2014.08.07/f6019f383320e0b67a98d12417b9d5c1.png (http://i6.imageban.ru/out/2014/08/07/f6019f383320e0b67a98d12417b9d5c1.png)

Кликните левой кнопкой мыши в область WizardForm:
http://i4.imageban.ru/thumbs/2014.08.07/e017350c76dbb5d2309d32b1271a78ef.png (http://i4.imageban.ru/out/2014/08/07/e017350c76dbb5d2309d32b1271a78ef.png)

Ухватите левой кнопкой мыши, правый нижний край основной формы:
http://i4.imageban.ru/thumbs/2014.08.07/c189becd069087d03908f98ac4de5b05.png (http://i4.imageban.ru/out/2014/08/07/c189becd069087d03908f98ac4de5b05.png)

и не отпуская левой кнопкой мыши, растяните основную форму:
http://i1.imageban.ru/thumbs/2014.08.07/cb36cd7b69ed0ca99d386c00b2b6173b.png (http://i1.imageban.ru/out/2014/08/07/cb36cd7b69ed0ca99d386c00b2b6173b.png)

Теперь: в зависимости от размера основной формы, вам понадобится перенести нужные вам элементы (если имеется в этом необходимость).
Например: "Кнопки" и "Bevel".
Для того чтоб перенести сразу несколько элементов: на клавиатуре зажмите клавишу SHIFT.
Не отпуская клавиши SHIFT, левой кнопкой мыши выберите нужные вам элементы; Ухватите левой кнопкой мыши элемент и передвиньте в нужную вам область:
http://i6.imageban.ru/thumbs/2014.08.07/9550b177b9551ecbe8cef5bbc636438c.png (http://i6.imageban.ru/out/2014/08/07/9550b177b9551ecbe8cef5bbc636438c.png)

Как видите на рисунке, элементы перенесены:
http://i4.imageban.ru/thumbs/2014.08.07/2f8b597e3eb1d5e0ad9c6623c9737ddf.png (http://i4.imageban.ru/out/2014/08/07/2f8b597e3eb1d5e0ad9c6623c9737ddf.png)

Теперь: справа из списка выберите OuterNotebook:
http://i6.imageban.ru/thumbs/2014.08.07/057f4ab6592b8f37598463dc57b06647.png (http://i6.imageban.ru/out/2014/08/07/057f4ab6592b8f37598463dc57b06647.png)

ухватите за правый нижний край выбранной формы, левой кнопкой мыши:
http://i4.imageban.ru/thumbs/2014.08.07/fef2f0e53e1e022fa8d38fc80dee7f32.png (http://i4.imageban.ru/out/2014/08/07/fef2f0e53e1e022fa8d38fc80dee7f32.png)

и не отпуская левую кнопку мыши, растяните форму:
http://i4.imageban.ru/thumbs/2014.08.07/dc88964002ebb71950225aa38f637dbf.png (http://i4.imageban.ru/out/2014/08/07/dc88964002ebb71950225aa38f637dbf.png)

Вот что получилось:
http://i4.imageban.ru/thumbs/2014.08.07/30bdf076d28289c622c9d342c2726c6b.png (http://i4.imageban.ru/out/2014/08/07/30bdf076d28289c622c9d342c2726c6b.png)

Теперь, из списка выберите InnerNotebook:
http://i6.imageban.ru/thumbs/2014.08.07/bbadf45d64280bdb3a30baad23b4883d.png (http://i6.imageban.ru/out/2014/08/07/bbadf45d64280bdb3a30baad23b4883d.png)

ухватите за правый нижний край выбранной формы, левой кнопкой мыши:
http://i6.imageban.ru/thumbs/2014.08.07/74b762cb0912969a7c354a59c170436a.png (http://i6.imageban.ru/out/2014/08/07/74b762cb0912969a7c354a59c170436a.png)

и не отпуская левую кнопку мыши, растяните форму:
http://i1.imageban.ru/thumbs/2014.08.07/4172f732d43defad8c881db7d78c36c2.png (http://i1.imageban.ru/out/2014/08/07/4172f732d43defad8c881db7d78c36c2.png)

Полученный итог:
http://i6.imageban.ru/thumbs/2014.08.07/dec7f040dfc8c59e8bdecae0b0f7461e.png (http://i6.imageban.ru/out/2014/08/07/dec7f040dfc8c59e8bdecae0b0f7461e.png)

Raz3r
07-08-2014, 11:13
Nordek, вот теперь получилось! Пока не начал выделять их именно в правом окне. До этого нажимал на окно мышкой и пытался передвинуть. Сразу бы написали, что в самом окне их выделять не нужно, иначе они не разблокируются. Откуда мне было знать, что есть разница.

Irenis
07-08-2014, 14:00
Добрый день! Подскажите пожалуйста, в чем может быть причина. Я делаю установщики игр, файлы запаковываю FreeArc-ом в формате bin. Но последнее время что то пошло не так. Практически любой созданный установщик при распаковке зависает на определенном проценте и все, дальше никак не хочет распаковываться. Уже и саму программу FreeArc переустанавливала, не помогло. Не могу понять, в чем может быть причина, ведь раньше все делала точно так же и все было отлично. Может подскажите.
И посоветуйте, пожалуйста, какую еще программу можно использовать для создания архива с расширением bin? И если использовать другую программу, то тогда получается и скрипт нужен другой?

vint56
07-08-2014, 14:09
Irenis, укажи метод сжатия

Irenis
07-08-2014, 14:40
Да метод обычный. Захожу в папку с игрой, выделяю все файлы–>добавить в архив, arc меняю на bin и жму ОК. Запаковка происходит нормально, но при распаковке зависает.
Если же делать другим методом 115892, то все получается. Этот файл мне тоже тут на форуме дали, за что огромное спасибо. Но так запаковка происходит намного дольше. Поэтому и спрашиваю, альтернативные методы создания этих bin. :blush2:

Raz3r
07-08-2014, 15:01
Подскажите как сделать аналогичный чекбокс?
var
DpoLabel: TLabel;
dpo :HWND;
hBtn: TObject

function DpoChecks: Boolean;
begin
Result:= BtnGetChecked(dpo);
end;

procedure DpoOnClick(hBtn: TObject);
begin
BtnSetChecked(dpo, not BtnGetChecked(dpo));
if BtnGetChecked(dpo) then dpolbl.Font.Color:= ${#Color} else dpolbl.Font.Color:= clgray;
end;

procedure DpoOnClick1(hBtn:HWND);
var
Check:boolean;
begin
Check:=BtnGetChecked(hBtn);
if Check then DpoLabel.Font.Color:=${#Color} else DpoLabel.Font.Color:=-16777199;
end;

procedure DpoLblClick(hBtn: TObject);
begin
BtnSetChecked(dpo, not BtnGetChecked(dpo));
DpoOnClick1(dpo);
end;

procedure Wzf;
DpoLabel:=TLabel.Create(WizardForm);
with DpoLabel do
begin
Top:= ScaleY(207);
Left:= ScaleX(405);
Width:= ScaleX(400);
Height:= ScaleY(15);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 10
Font.Style := [fsBold];
Font.Color:=${#Color};
Transparent:= true;
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:DPO}');
OnClick:= @DpoLblClick;
end;


Какой ключ указать в командной строке, чтоб автоматический запустилась установка DirectX с отображением прогресс-бара. Ввожу /SILENT установка проходит полностью скрытой.
Как узнать где в реестре Steam прописывает пути к файлам игр? Собираюсь сделать автоустановку в эту библиотеку.
Извините что вопросами засыпал, но я лазил в гугле и ничего вразумительного не нашел, мож здесь кто знает?

vint56
07-08-2014, 16:10
Irenis, но там есть профили по методу сжатия
пример
Максимальное (требует 1 гб ОЗУ для распаковки): -mx -ld800m
Ультра (требует 2 гб ОЗУ для распаковки): -mx -ld1600m
Высокое: -m5
Нормальное: -m4
Быстрое: -m3
Нормальное: -m2
Со скоростью HDD: -m2

Le9ent
07-08-2014, 18:10
Вот возник вопрос еще один.

К примеру в системе масштаб шрифтов - 100%
Есть выставить 125 - 150% то некоторые элементы масштабируются а вот фоновое изображение нет.

Кнопки, лейболы, полоса прокрутки - масштабируются:



with WizardForm.NextButton do begin
Left:=ScaleX(10);
Top:=ScaleY(565);
Width:=ScaleX(90);
Height:=ScaleY(25);
Parent:=WizardForm;
end;



Фоновое изображение не масштабируется:



var
Logo, Fon:TBitmapimage;

ExtractTemporaryFile('Fon.bmp');
WizardForm.Width:=ScaleX(600);
WizardForm.Height:=ScaleY(600);

Fon:=TBitmapImage.Create(WizardForm);
with Fon do begin
Left:=ScaleX(0);
Top:=ScaleY(0);
Width:=ScaleX(600);
Height:=ScaleY(600);
Parent:=WizardForm;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\Fon.bmp'));
end;



Какие параметры можно добавить для изображения что бы фоновый рисунок масштабировался с остальными элементами?

Irenis
07-08-2014, 19:29
Irenis, но там есть профили по методу сжатия »
А, ну это я видела. В принципе ничего не меняю, стоит нормальное сжатие, вот этим методом и сжимаю. Удивляет то, что раньше ведь работало все. Сейчас делаю все аналогично, но что то идет не так при распаковке.

vint56
07-08-2014, 19:33
Irenis,
1 что за игра
2 как я понял ты сжимаеш Нормальное: -m4
3 через распаковываеш файлы пример через isdone

Можеш использовать вот эту строчку для сжатия это чистый lzma без внешних External compressor такие как precomp и srep
Требуется 512 мегабайт для сжатий и также для распаковки
lzma:512mb:normal:128:mc64:lc8
http://i68.fastpic.ru/big/2014/0807/b6/aea9d5303517bf113c016abec89c61b6.png (http://fastpic.ru/)

Kashtan007
07-08-2014, 20:15
Всем привет, посоветуйте несколько способов, как правильно использовать собственный скин в установщике (.cjstyles) на юникоде.

Заранее спасибо за ответ.

Raz3r
07-08-2014, 20:29
Прошу помочь с вопросами.
1. Подскажите как сделать второй чекбокс с такими же параметрами?
var
DpoLabel: TLabel;
dpo :HWND;
hBtn: TObject

function DpoChecks: Boolean;
begin
Result:= BtnGetChecked(dpo);
end;

procedure DpoOnClick(hBtn: TObject);
begin
BtnSetChecked(dpo, not BtnGetChecked(dpo));
if BtnGetChecked(dpo) then dpolbl.Font.Color:= ${#Color} else dpolbl.Font.Color:= clgray;
end;

procedure DpoOnClick1(hBtn:HWND);
var
Check:boolean;
begin
Check:=BtnGetChecked(hBtn);
if Check then DpoLabel.Font.Color:=${#Color} else DpoLabel.Font.Color:=-16777199;
end;

procedure DpoLblClick(hBtn: TObject);
begin
BtnSetChecked(dpo, not BtnGetChecked(dpo));
DpoOnClick1(dpo);
end;

procedure Wzf;
DpoLabel:=TLabel.Create(WizardForm);
with DpoLabel do
begin
Top:= ScaleY(207);
Left:= ScaleX(405);
Width:= ScaleX(400);
Height:= ScaleY(15);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 10
Font.Style := [fsBold];
Font.Color:=${#Color};
Transparent:= true;
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:DPO}');
OnClick:= @DpoLblClick;
end;

2. Какой ключ указать в командной строке, чтоб автоматический запустилась установка DirectX с отображением прогресс-бара. Ввожу /SILENT установка проходит полностью скрытой.
3. Как узнать где в реестре Steam прописывает пути к файлам игр? Собираюсь сделать автоустановку в эту библиотеку.
Извините что вопросами засыпал, но я лазил в гугле и ничего вразумительного не нашел, мож здесь кто знает?

Irenis
07-08-2014, 22:12
lzma:512mb:normal:128:mc64:lc8 »
В общем, так тоже ничего не получается, при запуске установщика пишет что то типа неверно задан входной файл. Я так понимаю, что просто в скрипте тоже что то нужно править. В общем ладно, если ставить такое сжатие, то тоже медленно сжимается, а мне нужно как можно быстрее :)
Если нету другого способа сделать архив bin, то может кто поможет сделать такое же
Если же делать другим методом Arc.7z, »
только чтобы создавалось быстрее. У меня вообще на ноутбуке ОЗУ 6Гб, поэтому я так понимаю, можно же сделать такой же архив, в котором создание bin файла делалось бы быстрее, но в то же время распаковывалось как и прежде. Спасибо :)

vint56
07-08-2014, 22:30
Irenis, вообще то зависит не от памяти а от процессора но у lzma можно поставить всего 2 потока тогда используй 7zip там есть lzma2 можно поставить все потоки isdone 7z тоже поддерживает
http://i66.fastpic.ru/big/2014/0807/e8/ff097318ead653c6b1c1e2fdbdb6e3e8.png (http://fastpic.ru/)

Irenis
07-08-2014, 23:17
vint56, Спасибо большое, что помогаете, но мне все равно не все понятно. Если использовать 7zip, то тогда и скрипт нужен другой? Где его можно взять?
И вот еще 7z тоже поддерживает »
мне как бы 7z и не надо. В предыдущем сообщении цитированием себя же я просто хотела дать ссылку на это сообщение
... ». Там есть вложение (повторно его почему то не получилось залить), мне когда то дали этот архив тут же на форуме. И вот хотелось бы, если это возможно, такой же архив, но такой, в котором бы запаковка происходила быстрее.
Извините за сумбур, просто мне тех элементарных знаний по созданию установщиков было вполне достаточно, больше как бы и не нужно. А сейчас столкнулась с проблемой и даже не знаю, как это все правильно объяснить :unsure:

habib2302
07-08-2014, 23:43
Доброе время суток. Как сделать паузу между двумя функциями пока 1 первая функция не завершит свою работу?
function UninstallMyApp1(): Boolean;
var
Buff: String;
i: Integer;
begin
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}', 'UninstallString', Buff );
if not Result then Result := not FileExists(RemoveQuotes(Buff));
if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', mbError, MB_YESNO) = IDYES then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}', 'UninstallString', Buff );
end;
end;

function UninstallMyApp2(): Boolean;
var
Buff: String;
i: Integer;
begin
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then Result := not FileExists(RemoveQuotes(Buff));
if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', mbError, MB_YESNO) = IDYES then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
end;
end;

function InitializeSetup(): Boolean;
begin
Result := UninstallMyApp1();
Result := UninstallMyApp2();
end;
как сделать что не появлялись MsgBox во время тихой установки и деинсталляторы запускались в тихом режиме

vint56
07-08-2014, 23:59
Irenis, ты просиш чтобы быстре сжимать ну 7 zip есть режим lzma2 что дает использовать не 1 ядро если есть 4 или 8 соответственно значит и сжатие будет быстрее
еслиты используеш isdone скрипт менять не надо когда будет паковать смениш просто расширения файла 7z на bin
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data-A.bin'), ExpandConstant('{app}'), false, '') then break;
И еще тебя интересует хорошое сжатие или просто немного пожать Быстрое: -m3 или Нормальное: -m4

Raz3r
08-08-2014, 00:14
Ладно, всё ясно с вами, игнор включили, в падлу помочь значит. Пускай Nordek и дальше тут несёт всякую чушь про "лень"и копипастит это каждым сообщением, вместо того, чтобы адекватную помощь оказать. Проще самому всё сделать! Нахера этот форум нужен...

Irenis
08-08-2014, 12:06
Ладно, всё ясно с вами, игнор включили, в падлу помочь значит »
Ну вы не обижайтесь :) Я думаю еще кто то обязательно подскажет. Я бы вам с радостью помогла, если бы сама что то понимала :)

R.i.m.s.k.y.
08-08-2014, 12:13
Raz3r,
я ответа на вопрос "зачем использовать фриарк если такие же алгоритмы 7зип использованы в инно" не знаю
и на остальные тоже
дирекс ставится только так, можешь еще попробовать с параметром /Q но это теже фаберже

как сделать что не появлялись MsgBox во время тихой установки и деинсталляторы запускались в тихом режиме »

if not WizardSilent then msgbox...
к тому же выше же ответили

Как сделать паузу между двумя функциями пока 1 первая функция не завершит свою работу? »
оно так и есть: пока предыдущая функция не отработает следующая не начнется, если конешно ничего не накручено для одновременного запуска
а флаг ewWaitUntilTerminated у тебя уже стоит

Подскажите как сделать второй чекбокс с такими же параметрами? »
я юзаю inno form designer из расширенного китайского компилятора
все есть в инноультра




© OSzone.net 2001-2012