Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Я так полагаю, что изображение загружено на какой-то контрол, если да то:
UninstallProgressForm.ProgressBar.Parent:= ваш контрол; »
За это спасибо,а как можно убрать стандартное сообщение переде удаление и после?
Что бы их просто не было запустил унинстал.ехе появилась стр. с пб. удалилось и закрылось.
R.i.m.s.k.y.
16-12-2009, 17:21
В дополнение к предыдущему вопросу моему
как можно в коде обработать выбор пользователя в Components?
как можно убрать стандартное сообщение переде удаление и после? »
Написал пример, для 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;
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)
Как сделать так чтобы передвинуть текст на всех страницах по разному(как на скринах)? И как сделать размер и другой шрифт всего текста на всех страницах?
ЗЫ. Я начинающий пользователь так что если можно можете расписать в скрипте как для чайника.
Serega,
Все понял фишку происходит мили секундное появление и переходит на другую страницу. Но все же глаз человека их видит. Интервал больше ставишь происходит по стондарту, норм интервал где то коло 100 еще более мения махом мелькает.
Но все же если бы была возможность их отключить (то их бы отключили) и написать новую форму то другое дело :) а так значит не как.
Спасибо за вариант решения данной проблемы..
при параметре /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, душевное ему спасибо!
И заодно подскажите, как поменять текст на странице приветсвия? »
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;
Подскажите как реализовать вот такую установку
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. Как убрать во время распаковки файлов извещение какие файлы и куда распаковываются. Оставить только надпись "идет распаковка".
Заранее спасибо за помощь.
2. Как убрать во время распаковки файлов извещение какие файлы и куда распаковываются. Оставить только надпись "идет распаковка". »
procedure InitializeWizard();
begin
FilenameLabel.Hide;
end;
Подскажите как реализовать вот такую установку »
Это скрипт для распаковки архивов FreArc
Внутренняя ошибка как бороться?
http://s49.radikal.ru/i124/0912/6a/54ff7cddb4d9.png
Dark Engel
18-12-2009, 14:41
Молодой, А сам скриптик выложи. У тебя этот файл видимо куда то не туда распаковывается
YURSHAT
Код:
procedure InitializeWizard();
begin
FilenameLabel.Hide;
end; »
Выдает неизвестный идентификатор FilenameLabel
Ошибку исправил, но вот понят ьне могу, как несколько архивов добавить
Молодой, Source: {src}\*.arc; DestDir: {app}\ArcFiles; Flags: external dontcopy
{#SourceToProgress}
Эта строка свидетельствует о том, что все архивы, лежащие рядом с setup.exe, будут распакованы :)
Не как не могу разобраться где указывать папку с архивами, или сами архивы.
Скрипт прилагается, подскажите пожалуйста.
Выдает неизвестный идентификатор FilenameLabel »
procedure InitializeWizard();
begin
WizardForm.FilenameLabel.Hide;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC