Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
El Sanchez
05-04-2011, 21:09
Как сделать чтобы инсталлятор примерно на этапе после нажатия на Установить и до распаковки файлов чтобы он переименовал папку '{userdocs}\EA Games\The Sims 2' в '{userdocs}\EA Games\The Sims 2_old' если она есть? »
gigabyte502, к первому устанавливаемому файлу добавляете параметр BeforeInstall:
[Files]
Source: file1.exe; DestDir: {app}; BeforeInstall: RenameFolder
...
Source: fileN.exe; DestDir: {app}
[Code]
procedure RenameFolder;
begin
RenameFile(ExpandConstant('{userdocs}\EA Games\The Sims 2'), ExpandConstant('{userdocs}\EA Games\The Sims 2_old'));
end;
Лександер, я читал там есть прогресс бар но он мне почемуто ненравиться! особенно етот круг под линией прогресса
insombia
05-04-2011, 21:19
Как сделать чтобы установка ушла в левый угол экрана я просто не могу найти,и как сделать чтобы после установки устанавлевался директ и такое разное у меня что-то не получается
Gnom_aka_Lexander
05-04-2011, 22:23
Как сделать чтобы установка ушла в левый угол экрана »
Прогрессбар в маленьком окне В левом нижнем углу (http://forum.ru-board.com/topic.cgi?forum=5&topic=35848&start=2419&limit=1&m=1#1)
EvilAlex
06-04-2011, 07:30
Доброго времени суток форумчане !
Вы кнопки для инсталов сами делаете или же есть какая-то прога ?
Зарание спасибо за ответ ...
Krinkels
06-04-2011, 13:56
EvilAlex
Смотря какие кнопки ты имеешь ввиду. Если текстуры для кнопок то лучше рисовать самому, а если чисто кнопки то тут 2 варианта:
1. Руками
2. Воспользоваться компилятором от китайцев и там использовать редактор. Но опять же придется поработать ручками
:)
EvilAlex
06-04-2011, 16:45
Krinkels, понятно, спосиб .
Gnom_aka_Lexander
06-04-2011, 21:13
Подскажите пожалуйста, есть-ли команда, которая полностью отменить все изменнения, которые внесла процедура? например, процедура создает огромнейшую кучу лейбелов, чекбоксов, эдитов, а по нажатию кнопки все это убирается. на данный момент у меня для этого служит еще одна процедура, которая скрывает элементы, созданные предидущей процедурой. Вопрос - нельзя-ли это както оптимизировать?
какой командой завершить созданную процедуру? »
end;
P.S.
Какой вопрос - такой ответ... :)
Лександер, конечно для каждого случая нужно смотреть, но вот накидал, как пример:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Code]
var
pnl: TPanel;
procedure CreateControl(const ParentControl: TWinControl);
// создаём все контролы
var
i, lLeft, cLeft, aTop: Integer;
begin
aTop := ScaleY(10);
for i := 0 to 14 do
begin
with TLabel.Create(ParentControl) do
begin
Parent := ParentControl;
AutoSize := True;
Left := ScaleX(50);
Top := aTop;
Caption := 'TLabel № ' + IntToStr(i+1);
end;
with TCheckBox.Create(ParentControl) do
begin
Parent := ParentControl;
SetBounds(ScaleX(200), aTop, ScaleX(100), ScaleY(14));
Caption := 'TCheckBox № ' + IntToStr(i+1);
end;
with TEdit.Create(ParentControl) do
begin
Parent := ParentControl;
SetBounds(ScaleX(350), aTop, ScaleX(100), ScaleY(20));
Text := 'TEdit № ' + IntToStr(i+1);
end;
aTop := aTop + ScaleY(21);
end;
end;
function DetectControl(const ParentControl: TWinControl): Boolean;
// проверяем наличие контролов
var
i: Integer;
begin
Result := False;
for i := 0 to ParentControl.ControlCount-1 do
if (ParentControl.Controls[i] is TLabel) or // проверяем, что контрол TLabel
(ParentControl.Controls[i] is TCheckBox) or // проверяем, что контрол TCheckBox
(ParentControl.Controls[i] is TEdit) then // проверяем, что контрол TEdit
begin
Result := True;
Break;
end;
end;
procedure ClearAllControl(const ParentControl: TWinControl);
// уничтожаем все контролы
var
i: Integer;
begin
{ откровенно говоря с repeat..until ерись полнейшая... }
repeat
for i := 0 to ParentControl.ControlCount-1 do
if (ParentControl.Controls[i] is TLabel) or // проверяем, что контрол TLabel
(ParentControl.Controls[i] is TCheckBox) or // проверяем, что контрол TCheckBox
(ParentControl.Controls[i] is TEdit) then // проверяем, что контрол TEdit
{ видимо какой-то глюк, но такое ощущение, что в этой процедуре не происходит задержки и
цикл продолжается не дождавшись выполнения, в связи с чем некоторые контролы остаются }
ParentControl.Controls[i].Free;
until not DetectControl(ParentControl); // чтоб не зависнуть в цикле пришлось сделать доп. проверку
end;
procedure ButtonClick(Sender: TObject);
begin
case TButton(Sender).Tag of
0: CreateControl(pnl);
1: ClearAllControl(pnl);
end;
end;
procedure InitializeWizard();
var
i, aLeft: Integer;
begin
pnl := TPanel.Create(WizardForm);
with pnl do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Align := alClient;
end;
aLeft := ScaleX(100);
for i := 0 to 1 do
begin
with TButton.Create(WizardForm) do
begin
Parent := pnl;
SetBounds(aLeft, WizardForm.CancelButton.Top, ScaleX(150), ScaleY(23));
case i of
0: Caption := 'Создать все контролы';
1: Caption := 'Разрушить все контролы';
end;
OnClick := @ButtonClick;
Tag := i;
aLeft := aLeft + ScaleX(160);
end;
end;
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
end;
EvilAlex
07-04-2011, 13:59
Доброго времени суток !
Как зделать 3 разных кнопки в инстоляторе (Назад, Далее , Установить/Отмена/Завершить/выбор папок) ?
сами кнопки есть: http://rghost.ru/5110713 ...
вот если что скрипт: http://rghost.ru/5110569
вот что выдает инстал при запуске:
http://www.pictureshack.ru/images/371dsfsd.JPG
испробовал все что пришло на ум, помогите пожалуйсто .
если что: http://rghost.ru/5110611
Зарание благодарю .
P.S. Кнопки есть но они не подогнаны пока под инстал =)
Gnom_aka_Lexander
07-04-2011, 14:29
Serega, спасибо, видимо, как сейчас есть - проще не придумаеш, так что не буду и голову ломать, просто хочется избавиться от километров кода :)
EvilAlex, такая ошибка говорит о том, что есть обращение к файлу, а сам файл отсутствует(буквалный перевод - деление на ноль:)) сейчас посмотрю твой скрипт.
Позже:
У тебя ошибку выбивает модуль фриарк. видимо гдето здорово попортил процедуры обращения к нему, либо удалил какой-нибудь нужный для модуля файл. если есть не испорченый скрипт - дай мне его, встрою тебе разные кнопки.
EvilAlex
07-04-2011, 14:37
Лександер, скорее всего удолил, там 3 кнопки и я заменял в некоторых местах названия, может где-то что-то не то сделал ...
Edison007
07-04-2011, 16:07
Парни у кого-нибудь есть код на реализацию токого: http://i2.pixs.ru/storage/3/2/7/Bezimyanni_2836350_1987327.jpg
EvilAlex
07-04-2011, 17:00
Edison007,
Для такова нет Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache Server at i2.pixs.ru Port 80
Edison007
07-04-2011, 17:10
EvilAlex
http://s51.radikal.ru/i132/1104/0f/4faebeaff7dd.jpg
В секции [Setuр] есть строка:
AlwaysRestart=yes
Как прописать, чтобы она действовала только на Win 7? Т.е. чтобы окно с предложением перезагрузки появлялось на Win 7, а на ХР его не было?
R.i.m.s.k.y.
07-04-2011, 19:53
попробуй в коде NeedRestart := True
var Version: TWindowsVersion;
....
GetWindowsVersionEx (Version);
if ( (Version.Major = 6) and (Version.Minor >= 1) ) then begin
...
NeedRestart := True
...
end;
Не проверял - не обещаю что сработает.
Gnom_aka_Lexander
07-04-2011, 19:59
ChVL, У меня вот так прокатило:
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[_code]
var Version: TWindowsVersion;
function NeedRestart(): Boolean;
begin
GetWindowsVersionEx (Version);
if ( (Version.Major = 6) and (Version.Minor >= 1) ) then begin
Result := True;
end;
end;
Ребят,есть такие вопросы:
1. Можно ли как-нибудь поменять расширение файла при разделении на тома?,к примеру: (не Setup-1.bin,а задать свое Data000.idd,как в Smart Install Maker,при этом сжатие тоже остается)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC