Войти

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


Страниц : 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Sotonisto
23-01-2010, 20:19
CrOsP, спасиб - помогло :)

подскажите почему может не подхватывать стиль?
[Files]
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: steam.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Windows 7 x64
версия Inno 5.3.7 (u) »

Это просто даже для такого как я :)

[Files]
Source: "D:\Programs\ISSkin\ISSkin.dll"; DestDir: {app}; Flags: dontcopy
Source: "D:\My Skin\steam.cjstyles"; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('steam.cjstyles');
LoadSkin(ExpandConstant('{tmp}\steam.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;

Serega
23-01-2010, 20:28
подскажите почему может »
Ошибка в 15 строке, неверный параметр... скрипт покажите или те строки, как вы экспортируете и загружаете скин.

Не хватает в Converter 0.1.3 пакетной обработки »
Я думаю это не критично и считаю не проблемой объединить два рег-файла в один в ручную, это не утилита для объединения рег-файлов, а конвертирование reg в iss.

Jerichoman
23-01-2010, 20:58
Скажите, пожалуйста, если precomp для лучшего сжатия файлов, то почему будут файлы не .ff af_caves.pcf он будет весит больше значит он разжал этот файл или потом во FreeArc эти файлы лучше сожмутся?

REXE
23-01-2010, 21:04
Пожалуйста подскажите в этом коде,мне надо чтобы текст в документе который сделается в некоторых местах переходил на новую строку


[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.

[UninstallDelete]
Type: files; Name: "{app}\autoexec.cfg";

[code]
var
Page: TInputQueryWizardPage;

procedure InitializeWizard();
begin
Page := CreateInputQueryPage(wpWelcome, 'Текст_1', 'Текст_2', 'Введите ник для сетевой игры');
Page.Add('', False);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
SaveStringToFile(ExpandConstant('{app}\autoexec.cfg'), 'name ' + '"' + Page.Values[0] + '"' + #13#10, False);
end;

Habetdin
23-01-2010, 21:05
REXE, перенос строки - это
#13#10 »

Sotonisto
23-01-2010, 21:49
Люди, кто может дать скрипт вот такого инсталла

http://s003.radikal.ru/i204/1001/45/da7b82524233t.jpg (http://radikal.ru/F/s003.radikal.ru/i204/1001/45/da7b82524233.jpg.html)

Tukash
23-01-2010, 22:54
Скажите, пожалуйста, если precomp для лучшего сжатия файлов, то почему
Цитата:
будут файлы не .ff af_caves.pcf он будет весит больше значит он разжал этот файл
или потом во FreeArc эти файлы лучше сожмутся? »
да, сначала он как-бы "распаковывает" файл, а потом фриарком запаковываешь и получаеться меньший размер!

Sotonisto
прилепил что просил!
-------------------------------------------------------------------------------------
буду благодарен, если кто-то вытащит из этого скрипта, растягивание картинки на весь экран и на всех страницах, а так-же размер окна инсталлятора, а то скрипт слишком огромный, я пробовал но запутывался.
-------------------------------------------------------------------------------------

CrOsP
23-01-2010, 23:11
Sotonisto,

[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]
var
lbl1, lbl2, lbl3, lbl4, lbl5: TLabel;

procedure initializeWizard();
begin
WizardForm.PageDescriptionLabel.Hide;
// создаём Label'ы, на который вешаем ссылку
lbl1:= TLabel.Create(WizardForm);
with lbl1 do
begin
AutoSize:= False;
SetBounds(20, 40, 50, 13);
Caption:= '|';
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
lbl2:= TLabel.Create(WizardForm);
with lbl2 do
begin
AutoSize:= False;
SetBounds(50, 40, 50, 13);
Caption:= 'lbl2';
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
lbl3:= TLabel.Create(WizardForm);
with lbl3 do
begin
AutoSize:= False;
SetBounds(100, 40, 50, 13);
Caption:= '|';
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
lbl4:= TLabel.Create(WizardForm);
with lbl4 do
begin
AutoSize:= False;
SetBounds(130, 40, 50, 13);
Caption:= 'lbl4';
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
lbl5:= TLabel.Create(WizardForm);
with lbl5 do
begin
AutoSize:= False;
SetBounds(180, 40, 50, 13);
Caption:= '|';
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
begin
lbl1.Font.Color:= clBlack;
lbl1.Font.Style:= [fsBold];
lbl2.Font.Color:= clBlack;
lbl2.Font.Style:= [fsBold];
lbl3.Font.Color:= clBlack;
lbl3.Font.Style:= [fsBold];
lbl4.Font.Color:= clGray;
lbl4.Font.Style:= [];
lbl5.Font.Color:= clGray;
lbl5.Font.Style:= [];
end;
if CurPageID = wpReady then
begin
lbl1.Font.Color:= clGray;
lbl1.Font.Style:= [];
lbl2.Font.Color:= clGray;
lbl2.Font.Style:= [];
lbl3.Font.Color:= clBlack;
lbl3.Font.Style:= [fsBold];
lbl4.Font.Color:= clBlack;
lbl4.Font.Style:= [fsBold];
lbl5.Font.Color:= clBlack;
lbl5.Font.Style:= [fsBold];
end;
end;

Sotonisto
24-01-2010, 08:30
Sotonisto
прилепил что просил!»
Народ, не бы хотелось как нить к кнопкам выбора языка (от инсталла NFS) прикрепить распаковку озвучки :)
Ну кароч если выбрали Русскую озвучку для видео - в папку скопировался и распаковывался 7z SFX архив, а если выбирали английскую - просто шла установка без распаковки.
Но там с этими кнопками я мозк сломаю :) Сейчас они у меня "для прикола" - ничего не происходит если выбрать одну из них, а хотелось бы что бы работало :(
http://s48.radikal.ru/i120/1001/54/eaa01765c53ft.jpg (http://radikal.ru/F/s48.radikal.ru/i120/1001/54/eaa01765c53f.jpg.html)

Jerichoman
24-01-2010, 10:28
Tukash,
И еще вопрос :) Это можно только каждый файл так или можно как-то всю папку целиком? И какие файлы лучше всего precomp'ить?

Tukash
24-01-2010, 10:47
Sotonisto
[Types]
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: lng; Description: Выбор Озвучки; Flags: fixed; Types: custom
Name: lng/ru; Description: Русская; Flags: exclusive
Name: lng/en; Description: English; Flags: exclusive

[Files]
Source: C:\ENG\*; DestDir: {app}\audio\speech; Components: lng/en; Flags: recursesubdirs ignoreversion sortfilesbyextension createallsubdirs
Source: C:\Rus\*; DestDir: {app}\audio\speech; Components: lng/ru; Flags: recursesubdirs ignoreversion sortfilesbyextension createallsubdirs

Jerichoman
как всю папку прекомпом жать я пока не знаю, а сжимать лучше игровые архивы, видео и звук бесполезно...

Sotonisto
24-01-2010, 11:21
Sotonisto
читать дальше » »

Это для стандартного инсталла подходит, но тут нельзя создать еще одну страницу :(

Tukash
24-01-2010, 11:24
Цитата Tukash:Sotonisto
читать дальше » »

Это для стандартного инсталла подходит, но тут нельзя создать еще одну страницу
хмм, но ведь можно этот скрипт прелепить к твоим текстурам, и получиться то что ты хочешь, только как, я не знаю)))

Sotonisto
24-01-2010, 11:32
хмм, но ведь можно этот скрипт прелепить к твоим текстурам, и получиться то что ты хочешь, только как, я не знаю))) »
во во :) и я о том же :)
P.S.: у меня и так был такой скрипт :)

svensoft
24-01-2010, 13:59
люди шарящие, ну помогите разобраться !!! Сценарий следующий : при открытии инсталлятора делается эмуляция отключения страниц приветствия "Welcome", выбора пути установки , вообщем сразу перепрыгиваем на страницу "Ready". Очень хочется включить на этой странице эффект ввода текста "печатной машинки". Есть алгоритм того-же действия, но на странице "Welcome". Всвязи с этим вопрос, какие парамметры надо вставить в код вместо : WelcomeLabel1, WelcomeLabel2, WelcomePage, так как действие происходит на странице "Ready" - надписи "Все готово к установке", "Программа установки готова начать установку ХХХ на ваш компьютер", "нажмите установить чтобы продолжить", пробовал заменить ReadyLabel1,ReadyLabel2, ReadyPage - ругается ?...

Вот код :

svensoft
24-01-2010, 14:09
люди шарящие, ну помогите разобраться !!! Сценарий следующий : при открытии инсталлятора делается эмуляция отключения страниц приветствия "Welcome", выбора пути установки , вообщем сразу перепрыгиваем на страницу "Ready". Очень хочется включить на этой странице эффект ввода текста "печатной машинки". Есть алгоритм того-же действия, но на странице "Welcome". Всвязи с этим вопрос, какие парамметры надо вставить в код вместо : WelcomeLabel1, WelcomeLabel2, WelcomePage, так как действие происходит на странице "Ready" - надписи "Все готово к установке", "Программа установки готова начать установку ХХХ на ваш компьютер", "нажмите установить чтобы продолжить", пробовал заменить ReadyLabel1,ReadyLabel2, ReadyPage - ругается ?... »


Извиняюсь, все уже сделал, уже не надо..

Но вот теперь другой вопрос появился на повестке дня, можно ли сделать так чтобы в инсталляторе с помощью bass.dll не только играла фоновая музыка (которая стартует при открытии и обрывается при завершения установки), а еще и при нажатие на педали проигрывались тоже мп3, не обрывая фоновую музыку ?.. Была такая мысль две bass.dl кидать в инсталлятор и потом для каждой прописать отдельный код (так как одна будет занята фоновой музыкой), но может как-то с помощью одной можно сделать ?..

YURSHAT
24-01-2010, 14:50
при нажатие на педали проигрывались тоже мп3, »

При нажатии на педали вовсе не нужно использовать Bass , можно проигрывать музыку через винду.

function mciSendString(lpstrCommand, lpstrReturnString: PAnsiChar; uReturnLength: Cardinal; hWndCallback: HWND): Cardinal; external 'mciSendStringA@winmm.dll stdcall';

procedure нажатие на педаль;
begin
mciSendString('stop '+ExpandConstant('{tmp}\click.wav'), 'NULL', 0, 0);
mciSendString('play '+ExpandConstant('{tmp}\click.wav'), 'NULL', 0, 0);
end;

svensoft
24-01-2010, 15:08
При нажатии на педали вовсе не нужно использовать Bass , можно проигрывать музыку через винду. »

YURSHAT
О, и здесь ты рулишь !!! Спасибо еще раз, прямо сегодня праздник ты мне подарил в разбирание скриптов !!!..А вот если такой вариант : Играет уже фоновая музыка и при открытие страницы Ready надо включить озвучку "мой ля ля " (mp3), и как только пользователь жмет "Установить" мой ля ля обрывается, но фоновая музыка остается играть. Можно ли так сделать вообще ?..

================================
Где бы почитать синтаксис inno setup ?..

YURSHAT
24-01-2010, 16:27
Можно ли так сделать вообще ?.. »

Легко. [Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.

[Files]
Source: "button.bmp"; Flags: dontcopy;
Source: "click.wav"; Flags: dontcopy;
Source: "sound.mp3"; Flags: dontcopy;

[Code_]
const
ButtonWidth = 80;
ButtonHeight = 23;
bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

function mciSendString(lpstrCommand, lpstrReturnString: PAnsiChar; uReturnLength: Cardinal; hWndCallback: HWND): Cardinal;
external 'mciSendStringA@winmm.dll stdcall';

var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left := 0;
mciSendString('stop '+ExpandConstant('{tmp}\click.wav'), 'NULL', 0, 0);
mciSendString('play '+ExpandConstant('{tmp}\click.wav'), 'NULL', 0, 0);
case TLabel(Sender).Tag of
bidBack: Button := WizardForm.BackButton;
bidNext: Button := WizardForm.NextButton;
bidCancel: Button := WizardForm.CancelButton;
bidDirBrowse: Button := WizardForm.DirBrowseButton;
bidGroupBrowse: Button := WizardForm.GroupBrowseButton;
else
Exit
end
Button.OnClick(Button);
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left := -ScaleX(ButtonWidth);
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left := 0;
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;
begin
Panel := TPanel.Create(WizardForm);
Panel.Left := AButton.Left;
Panel.Top := AButton.Top;
Panel.Width := AButton.Width;
Panel.Height := AButton.Height;
Panel.Tag := AButtonIndex;
Panel.Parent := AButton.Parent;
ButtonPanel[AButtonIndex] := Panel;

Image := TBitmapImage.Create(WizardForm);
Image.Width := ScaleX(160);
Image.Height := ScaleY(23);
Image.Enabled := False;
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'));
Image.Stretch := True;
Image.Parent := Panel;
ButtonImage[AButtonIndex] := Image;

with TLabel.Create(WizardForm) do begin
Tag := AButtonIndex;
Parent := Panel;
Width := Panel.Width;
Height := Panel.Height;
Transparent := True;
OnClick := @ButtonLabelClick;
OnDblClick := @ButtonLabelClick;
OnMouseDown := @ButtonLabelMouseDown;
OnMouseUp := @ButtonLabelMouseUp;
end;

Labl := TLabel.Create(WizardForm);
Labl.Top := ScaleY(ButtonHeight) div 5;
Labl.Autosize := True;
Labl.Alignment := taCenter;
Labl.Tag := AButtonIndex;
Labl.Transparent := True;
Labl.Font.Color := clWhite;
Labl.Caption := AButton.Caption;
Labl.OnClick := @ButtonLabelClick;
Labl.OnDblClick := @ButtonLabelClick;
Labl.OnMouseDown := @ButtonLabelMouseDown;
Labl.OnMouseUp := @ButtonLabelMouseUp;
Labl.Parent := Panel;
ButtonLabel[AButtonIndex] := Labl;
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption := AButton.Caption;
ButtonPanel[AButtonIndex].Visible := AButton.Visible;
ButtonLabel[AButtonIndex].Enabled := Abutton.Enabled;
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled := True;
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled := False;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('button.bmp');
ExtractTemporaryFile('click.wav');
ExtractTemporaryFile('sound.mp3');

WizardForm.BackButton.Left := WizardForm.BackButton.Left - ScaleX(7);
WizardForm.BackButton.Width := ScaleX(ButtonWidth);
WizardForm.BackButton.Height := ScaleY(ButtonHeight);

WizardForm.NextButton.Width := ScaleX(ButtonWidth);
WizardForm.NextButton.Height := ScaleY(ButtonHeight);

WizardForm.CancelButton.Width := ScaleX(ButtonWidth);
WizardForm.CancelButton.Height := ScaleY(ButtonHeight);

WizardForm.DirBrowseButton.Left := ScaleX(337);
WizardForm.DirBrowseButton.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height div 2 - ScaleY(ButtonHeight) div 2;
WizardForm.DirBrowseButton.Width := ScaleX(ButtonWidth);
WizardForm.DirBrowseButton.Height := ScaleY(ButtonHeight);

WizardForm.GroupBrowseButton.Left := ScaleX(337);
WizardForm.GroupBrowseButton.Top := WizardForm.GroupEdit.Top + WizardForm.GroupEdit.Height div 2 - ScaleY(ButtonHeight) div 2;
WizardForm.GroupBrowseButton.Width := ScaleX(ButtonWidth);
WizardForm.GroupBrowseButton.Height := ScaleY(ButtonHeight);

WizardForm.LicenseAcceptedRadio.OnClick := @LicenceAcceptedRadioOnClick;

WizardForm.LicenseNotAcceptedRadio.OnClick := @LicenceNotAcceptedRadioOnClick;

LoadButtonImage(WizardForm.BackButton,bidBack);
LoadButtonImage(WizardForm.NextButton,bidNext);
LoadButtonImage(WizardForm.CancelButton,bidCancel);
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse);
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack);
UpdateButton(WizardForm.NextButton,bidNext);
UpdateButton(WizardForm.CancelButton,bidCancel);

ButtonLabel[bidBack].Left := ButtonPanel[bidBack].Width div 2 - ButtonLabel[bidBack].Width div 2;
ButtonLabel[bidNext].Left := ButtonPanel[bidNext].Width div 2 - ButtonLabel[bidNext].Width div 2;
ButtonLabel[bidCancel].Left := ButtonPanel[bidCancel].Width div 2 - ButtonLabel[bidCancel].Width div 2;
ButtonLabel[bidDirBrowse].Left := ButtonPanel[bidDirBrowse].Width div 2 - ButtonLabel[bidDirBrowse].Width div 2;
ButtonLabel[bidGroupBrowse].Left := ButtonPanel[bidGroupBrowse].Width div 2 - ButtonLabel[bidGroupBrowse].Width div 2;

if CurPageID = wpReady then
begin
mciSendString('play '+ExpandConstant('{tmp}\sound.mp3'), 'NULL', 0, 0);
end;

if CurPageID = wpInstalling then
begin
mciSendString('stop '+ExpandConstant('{tmp}\sound.mp3'), 'NULL', 0, 0);
end;
end;

svensoft
24-01-2010, 18:42
Легко. »

YURSHAT, Здорово !!! Большое, большое спасибо !!! Прямо слов нет, один восторг....))




© OSzone.net 2001-2012