Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: IvanTsarev
Дата сообщения: 03.08.2011 10:59
Добрый день.

Не кидайтесь в меня грязью, но второй день ломаю голову, как сделать градусник на время выполнения секции RUN. Знаю, что ответ наверняка уже был, но как только не искал не нашел ничего приемлемого

Суть такая: есть секция [Run] с почти 20 записями. В каждой активно используется Check на предмет версии Windows, выбранного компонента, которые могут и пересекаться. Вообщем, в результате по очереди могут запускаться от 1 до 20 различных приложений. Все запуски проходят в silent режиме, то есть виден только экран INNO.

Собственно проблема в том, что градусник полностью заполняется после распаковки всех файлов и о том что идет какая-то работа сообщает только меняющийся текст Status. Но хочется, чтобы еще и градусник показывал процесс выполнения Run. Причем, в идеале делал это по-умному: шаг соответствовал количеству приложений на Run в текущей установке, но это уже не так важно.

Буду благодарен примерчику

Спасибо.



Добавлено:

Цитата:
Но хочется, чтобы еще и градусник показывал процесс выполнения Run

Ну, сделал первое приближение, правда через одно место
В секции Run "получаю" StatusMsg через функцию, скармливая в качестве параметра тот самый текст, который хочу увидеть. Но при этом, получаю возможность по мере прохождения по [Run] менять состояние градусника в секции Code.

Осталось 2 беды: не знаю какое максимальное количество возможных запусков в Run и сколько их будет на самом деле. В итоге градусник бежит неравномерно и может не дойти до конца )

Еще рассматриваю вариант с AfterInstall в Files и полного отказа от Run, но что-то не хочется руками вызывать все свои Run.

Такие дела


PS. Хо-хо-хо! А в AfterInstall как раз считаю сколько нужно будет Run делать

Всем спасибо, все свободны )
Автор: Sergey_Demchuk
Дата сообщения: 03.08.2011 20:49
[Run]
Filename: "{app}\ArchiCAD.EXE"; Description: "Çàïóñòèòü ArchiCAD"; Flags: postinstall nowait skipifsilent unchecked

Как в форме называется этот чекбокс на последней странице, который позволяет запускать приложение? Мне нужно управлять галочкой в чекбоксе из кода.
Автор: Gnom3
Дата сообщения: 03.08.2011 20:54
Sergey_Demchuk
Этот чекбокс находится на WizardForm.RunList, который является объектом TNewCheckListBox, и управляется так-же, как и любой подобный объект, с помощью доступа к итемам.
Автор: baqzar1
Дата сообщения: 04.08.2011 09:34
Здравствуйте. Я сделал репак. Установилась игра, началась установка Доп. ПО, а именно DirectX и вылезла вот такая ошибка . Все остальные проги Доп. ПО, а именно C++, и PhysX устанавливаются правильно. Что означает эта ошибка и как её исправить?
Автор: Shegorat
Дата сообщения: 04.08.2011 09:59
baqzar1 10:34 04-08-2011
Цитата:
Установилась игра, началась установка Доп. ПО, а именно DirectX и вылезла вот такая ошибка

А ошибку перевести не пробовал? Там сказано что ты подаешь неправильный аргумент командной строки при запуске файла.
Автор: baqzar1
Дата сообщения: 04.08.2011 10:01
Shegorat
А по-конкретнее можно??? А то я новичок в этих делах пока, и не совсем понимаю.
Автор: vint56
Дата сообщения: 04.08.2011 10:41
baqzar1 что здесь не понятного ключь для тихой установки не подходит
Автор: insombia
Дата сообщения: 04.08.2011 12:46
Как сделать выбор кряков для alice madness returns от RELOADED и THETA, и если можно выбор русификатора от ZoG Forum Team и от antuxpuct
Автор: VASYAKRN
Дата сообщения: 04.08.2011 13:11
народ как вставить надписи на выделеное место

http://inno.at.ua/12.7z
Автор: zxcvvcxz1
Дата сообщения: 04.08.2011 14:02
insombia

Цитата:
Как сделать выбор кряков для alice madness returns от RELOADED и THETA, и если можно выбор русификатора от ZoG Forum Team и от antuxpuct

Скачать пример
Автор: vint56
Дата сообщения: 04.08.2011 14:15
insombia
[more=вот пример]
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: a; Description: NoDvD Alice Madness Returns; Types: full
Name: a\RELOADED; Description: RELOADED; Flags: exclusive
Name: a\THETA; Description: THETA; Flags: exclusive

Name: b; Description: Русификаторы игры Alice Madness Returns; Types: full
Name: b\ZoG_Forum_Team; Description: ZoG Forum Team; Flags: exclusive
Name: b\antuxpuct; Description: Antuxpuct; Flags: exclusive

[Files]
Source: C:\RELOADED.iss; DestDir: {app}; Components: a\RELOADED
Source: C:\THETA.iss; DestDir: {app}; Components: a\THETA

Source: C:\RELOADED.iss; DestDir: {app}; Components: b\ZoG_Forum_Team
Source: C:\THETA.iss; DestDir: {app}; Components: b\antuxpuct
[Code]
procedure InitializeWizard();
begin
with WizardForm.ComponentsList do
begin
Height := ScaleY(105);
end;
end;[/more]


Добавлено:
VASYAKRN http://rghost.ru/16830561
Автор: insombia
Дата сообщения: 04.08.2011 15:16
Спасибо вам большое но есть проблема чтобы кряки работали нужно указать полный путь для кряков аж в папку Win32 ладно бог с ним

Добавлено:
почему после распаковки фриарков в IsExec автоматически идет деинсталяция?
Автор: vint56
Дата сообщения: 04.08.2011 15:38
insombia
[more=вот пример]
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: a; Description: NoDvD Alice Madness Returns; Types: full
Name: a\RELOADED; Description: RELOADED; Flags: exclusive
Name: a\THETA; Description: THETA; Flags: exclusive

Name: b; Description: Русификаторы игры Alice Madness Returns; Types: full
Name: b\ZoG_Forum_Team; Description: ZoG Forum Team; Flags: exclusive
Name: b\antuxpuct; Description: Antuxpuct; Flags: exclusive

[Files]
Source: C:\RELOADED.iss; DestDir: {app}\Win32; Components: a\RELOADED
Source: C:\THETA.iss; DestDir: {app}\Win32; Components: a\THETA

Source: C:\RELOADED.iss; DestDir: {app}; Components: b\ZoG_Forum_Team
Source: C:\THETA.iss; DestDir: {app}; Components: b\antuxpuct
[Code]
procedure InitializeWizard();
begin
with WizardForm.ComponentsList do
begin
Height := ScaleY(105);
end;
end;[/more]
Автор: Kasoi
Дата сообщения: 04.08.2011 22:23
insombia

Цитата:
почему после распаковки фриарков в IsExec автоматически идет деинсталяция?


Ошибка при распаковке.
Автор: Gnom3
Дата сообщения: 04.08.2011 22:41
IvanTsarev

Цитата:
Не кидайтесь в меня грязью, но второй день ломаю голову, как сделать градусник на время выполнения секции RUN. Знаю, что ответ наверняка уже был, но как только не искал не нашел ничего приемлемого

Делал для себя, на базе 6-го исдона. скачать.
Автор: Sergey_Demchuk
Дата сообщения: 05.08.2011 07:00
Как можно сделать так, чтобы при изменении размеров окна изображение масштабировалось до размеров окна?

Код:
procedure FormResize(Sender:TObject);
begin
imgRelease (imgimg);
imgimg:=ImgLoad(Form.Handle,ExpandConstant('{tmp}\3.bmp'),0,0,Form.Width, Form.Height,True,False);
ImgApplyChanges(Form.Handle);
Form.Refresh;
end;

...

Form := CreateCustomForm();
Form.ClientWidth := ScaleX(480);
Form.ClientHeight := ScaleY(200);
Form.Caption := 'Image';
Form.BorderIcons := [biSystemMenu];
Form.BorderStyle := bsSizeable;
Form.Hide;
Form.OnResize:=@FormResize;
Автор: Gnom3
Дата сообщения: 05.08.2011 09:46
Sergey_Demchuk
Вот так у меня получилось.
[more=код]#include "Modules\botva2.iss"
#include "Modules\TrackBar.iss"

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

[Files]
Source: Files\*; DestDir: "{tmp}"; Flags: dontcopy sortfilesbyextension
Source: compiler:Dll Pack\botva2.dll; Flags: dontcopy
Source: compiler:Dll Pack\CallbackCtrl.dll; Flags: dontcopy

[Code]
var
imgimg : Longint;
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
Result:=True;
end;

procedure FormResize(Sender:TObject);
begin
//Для ресайза изображения, лучше исподьзовать imgSetPosition
imgSetPosition(imgimg,0,0,WizardForm.ClientWidth,WizardForm.ClientHeight);
imgApplyChanges(WizardForm.Handle);
end;

procedure InitializeWizard;
var
i:integer;
begin
WizardForm.InnerPage.ParentShowHint := False;
with WizardForm do begin
ClientWidth:=GetSystemMetrics(16); // Сперва делаем размер формы во весь экран
ClientHeight:=GetSystemMetrics(17); // иначе изображение будет обрезаться по первоначальному размеру.
OnResize:=@FormResize;
Bevel.Hide;
InnerPage.Hide;
OuterNotebook.Hide;
BorderStyle := bsSizeable;
// загрузка изображения и окончательные размеры формы - в конце.
ExtractTemporaryFile('5.jpg'); // потом грузим изображение
imgimg:=imgLoad(WizardForm.Handle,ExpandConstant('{tmp}')+'\5.jpg',0,0,WizardForm.ClientWidth,WizardForm.ClientHeight,True,False);
ClientWidth := ScaleX(480); // потом задаем нужный нам размер формы
ClientHeight := ScaleY(200);
end;

imgApplyChanges(WizardForm.Handle);

end;

procedure DeinitializeSetup;
begin
gdipShutdown;
end;[/more]
Автор: Sergey_Demchuk
Дата сообщения: 05.08.2011 10:41
Gnom3
А что ж у меня не выходит на созданной форме? Мне именно на созданной нужно изображение растягивать.
Наверное не так создаю. Вот твой код с внешней формой. Наверное какое то свойство нужно поменять...
[more]
#include "Modules\botva2.iss"
#include "Modules\TrackBar.iss"

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

[Files]
Source: Files\*; DestDir: "{tmp}"; Flags: dontcopy sortfilesbyextension
Source: compiler:Dll Pack\botva2.dll; Flags: dontcopy
Source: compiler:Dll Pack\CallbackCtrl.dll; Flags: dontcopy

[Code]
var
imgimg : Longint;
Form: TSetupForm;
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
Result:=True;
end;

procedure FormResize(Sender:TObject);
begin
//Для ресайза изображения, лучше исподьзовать imgSetPosition
imgSetPosition(imgimg,0,0,Form.ClientWidth,Form.ClientHeight);
imgApplyChanges(Form.Handle);
end;

procedure InitializeWizard;
var
i:integer;
begin


Form := CreateCustomForm();

// Form.ClientWidth := ScaleX(480);
// Form.ClientHeight := ScaleY(200);
Form.Caption := 'Image';
Form.BorderIcons := [biSystemMenu];
Form.BorderStyle := bsSizeable;
Form.Hide;
Form.OnResize:=@FormResize;
Form.Show;


WizardForm.InnerPage.ParentShowHint := False;
with WizardForm do begin
ClientWidth:=GetSystemMetrics(16); // Сперва делаем размер формы во весь экран
ClientHeight:=GetSystemMetrics(17); // иначе изображение будет обрезаться по первоначальному размеру.
OnResize:=@FormResize;
Bevel.Hide;
InnerPage.Hide;
OuterNotebook.Hide;
BorderStyle := bsSizeable;
// загрузка изображения и окончательные размеры формы - в конце.
ExtractTemporaryFile('5.jpg'); // потом грузим изображение
imgimg:=imgLoad(Form.Handle,ExpandConstant('{tmp}')+'\5.jpg',0,0,Form.ClientWidth,Form.ClientHeight,True,False);
ClientWidth := ScaleX(480); // потом задаем нужный нам размер формы
ClientHeight := ScaleY(200);
end;

imgApplyChanges(Form.Handle);

end;

procedure DeinitializeSetup;
begin
gdipShutdown;
end;
[/more]
Автор: Gnom3
Дата сообщения: 05.08.2011 11:01
Sergey_Demchuk
нужны было все, что для визардформ - перенести на форму.

[more=код]#include "Modules\botva2.iss"
#include "Modules\TrackBar.iss"

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

[Files]
Source: Files\*; DestDir: "{tmp}"; Flags: dontcopy sortfilesbyextension
Source: compiler:Dll Pack\botva2.dll; Flags: dontcopy
Source: compiler:Dll Pack\CallbackCtrl.dll; Flags: dontcopy

[Code]
var
imgimg : Longint;
Form: TSetupForm;
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
Result:=True;
end;

procedure FormResize(Sender:TObject);
begin
//Для ресайза изображения, лучше исподьзовать imgSetPosition
imgSetPosition(imgimg,0,0,Form.ClientWidth,Form.ClientHeight);
imgApplyChanges(Form.Handle);
end;

procedure InitializeWizard;
var
i:integer;
begin
Form := CreateCustomForm();

Form.ClientWidth :=GetSystemMetrics(16); // Сперва делаем размер формы во весь экран
Form.ClientHeight :=GetSystemMetrics(17); // Сперва делаем размер формы во весь экран
Form.Caption := 'Image';
Form.BorderIcons := [biSystemMenu];
Form.BorderStyle := bsSizeable;
Form.Hide;
Form.OnResize:=@FormResize;
ExtractTemporaryFile('5.jpg'); // потом грузим изображение
imgimg:=imgLoad(Form.Handle,ExpandConstant('{tmp}')+'\5.jpg',0,0,Form.ClientWidth,Form.ClientHeight,True,False);
// сперва Применяем изображение
imgApplyChanges(Form.Handle);
// теперь задаем нужные размеры.
Form.ClientWidth := ScaleX(480);
Form.ClientHeight := ScaleY(200);
Form.Show;
end;

procedure DeinitializeSetup;
begin
gdipShutdown;
end;[/more]
Автор: insombia
Дата сообщения: 05.08.2011 11:17

Цитата:
Ошибка при распаковке.


Нет оно распаковалось но после распаковки почему то сразу же идет деинсталяция
Автор: Sergey_Demchuk
Дата сообщения: 05.08.2011 11:23
Gnom3
Спасибо, разобрался.
Надо было использовать
Form.ClientWidth:=GetSystemMetrics(16);
Form.ClientHeight:=GetSystemMetrics(17);
Автор: vint56
Дата сообщения: 05.08.2011 11:41
insombia ты хоть покажи скрипт и что делаеш
Автор: insombia
Дата сообщения: 06.08.2011 09:08
vint56 http://rghost.ru/5036117
Автор: NinjaTurtles100500
Дата сообщения: 06.08.2011 09:27
Как в библиотеке BASS v 1.1 от Shegorat переместить MusicButton (регулятор громкости) в верхнюю часть инсталлятора? При простой смене координат кнопка\регулятор где-то теряются.
Автор: vint56
Дата сообщения: 06.08.2011 09:43
insombia здесь сделана проверка файлов после распаковки архивов если их не вписать или поставить не правельно то будет идти удаление вот это строчка
/// проверка количества файлов, посли установки, если не совпадает, то выводится сообщение об ошибке и откат
if i < 708 then /// задаём количество файлов в папке, в данном случаи их 708 шт!!
я сделал архив у меня в нем 14 файлов в скрипте я поставил 14 все распаковалось нормально

Добавлено:
NinjaTurtles100500 что видеть регулятор на скрыть WizardForm.OuterNotebook.Hide но тогда придется все заново писать лэйбалы и все остальное
Автор: sergey3695
Дата сообщения: 06.08.2011 17:05
привет всем. кто знает как сделать лейбл на котором показывалось какой выбран диск для установки? а то сам ничего не не нашел и не придумал.
Автор: VicF1
Дата сообщения: 06.08.2011 17:07
Привет.
Как правильно в Inno прописать след. данные для внесения в реестр?


Код: Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SC2.Map\shell\open\command]
@="\"C:\\Program Files\\StarCraft II\\Support\\SC2Editor.exe\" -loadfile \"%1\""
Автор: Percey123
Дата сообщения: 06.08.2011 17:28
Напишите, пожалуйта, скрипт кнопок управления музыкой, которые работают на BASS.dll версии 2.4.7. Лучше всего, чтобы было 2 кнопки: стоп и проигрывание. Старые скрипты основаны на BASS 2.3, и не работают.

Добавлено:
Или, что будет намного лучше, кнопки проигрывания и паузы.
Автор: vint56
Дата сообщения: 06.08.2011 18:02
VicF1
[Registry]
Root: HKCR; SubKey: SC2.Map\shell\open\command; ValueType: string; ValueData: """{app}\Support\SC2Editor.exe"" -loadfile ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
Автор: Snoopak96
Дата сообщения: 06.08.2011 19:56
sergey3695,
[more][_Code]
var
DirEditLabel: TLabel;

procedure InitializeWizard;
begin
DirEditLabel := TLabel.Create(WizardForm);
with DirEditLabel do begin
Left:= ScaleX(55);
Top:= ScaleY(125);
Width:= ScaleX(305);
Height:= ScaleY(20);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Color:=$000000;
Font.Style := [fsBold]
Font.Name:='Times New Roman';
Font.Size:=10;
Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
Parent := WizardForm.WelcomePage;
end;
end;[/more]

Но это путь установки, про диск чёт тоже не дошло как сделать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.