PDA

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


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

Johny777
13-06-2012, 20:20
91892823,
От себя замечу, что скорость распаковки зависит от степени сжатия (у медали две стороны)
ты должен найти компромисс между нужным размером сжатого архива и нужной скоростью распаковки того самого архива
если такой компромисс не найден, то тебе придётся смириться с медленной распаковкой или сравнительно большим размером архива

В инно тоже при максимальном сжатии распаковка занимает хорошее время
особо пока не тестировал, но если приписать ко всем строкам секции Files флаг solidbreak, то при незначительном
увеличении размера конечного инстлла скорость извлечения вроде как выше
( это нужно проверить )

моё мнение:
если игра влезает на двухслойный DVD и при этом никак не сжимается до ёмкости однослойного, то и не стоить особо напрягаться ужимая 7.5 гигов до 5 или 6 :)

Неадекватный
13-06-2012, 23:47
Привет всем!
Подскажите пожалуйста люди добрые, как сделать так чтобы не копировался файл если выбран другой?

Код
[Files]
Source: Config,1.ini; DestDir: {app}; Check: not CoonfCheck
Source: Config,2.ini; DestDir: {app}; Check: CoonfCheck

[*Code]
var
MyPage: TWizardPage;
MyCheckBox: TNewCheckBox;

procedure MyForm;
begin
MyPage := CreateCustomPage(wpWelcome, 'Caption', 'Description');
with MyPage.Surface do
begin
Name := 'Automatic';
end;

MyCheckBox := TNewCheckBox.Create(WizardForm);
with MyCheckBox do
begin
Name := 'Automatic';
Parent := MyPage.Surface;
Left := ScaleX(32);
Top := ScaleY(24);
Width := ScaleX(97);
Height := ScaleY(17);
end;

MyCheckBox.TabOrder := 0;
end;

procedure InitializeWizard();
begin
MyForm;
end;

El Sanchez, Благодарствую, работает отлично.

YURSHAT
14-06-2012, 04:29
Подскажите код, чтобы картинка (PNG) вылазила за пределы инсталлятора и не было фона? »
скрпит который на скрине тут лежит http://forum.ru-board.com/topic.cgi?forum=5&topic=36421&start=0&limit=1&m=6#1

Johny777
14-06-2012, 11:41
как сделать так чтобы не копировался файл если выбран другой »

тебе не хватало функции возвращающей True/False строкам секциям Files
вот такой, завязанной на Checked :

function CoonfCheck: Boolean;
begin
Result := MyCheckBox.Checked;
end;


полностью:

[Setup]
AppName=Name
AppVerName=Name
DefaultDirName={pf}\Name
compression=none

[Files]
Source: Config,1.ini; DestDir: {app}; Check: not CoonfCheck
Source: Config,2.ini; DestDir: {app}; Check: CoonfCheck

[ Code]
var
MyPage: TWizardPage;
MyCheckBox: TNewCheckBox;

function CoonfCheck: Boolean;
begin
Result := MyCheckBox.Checked;
end;

procedure MyForm;
begin
MyPage := CreateCustomPage(wpWelcome, 'Caption', 'Description');

MyCheckBox := TNewCheckBox.Create(WizardForm);
with MyCheckBox do
begin
Parent := MyPage.Surface;
SetBounds(ScaleX(32), ScaleY(24), ScaleX(97), ScaleY(17));
end;
end;

procedure InitializeWizard();
begin
MyForm;
end;

Ivan_009
14-06-2012, 13:31
Подскажите пожалуйста как на png картинку наложить jpg в примерах botva ничего непонятно заранее спасибо :unsure:

Johny777
14-06-2012, 16:00
Ivan_009,
а может всё же фотошопом наложишь с прозрачностью или другими эффектами и сохранишь в одно png изображение?
и код короче будет и тебе проще

alert30
14-06-2012, 17:05
Возможна такая реализация, чтобы типа к примеру, файлы-русификаторы копировался автоматом (после установки программ) в C:\Program Files\MyProgram или еще куда-то без каких-либо сторонних упаковщиков?

Johny777
14-06-2012, 17:09
alert30,
не совсем понял
хочешь копировать внешние файлы из папки, что лежит рядом с инсталлом, в директорию установки?
если да, то используй флаг external
если папка опциональна и не всегда есть, то дополнительно флаг "пропустить, если источника нет" - skipifsourcedoesntexist

alert30
14-06-2012, 17:17
Johny777
хочешь копировать внешние файлы из папки, что лежит рядом с инсталлом, в директорию установки? »
Да.
если да, то используй флаг external »
Если включу флаг, и как будет копировать? Там должно вписывать скрипт в путь назначения для копирования.

Johny777
14-06-2012, 17:40
Если включу флаг, и как будет копировать »
да
Там должно вписывать скрипт в путь назначения для копирования. »
{app}, те куда задашь в DefaultDirName= или в эдите не странице выбора директории установки
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,пример,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Source: {src}\common\half-life 2 episode one\episodic\SAVE\*; DestDir: {app}\half-life 2 episode one\episodic\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist;
....снаружи\папка\папка\*(* - означает из этой папки всё) ; куда: в {app}(сам выбираешь в эдите пути)\папка\папка : Флаги : "внешний" "игнорировать версию" "обрабатывать каталоги в источнике" "создавать эти самые каталоги/подкаталоги в {app}" "пропускать (не выдавать ошибку) если источника, откуда копируем, нет"

Примечание: при копировании из внешней папки отображается прогресбар. Короче всё как и при распаковке

alert30
14-06-2012, 18:15
Johny777, а-а-а, я протупил. :)
DestDir отвечает куда копировать. Все понятно.

Ivan_009
14-06-2012, 18:31
Почему при использовании botva2p загрузка картинок проходит нормально но стоит нажать на кнопку отмена установки и выход так возникает звук ошибки....Вот код загрузки картинок.... :unsure:

Gnom_aka_Lexander
14-06-2012, 18:52
Ivan_009, Проверь, есть у тебя такой момент?
procedure DeinitializeSetup;
begin
gdipShutdown;
end;

Ivan_009
14-06-2012, 18:59
Gnom_aka_Lexander, Спасибо большое :up как раз этот момент я упустил...

Ivan_009
16-06-2012, 20:46
Подскажите пожалуйста как сдесь прописать чтобы музыка воспроизводилась...BASS_Init(ExpandConstant('{tmp}\*')) //Поиск по маске... :o

Johny777
16-06-2012, 22:20
Ivan_009,
может так:
BASS_Init(ExpandConstant('{tmp}\*.mp3'))

попробуй

Raf-9600
18-06-2012, 23:05
Ктонить может сделать так чтобы в коде на отображение комментария к компонентам, комментарий к первому компоненту различался на разных Windows? Ну грубо говоря нужно к одному описанию как-то присобачить правило MinVersion: 4.90.3000,4.0.1381; OnlyBelowVersion: 0,6.0.5999, а если у юзера другой Windows, чтобы отображалось другое описание.

Собстно код на описание компонентов:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: Version; Description: Версия; Flags: fixed; Types: full compact custom;
Name: Version\101; Description: 1.01; Flags: exclusive;
Name: Version\102; Description: 1.02; Flags: exclusive;
Name: Version\103; Description: 1.03; Flags: exclusive;
Name: Version\104; Description: 1.04; Flags: exclusive; Types: full;

[C0de]
var
DRTF: TRichEditViewer;


procedure MemoKeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;

procedure MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Key := 0;
end;

procedure RedesignWizardForm;
begin
with WizardForm.ComponentsList do
begin
Width := ScaleX(212);
end;

DRTF := TRichEditViewer.Create(WizardForm);
with DRTF do
begin
Name := 'DRTF';
Parent := WizardForm.SelectComponentsPage;
Left := ScaleX(220);
Top := WizardForm.ComponentsList.Top;
Width := ScaleX(197);
Height := WizardForm.ComponentsList.Height;
Color := clMenu;
ReadOnly := True;
ScrollBars := ssVertical;
Text := '';
OnKeyDown := @MemoKeyDown;
OnKeyPress := @MemoKeyPress;
end;
DRTF.TabOrder := 4;
end;

type
TComponentDesc = record Description: String; Index: Integer; end;

var
Descs: array of TComponentDesc;
Indx: Integer;

procedure ShowDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var i: Integer;
begin
Indx:=-1;
for i:= 0 to GetArrayLength(Descs)-1 do begin
if (Descs[i].Index=Index) then begin Indx:=i; Break end; end;
if (Indx >=0)and(Area=iaItem) then DRTF.Text:= Descs[Indx].Description;
end;

procedure AddDescription(AIndex: Integer; ADescription: String);
var i, k: Integer;
begin
i:= GetArrayLength(Descs); SetArrayLength(Descs, i+1);
Descs[i].Description:= ADescription; Descs[i].Index:= AIndex-1
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
WizardForm.ComponentsList.OnItemMouseMove:= @ShowDescription

AddDescription(1, 'текст 1.');
AddDescription(2, 'текст 2.');
AddDescription(3, 'текст 3.');
AddDescription(3, 'текст 4.');

end;

Johny777
19-06-2012, 09:12
Raf-9600,
вот если бы кто-нибудь подкинул код на определение версии винды через код, то думаю можно б было так сделать

procedure InitializeWizard();
begin
...
if версия такоя then AddDescription(1, 'при такой версии') else (те др. версия) AddDescription(1, 'описание при другой версии') ;
...
end;

nik1967
19-06-2012, 12:19
Raf-9600, [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: Version; Description: Версия; Flags: fixed; Types: full compact custom;
Name: Version\101; Description: 1.01; Flags: exclusive;
Name: Version\102; Description: 1.02; Flags: exclusive;
Name: Version\103; Description: 1.03; Flags: exclusive;
Name: Version\104; Description: 1.04; Flags: exclusive; Types: full;

[ Code]
var
DRTF: TRichEditViewer;


procedure MemoKeyPress(Sender: TObject; var Key: Char);
begin
Key := #0;
end;

procedure MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Key := 0;
end;

procedure RedesignWizardForm;
begin
with WizardForm.ComponentsList do
begin
Width := ScaleX(212);
end;

DRTF := TRichEditViewer.Create(WizardForm);
with DRTF do
begin
Name := 'DRTF';
Parent := WizardForm.SelectComponentsPage;
Left := ScaleX(220);
Top := WizardForm.ComponentsList.Top;
Width := ScaleX(197);
Height := WizardForm.ComponentsList.Height;
Color := clMenu;
ReadOnly := True;
ScrollBars := ssVertical;
Text := '';
OnKeyDown := @MemoKeyDown;
OnKeyPress := @MemoKeyPress;
end;
DRTF.TabOrder := 4;
end;

type
TComponentDesc = record Description: String; Index: Integer; end;

var
Descs: array of TComponentDesc;
Indx: Integer;
Version: TWindowsVersion;

procedure ShowDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var i: Integer;
begin
Indx:=-1;
for i:= 0 to GetArrayLength(Descs)-1 do begin
if (Descs[i].Index=Index) then begin Indx:=i; Break end; end;
if (Indx >=0)and(Area=iaItem) then DRTF.Text:= Descs[Indx].Description;
end;

procedure AddDescription(AIndex: Integer; ADescription: String);
var i, k: Integer;
begin
i:= GetArrayLength(Descs); SetArrayLength(Descs, i+1);
Descs[i].Description:= ADescription; Descs[i].Index:= AIndex-1;
end;

function needversion():boolean;
var Version: TWindowsVersion;
begin
GetWindowsVersionEx (Version);
Result:= (Version.Major = 6) and (Version.Minor = 0) and (Version.Build = 5999);
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
WizardForm.ComponentsList.OnItemMouseMove:= @ShowDescription;
if needversion then AddDescription(2, 'текст 1.') else AddDescription(2, 'текст 1.1');
AddDescription(3, 'текст 2.');
AddDescription(4, 'текст 3.');
AddDescription(5, 'текст 4.');
end;

Raf-9600
19-06-2012, 12:52
типа так? »
Что-то там не так, ибо и под WinXP и под Win7 одно и то же описание =\




© OSzone.net 2001-2012