PDA

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


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

Winstan
16-12-2009, 15:42
Я так полагаю, что изображение загружено на какой-то контрол, если да то:
UninstallProgressForm.ProgressBar.Parent:= ваш контрол; »
За это спасибо,а как можно убрать стандартное сообщение переде удаление и после?
Что бы их просто не было запустил унинстал.ехе появилась стр. с пб. удалилось и закрылось.

R.i.m.s.k.y.
16-12-2009, 17:21
В дополнение к предыдущему вопросу моему
как можно в коде обработать выбор пользователя в Components?

Serega
16-12-2009, 23:12
как можно убрать стандартное сообщение переде удаление и после? »
Написал пример, для Restools, можно и для обычной, но там надо использовать InnoCallBack.dll...

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

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

[Code]
const
BM_CLICK = $00F5; // это обычный клик
WM_CLOSE = $0010; // понятно из названия

// Осуществляет поиск дочернего окна
function FindWindowEx(Parent, Child: HWND; ClassName, WindowName: PChar): HWND;
external 'FindWindowExA@user32.dll stdcall';

var
Timer: TTimer;
msg: string;
Wnd, WndEx: HWND;
count: Integer;

procedure OnTimer(Sender: TObject);
begin
Wnd:= FindWindowByWindowName(msg); // ищем сообщение
if Wnd > 0 then // если нашли
if count = 1 then // если первое уже находили, то
PostMessage(Wnd, WM_CLOSE, 0, 0) // просто закрываем
else
begin
WndEx:= FindWindowEx(Wnd, 0,'Button', SetupMessage(msgButtonYes)); // ищем кнопку
if WndEx > 0 then // если нашли
begin
PostMessage(WndEx, BM_CLICK, 0, 0); // нажимаем кнопку
count:= 1; // указываем что первое сообщение уже нашли
Timer.Enabled:= False; // отключаем таймер
end;
end;
end;

function InitializeUninstall(): Boolean;
begin
Result:= True;

// задаём переменной текст окна
msg:= SetupMessage(msgUninstallAppFullTitle);
StringChange(msg, '%1', '{#SetupSetting('AppName')}');

Timer:= TTimer.Create(nil);
with Timer do
begin
OnTimer:= @OnTimer;
Interval:= 1;
Enabled:= True;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then Timer.Enabled:= True; // включаем таймер ещё раз
end;

AH4OyC
16-12-2009, 23:15
http://s58.radikal.ru/i159/0911/2e/f3b38f0ae147t.jpg (http://radikal.ru/F/s58.radikal.ru/i159/0911/2e/f3b38f0ae147.jpg.html) http://s15.radikal.ru/i188/0911/32/c6a859841f37t.jpg (http://radikal.ru/F/s15.radikal.ru/i188/0911/32/c6a859841f37.jpg.html)

Как сделать так чтобы передвинуть текст на всех страницах по разному(как на скринах)? И как сделать размер и другой шрифт всего текста на всех страницах?

ЗЫ. Я начинающий пользователь так что если можно можете расписать в скрипте как для чайника.

Winstan
16-12-2009, 23:38
Serega,
Все понял фишку происходит мили секундное появление и переходит на другую страницу. Но все же глаз человека их видит. Интервал больше ставишь происходит по стондарту, норм интервал где то коло 100 еще более мения махом мелькает.
Но все же если бы была возможность их отключить (то их бы отключили) и написать новую форму то другое дело :) а так значит не как.
Спасибо за вариант решения данной проблемы..

Serega
17-12-2009, 00:14
при параметре /auto инсталлер не отсвечивал лишними окнами »

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

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

[Code]
function IsParamStr: Boolean;
var
i: Integer;
str: string;
begin
Result:= False;
for i:= 0 to ParamCount do
str:= str + ParamStr(i);
if Pos(Lowercase('/auto'), Lowercase(str)) > 0 then
Result:= True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID > 0) and IsParamStr then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;


но при параметре /auto в скрипте должны отрабатываться свои "ветки") »
Если где-то в коде, то if IsParamStr then - какое-то дествие...
Если выполнять или нет какие-то секции в скрипте, задавайте с помощью Check:

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Check: IsParamStr; Flags: ignoreversion


как можно в коде обработать выбор пользователя в Components? »

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

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

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Code]
procedure ClickCheck(Sender: TObject);
var
msg: string;
begin
msg:= 'Был клик по компоненту:' + #13#10;
msg:= msg + 'Номер: ' + IntToStr(WizardForm.ComponentsList.ItemIndex) + #13#10;
msg:= msg + 'Описание: ' + WizardForm.ComponentsList.ItemCaption[WizardForm.ComponentsList.ItemIndex];
MsgBox(msg, mbInformation, MB_OK);
end;

procedure InitializeWizard();
begin
WizardForm.ComponentsList.OnClickCheck:= @ClickCheck;
end;

R.i.m.s.k.y.
17-12-2009, 09:49
Serega
Спасибо! Будем адаптировать

R.i.m.s.k.y.
17-12-2009, 17:35
Уже косметический вопрос - как увеличить размер окна выбора компонентов? Чтобы вместе с белым списком этих компонентов, окно то я растянул.

И заодно подскажите, как поменять текст на странице приветсвия? (самой первой после запуска экзешника)

Подозреваю, что ответит Serega, душевное ему спасибо!

YURSHAT
17-12-2009, 17:41
И заодно подскажите, как поменять текст на странице приветсвия? »

WelcomeLabel1.Caption:= 'бла-бла-бла'
WelcomeLabel2.Caption:= 'бла-бла-бла'

или так

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
Top:= ScaleY(270);
Left:= ScaleX(70);
Width:= ScaleX(650);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Georgia';
Font.Size:= 11
Font.Style := [fsBold, fsItalic];
Font.Color:=ClWhite;
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= 'Отключите всю байду, чтоб игра нормально проинсталлилась';
end;

Молодой
18-12-2009, 13:30
Подскажите как реализовать вот такую установку
http://i013.radikal.ru/0912/69/fb5ad4733324t.jpg (http://radikal.ru/F/i013.radikal.ru/0912/69/fb5ad4733324.jpg.html)
Заранее спасибо за ответ

Dark Engel
18-12-2009, 13:52
Добрый всем день. Два вопроса:

1. Как определить время жизни информационных окошек? (То есть повисело например 5 сек и закрылось, скрипт продолжает выполнение.)

Пример окна:
...
begin
msg:= 'Установлена не та версия .';
Result:= False;
MsgBox(msg, mbInformation, MB_OK);
end
...

2. Как убрать во время распаковки файлов извещение какие файлы и куда распаковываются. Оставить только надпись "идет распаковка".

Заранее спасибо за помощь.

YURSHAT
18-12-2009, 13:58
2. Как убрать во время распаковки файлов извещение какие файлы и куда распаковываются. Оставить только надпись "идет распаковка". »

procedure InitializeWizard();
begin
FilenameLabel.Hide;
end;

YURSHAT
18-12-2009, 14:03
Подскажите как реализовать вот такую установку »
Это скрипт для распаковки архивов FreArc

Молодой
18-12-2009, 14:22
Внутренняя ошибка как бороться?
http://s49.radikal.ru/i124/0912/6a/54ff7cddb4d9.png

Dark Engel
18-12-2009, 14:41
Молодой, А сам скриптик выложи. У тебя этот файл видимо куда то не туда распаковывается

YURSHAT

Код:
procedure InitializeWizard();
begin
FilenameLabel.Hide;
end; »


Выдает неизвестный идентификатор FilenameLabel

Молодой
18-12-2009, 15:21
Ошибку исправил, но вот понят ьне могу, как несколько архивов добавить

A1EXXX
18-12-2009, 15:28
Молодой, Source: {src}\*.arc; DestDir: {app}\ArcFiles; Flags: external dontcopy
{#SourceToProgress}
Эта строка свидетельствует о том, что все архивы, лежащие рядом с setup.exe, будут распакованы :)

Молодой
18-12-2009, 15:34
Вот спасибо большое!

Молодой
18-12-2009, 15:45
Не как не могу разобраться где указывать папку с архивами, или сами архивы.
Скрипт прилагается, подскажите пожалуйста.

YURSHAT
18-12-2009, 15:54
Выдает неизвестный идентификатор FilenameLabel »
procedure InitializeWizard();
begin
WizardForm.FilenameLabel.Hide;
end;




© OSzone.net 2001-2012