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

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

Автор: Sampron
Дата сообщения: 27.04.2007 18:57
EagleSH
Замени:

BackgroundBitmapImage:=TBitmapImage.Create(MainForm)
with BackgroundBitmapImage do begin
BackColor:=clBlack
Center:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Parent:=MainForm
Tag:=1
end

на:

BackgroundBitmapImage:=TBitmapImage.Create(MainForm)
with BackgroundBitmapImage do begin
Stretch:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Parent:=MainForm
Tag:=1
end

P.S. Мне тоже больше нравится слайд-шоу по прогресс бару а не по времени.
Автор: EagleSH
Дата сообщения: 27.04.2007 19:04
Sampron хм, шота не без изменений этой заменой...

а если добавить это:

procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;

begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(0)
height:=GetSystemMetrics(1)
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
MainForm.Visible:=True;
MainForm.Left := 0;
MainForm.Top := 0;

всё ок (тоесть тот твой код без замены пашет с этим)
Автор: Sampron
Дата сообщения: 27.04.2007 19:14
EagleSH
Заменять нужно в процедуре procedure CurPageChanged(CurPageID: Integer);
Автор: EagleSH
Дата сообщения: 27.04.2007 19:16
Sampron
дык там и менял
Автор: Sampron
Дата сообщения: 27.04.2007 19:17
Есть другой вариант появления фонового окна без названия программы:

[Setup]
WindowVisible=yes
WindowShowCaption=no
BackColor=0

[LangOptions]
TitleFontSize=1000000000

[Code]
procedure InitializeWizard();
begin
WizardForm.BorderStyle:=bsSingle
WizardForm.BorderIcons:=[biSystemMenu, biMinimize]
WizardForm.Caption:='Установка My Program'
end;
Автор: EagleSH
Дата сообщения: 27.04.2007 19:21

Код:
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=No
WindowVisible=false

[Files]
; Копирование *.dll для демонстрации
Source: {sys}\*.dll; DestDir: {tmp}; Flags: external
Source: compiler:InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy

[no][Code][/no]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
BackgroundBitmapImage: TBitmapImage;
TimerID: LongWord;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height:Integer;
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(0); //Если скрыть также панель задач, то значение 0 (см. также ниже!)
height:=GetSystemMetrics(1); //Если скрыть также панель задач, то значение 1
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
MainForm.Visible:=True;
MainForm.Left := 0;
MainForm.Top := 0;

ExtractTemporaryFile('1.bmp')
ExtractTemporaryFile('2.bmp')
ExtractTemporaryFile('3.bmp')
end;

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
percent: integer;
begin
percent:=PercentProgress
with BackgroundBitmapImage do begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Tag:=1
end else
if ((percent>11) and (percent<20) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\2.bmp')
Tag:=2
end else
if ((percent>21) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\3.bmp')
Tag:=3
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
Width, Height: Integer;
begin
If CurPageID=wpInstalling
then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
BackgroundBitmapImage:=TBitmapImage.Create(MainForm)
with BackgroundBitmapImage do begin
Stretch:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Parent:=MainForm
Tag:=1
end
end
if CurPageID=wpFinished
then
begin
BackgroundBitmapImage.Hide
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;
Автор: boss911
Дата сообщения: 27.04.2007 19:44
Sampron

Цитата:
Ставь от 5.1.11

А разве там не ексешник от версии 5.1.11 или там патч?



Где модераторы, что за беспредел? Когда народ научится обрамлять свои длинные коды в тэги, все такие умные тут, а тупят или ленятся сделать элементарное, чтоб другим было удобно, не возможно же листать километровые посты!
Автор: Sampron
Дата сообщения: 27.04.2007 19:55
boss911
В основном изменяется файл Setup.E32.

Я незнаю как делать теги.

Добавлено:
EagleSH
Чтобы убрать синий фон достаточно сделать так:
[Setup]
BackColor=0

А если хочешь полноэкранный рисунок на фоновом окне и полноэкранное слайд-шоу то вот код:

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName=My Program
BackColor=0

[Files]
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: BackImage.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
s:string;
Width, Height:Integer;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter
Width:=GetSystemMetrics(0)
Height:=GetSystemMetrics(1)
MainForm.BORDERSTYLE:=bsNone
MainForm.Left:=0
MainForm.Top:=0
MainForm.Width:=Width
MainForm.Height:=Height
ExtractTemporaryFile('BackImage.bmp')
s:=ExpandConstant('{tmp}')+'\BackImage.bmp '
BackImage:=TBitmapImage.Create(MainForm)
BackImage.Bitmap.LoadFromFile(s)
BackImage.Align:=alClient
BackImage.Parent:=MainForm
BackImage.Stretch:=True
MainForm.Visible:=True

ExtractTemporaryFile('BackImage.bmp')
ExtractTemporaryFile('1.bmp')
ExtractTemporaryFile('2.bmp')
ExtractTemporaryFile('3.bmp')
end;

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
percent: integer;
begin
percent:=PercentProgress
with SlideImage do begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Tag:=1
end else
if ((percent>11) and (percent<20) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\2.bmp')
Tag:=2
end else
if ((percent>21) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\3.bmp')
Tag:=3
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
Width, Height: Integer;
begin
If CurPageID=wpInstalling
then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
SlideImage:=TBitmapImage.Create(MainForm)
with SlideImage do begin
Stretch:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Parent:=MainForm
Tag:=1
end
end
if CurPageID=wpFinished
then
begin
SlideImage.Hide
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;
Автор: NightW0lf
Дата сообщения: 27.04.2007 20:11
boss911
Все готов русик!
Кому надо забираем!

P.S.: на днях залью на вечное хранение и добалю в шапку!
Автор: EagleSH
Дата сообщения: 27.04.2007 20:12
Sampron
ага пасиб. я уже сделал.. вот токо ОДНА проблема осталась... бэкграундная картинка промигивает при смене скринов! как исправить?
Автор: Sampron
Дата сообщения: 27.04.2007 20:25
EagleSH
Изменяй проценты, пример:

with SlideImage do begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Tag:=1
end else
if ((percent>10) and (percent<20) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\2.bmp')
Tag:=2
end else
if ((percent>20) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\3.bmp')
Tag:=3

Пиши первый процент картинки такой же как и последний процент предыдущей картинки или ещё на один процент раньше.
Автор: EagleSH
Дата сообщения: 27.04.2007 20:28
Sampron
блин - не помогает и так и так пробывал
Автор: Sampron
Дата сообщения: 27.04.2007 20:30
EagleSH
Тогда незнаю у меня фон не проскакивает в слайд-шоу может это зависит от системы незнаю.

Добавлено:
Переделал 5 скинов InstallShield и добавил ещё 5 забираем здесь:
http://data.cod.ru/901414346
Изменения:
Из скриптов удалены ненужные для редактирования строки, решена проблема с цветом текста кнопок переключения на странице лицензии и чек-бокса на странице программной группы, и самое главное на стандартные кнопки наложены текстуры в формате bmp. Чистые текстуры кнопок без текста также идут в комплект.

P.S. Те страницы которые вы не используете в своих проэктах можно спокойно удалять из скрипта.
Автор: gar90
Дата сообщения: 27.04.2007 21:01
Помогите пожалуйста!!!!!!!!!!!!
Хочу создать файл и в нем прописать путь, где была установлена игра.
У меня это выглядит примерно так:
SaveStringToFile('{app}\crspath.ini', '', True);
SetIniString('PATH', 'PATH', '{app}' , '{app}\crspath.ini');
Но ничего не получается.
Автор: Sampron
Дата сообщения: 27.04.2007 21:11
gar90
Это для Crashday?
Если ты хочешь создать ini то проще сделать так:

[INI]
Filename: {app}\crshpath.ini; Section: path; Key: Path; String: {app}
Автор: gar90
Дата сообщения: 27.04.2007 21:25
Sampron,
хоршая у тебя догадка.
Спасибо!!!!!!! Помогло!!!!
Будем больше лазить в Help'ах!
Кстати скины весьма прикольные.
Автор: Sampron
Дата сообщения: 27.04.2007 21:33
gar90

Цитата:
хоршая у тебя догадка

Просто однажды делал инсталл этой игры.
Автор: boss911
Дата сообщения: 27.04.2007 22:11
NightW0lf

Спасибо за оперативность и за твой труд!

Теперь признавайся, как ты оформил звуковую часть инсталла, а именно: код, воспроизведение *.xm файлов (чем послушать и где взять) и, можно ли обьеденить кнопки play и pause в единую или заместь кнопок активный (ссылкой) текст?

Поделись плиз, а то midi уже не актуально стало, как увидел твой инсталл!
Автор: NightW0lf
Дата сообщения: 27.04.2007 23:09
boss911

Цитата:
Теперь признавайся, как ты оформил звуковую часть инсталла, а именно: код, воспроизведение *.xm файлов

Вообще этот код есть в Пятой версии руководства по Инно от Kindly.

Но если ты не качал то тогда забирай:

RL-TeaM.RU
RapidShare.COM

Цитата:
можно ли обьеденить кнопки play и pause в единую или заместь кнопок активный (ссылкой) текст?

Можно сделать checkbox, но для этого другой код.

Sampron

Цитата:
Переделал 5 скинов InstallShield и добавил ещё 5 забираем здесь:
http://data.cod.ru/901414346

РЕСПЕКТ! +1
Автор: Sampron
Дата сообщения: 28.04.2007 00:13
неплохая прога для распаковки сетапов:
http://legroom.net/software/uniextract
Автор: fty
Дата сообщения: 28.04.2007 09:02
Выложите, плиз, файл get_hw_caps.dll на рапиду, а то с ifolder'а и rl-team'а совсем отстойно качается, 36кБ пишет, что скачает за 50 (!!!) минут.
Автор: Fatal2006
Дата сообщения: 28.04.2007 09:54

Цитата:
Все готов русик!
Кому надо забираем!

перезалей пожалуйста на рапиду
Автор: EagleSH
Дата сообщения: 28.04.2007 10:35
господа, когдаже текст в инно научится транспарентить, никто не в курсах?
Автор: NightW0lf
Дата сообщения: 28.04.2007 10:53
fty

Цитата:
Выложите, плиз, файл get_hw_caps.dll на рапиду

Забирай
Автор: ValeronSoft
Дата сообщения: 28.04.2007 13:48
Люди, пожалуйста, помогите мне! Вот раньше делал инсталляторы с помощью этой проги, простые, с самым необходимым...

А недавно узнал (отсюда ) что эта прога имеет ещё апупительную кучу фич...
И вот сразу же у меня трабла не корошая

Короче, решил сделать новое оформление у инсталлятора и ещё вставить на задний план картинку... делал по инструкции

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

Цитата:
[no]
[Code]
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

Procedure InitializeWizard();
begin
with WizardForm do begin
Position:=poScreenCenter
ClientWidth:=690
ClientHeight:=496
Font.Color:=clWindow
Font.Name:='MS Sans Serif'
Font.Style:=[]
with Bevel do begin
Left:=0
Top:=313
Width:=497
Height:=2
Visible:=False
end
with CancelButton do begin
Left:=600
Top:=462
Width:=77
Height:=25
BringToFront
end[/no]
{тута я сократил, много букавок, но в скрипте там ве норм у меня =)}
[no]with RunList do begin
Left:=205
Top:=199
Width:=465
Height:=149
BorderStyle:=bsNone
end
with FinishedLabel do begin
Left:=205
Top:=119
Width:=465
Height:=53
end
with FinishedHeadingLabel do begin
Left:=205
Top:=79
Width:=465
Height:=24
Font.Color:=clWindow
Font.Size:=8
end
end
end
with BeveledLabel do begin
Left:=10
Top:=468
Width:=150
Height:=14
Enabled:=False
Color:=14405068
end
end
end;
var
width,height: Integer;
BackgroundBitmapImage: TBitmapImage;
s: string;
begin
ExtractTemporaryFile('background.bmp');
s:=ExpandConstant('{tmp}')+'\background.bmp';
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(0);
height:=GetSystemMetrics(1);
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
MainForm.Left := 0;
MainForm.Top := 0;
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
end;

[/no]


извините меня, если как то туповато объяснил... голова уже болит просто %) решил у вам обратиться
Автор: Sampron
Дата сообщения: 28.04.2007 14:08
ValeronSoft
Так будет правильней:

[Files]
Source: background.bmp; DestDir: {tmp}; Flags: dontcopy;

[Code]
var
Width,Height: Integer;
BackImage: TBitmapImage;
s: string;

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

Procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter
Width:=GetSystemMetrics(0)
Height:=GetSystemMetrics(1)
MainForm.BORDERSTYLE:=bsNone
MainForm.Left:=0
MainForm.Top:=0
MainForm.Width:=Width
MainForm.Height:=Height
ExtractTemporaryFile('background.bmp')
s:=ExpandConstant('{tmp}\background.bmp')
BackImage:=TBitmapImage.Create(MainForm)
BackImage.Bitmap.LoadFromFile(s)
BackImage.Align:=alClient
BackImage.Parent:=MainForm
BackImage.Stretch:=True
MainForm.Visible:=True
//Дальше идёт скин начиная с with WizardForm do begin
Автор: ValeronSoft
Дата сообщения: 28.04.2007 14:30
Sampron
Спасибо тебе большое, заработало

если не затруднит, можешь отписать, как музончик на задний план поставить?
а то тоже, делаю вроде как написано, а инно грит типа что то не так.. запарился уже
Автор: Sampron
Дата сообщения: 28.04.2007 14:43
ValeronSoft

[Files]
Source: Sound.mp3; DestDir: {tmp}; Flags: dontcopy

[Code]
function mciSendString(lpstrCommand: string; lpstrReturnString: string; uReturnLength:integer; hwndCallback:integer):integer;
external 'mciSendStringA@winmm.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('Sound.mp3'))
mciSendString(ExpandConstant('play {tmp}\Sound.mp3 repeat'),'NULL',0,0)
end;
Автор: noiseless
Дата сообщения: 28.04.2007 14:44
ValeronSoft
Качай руководства от Kindly (см. шапку). Там всё доступно написано. Я сам делал именно по этим руководствам.
Автор: ValeronSoft
Дата сообщения: 28.04.2007 14:54
Sampron

спасибо, теперь разобрался, что да как

noiseless

я скачал, вот именно, что в секции КОД не так всё располагал и комбинировал... и бяка получалась... вот щас кажись догнал



Добавлено:
скажите, как можно сделать заставку в виде картинки перед запуском инсталлятора?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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