PDA

Показать полную графическую версию : [архив] Скрипты 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

Cranz86
27-11-2009, 17:21
Люди помогите с проблемой, делаю новую страницу, все что в ней надо сделать, сделал, а как на ней разместить все "галочки" не пойму, они появляются на предыдущей странице...это вырезка из кода:

[Tasks]
Name: "desktopicon"; Description: "Create &desktop icons"; GroupDescription: "Additional icons:"; MinVersion: 4,4
Name: Toolbar; Description: "Instal Toolbar"; GroupDescription: "WWW";


[Co&de]
var
Page: TWizardPage;
procedure InitializeWizard();
begin
Page:= CreateCustomPage(wpInstalling, 'Realore Toolbar Installation', 'Thank you for choosing to install GAMENAME. After installation of the application, you can also get the official Realore toolbar. The toolbar gives you instant access to cool tools like radio, weather, e-mail notifier and more.');
end;

Serega
27-11-2009, 17:56
помогите с проблемой, делаю новую страницу »
Вам нужно использовать функцию CreateInputOptionPage

Описание:
Создание страницы мастера, содержащей флажки (check box) и переключатели (radio button).

Если Exclusive=True, вместо флажков будут отображены переключатели, и в этом случае может быть выбран только один пункт из списка. Если ListBox=True, флажки или переключатели будут помещены в прокручиваемый список.

Замечания:
Для создания на странице флажков/переключателей используется метод Add. Для добавления/считывания состояния флажка/переключателя используется свойство Values. Страницы, для которых Exclusive=True, можно добавить/считать состояние выбранного пункта в SelectedValueIndex.

Например:

var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
...
// Создание страницы
Page := CreateInputOptionPage(wpWelcome,
'Лицензионное соглашение', 'Вы зарегистрированный пользователь?',
'Если вы зарегистрированы, поставьте флажок ниже и нажмите Далее.',False, False);

// Добавление значений
Page.Add('Я зарегистрированный пользователь');

// Задание первоначальных значений (не обязательно)
Page.Values[0] := False;
...
// Передача значений переменным
IsRegisteredUser := Page.Values[0];

A1EXXX
27-11-2009, 20:18
Serega, не знаете, как цвет прогресс-бара поменять? Хотелось бы где-то такой... http://s05.radikal.ru/i178/0911/a4/56a187682cf0.png

Serega
27-11-2009, 23:17
как цвет прогресс-бара поменять? »
Посмотрите здесь (http://forum.ru-board.com:9000/topic.cgi?forum=5&topic=30413&start=766#5) в сообщении SotM сделал скриншот, а через три сообщения сам скрипт.

A1EXXX
27-11-2009, 23:37
Serega, спасибо. Не знаете, как здесь (http://s51.radikal.ru/i134/0911/7f/5da8acad9aee.jpg) (и на следующих страницах) сделать прозрачность? Пробовал что-то вымутить из вашего скрипта (http://www.forum.oszone.ru/post-1242285-250.html), но ничего не получилось :( [Setup]
AppName=Status Panel
AppVerName=Status Panel
DefaultDirName={pf}\Test
DefaultGroupName=Status Panel
WizardImageFile=compiler:WizModernImage.bmp
OutputDir=.
OutputBaseFilename=status_panel
DisableReadyPage=True

[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
; Test
Source: "{sys}\*.dll"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall;

[Icons]
Name: "{group}\Удалить StatusPanel"; Filename: "{uninstallexe}";

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

var
Welcome, Edit1, Edit2, Ready1, Ready2,
Setup1, Setup2, Finish1, Finish2: TLabel;

procedure InitializeWizard();
begin
WizardForm.Font.Color:= clWhite;
WizardForm.ClientWidth := ScaleX(680);
WizardForm.ClientHeight := ScaleY(480);
WizardForm.Bevel.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;

WizardForm.WizardBitmapImage.Left := ScaleX(0);
WizardForm.WizardBitmapImage.Top := ScaleY(0);
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;
WizardForm.WizardBitmapImage.Parent := WizardForm;
WizardForm.WizardBitmapImage2.Hide;

Welcome := TLabel.Create(WizardForm);
Welcome.Top := ScaleY(45);
Welcome.Caption := 'Приветствие';
Welcome.Transparent := True;
Welcome.Parent := WizardForm;

Edit1 := TLabel.Create(WizardForm);
Edit1.Left := WizardForm.ClientWidth / 5;
Edit1.Top := ScaleY(45);
Edit1.Width := WizardForm.ClientWidth / 5;
Edit1.AutoSize := False;
Edit1.Caption := '|';
Edit1.Transparent := True;
Edit1.Parent := WizardForm;

Edit2 := TLabel.Create(WizardForm);
Edit2.Top := ScaleY(45);
Edit2.Caption:= 'Параметры';
Edit2.Transparent := True;
Edit2.Parent := WizardForm;

Ready1 := TLabel.Create(WizardForm);
Ready1.Left := Edit1.Left + Edit1.Width;
Ready1.Top := ScaleY(45);
Ready1.Width := WizardForm.ClientWidth / 5;
Ready1.AutoSize := False;
Ready1.Caption := '|';
Ready1.Transparent := True;
Ready1.Parent := WizardForm;

Ready2 := TLabel.Create(WizardForm);
Ready2.Top := ScaleY(45);
Ready2.Caption := 'Меню "Пуск"';
Ready2.Transparent := True;
Ready2.Parent := WizardForm;

Setup1 := TLabel.Create(WizardForm);
Setup1.Left := Ready1.Left + Ready1.Width;
Setup1.Top := ScaleY(45);
Setup1.Width := WizardForm.ClientWidth / 5;
Setup1.AutoSize := False;
Setup1.Caption := '|';
Setup1.Transparent := True;
Setup1.Parent := WizardForm;

Setup2 := TLabel.Create(WizardForm);
Setup2.Top := ScaleY(45);
Setup2.Caption := 'Установка';
Setup2.Transparent := True;
Setup2.Parent := WizardForm;

Finish1 := TLabel.Create(WizardForm);
Finish1.Left := Setup1.Left + Setup1.Width;
Finish1.Top := ScaleY(45);
Finish1.Width := WizardForm.ClientWidth / 5;
Finish1.AutoSize := False;
Finish1.Caption := '|';
Finish1.Transparent := True;
Finish1.Parent := WizardForm;

Finish2 := TLabel.Create(WizardForm);
Finish2.Top := ScaleY(45);
Finish2.Caption := 'Готово';
Finish2.Transparent := True;
Finish2.Parent := WizardForm;

WizardForm.BackButton.Top := WizardForm.BackButton.Top + ScaleY(110);
WizardForm.NextButton.Top := WizardForm.NextButton.Top + ScaleY(110);
WizardForm.CancelButton.Top := WizardForm.CancelButton.Top + ScaleY(110);

WizardForm.OuterNotebook.Left := WizardForm.Width / 2 - WizardForm.OuterNotebook.Width / 2;
WizardForm.OuterNotebook.Top := ScaleY(105);
WizardForm.InnerNotebook.Top := ScaleY(10);

WizardForm.Left := GetSystemMetrics(0) / 2 - WizardForm.Width / 2;
WizardForm.Top := GetSystemMetrics(1) / 2 - WizardForm.Height / 2;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
Welcome.Font.Color := clSilver;
Edit1.Font.Color := clSilver;
Edit2.Font.Color := clSilver;
Ready1.Font.Color := clSilver;
Ready2.Font.Color := clSilver;
Setup1.Font.Color := clSilver;
Setup2.Font.Color := clSilver;
Finish1.Font.Color := clSilver;
Finish2.Font.Color := clSilver;

Welcome.Left := WizardForm.ClientWidth / 5 / 2 - Welcome.Width / 2;
Edit2.Left := Edit1.Left + Edit1.Width / 2 - Edit2.Width / 2;
Ready2.Left := Ready1.Left + Ready1.Width / 2 - Ready2.Width / 2;
Setup2.Left := Setup1.Left + Setup1.Width / 2 - Setup2.Width / 2;
Finish2.Left := Finish1.Left + Finish1.Width / 2 - Finish2.Width / 2;

if CurPageID = wpWelcome then
begin
Welcome.Font.Color := clWhite;
Edit1.Font.Color := clWhite;
end;

if CurPageID = wpSelectDir then
begin
Edit1.Font.Color := clWhite;
Edit2.Font.Color := clWhite;
Ready1.Font.Color := clWhite;
end;

if CurPageID = wpSelectProgramGroup then
begin
Ready1.Font.Color := clWhite;
Ready2.Font.Color := clWhite;
Setup1.Font.Color := clWhite;
WizardForm.NextButton.Caption := 'Установить';
end;

if CurPageID = wpInstalling then
begin
Setup1.Font.Color := clWhite;
Setup2.Font.Color := clWhite;
Finish1.Font.Color := clWhite;
end;

if CurPageID = wpFinished then
begin
Finish1.Font.Color := clWhite;
Finish2.Font.Color := clWhite;
end;
end;

Serega
28-11-2009, 00:21
как здесь (и на следующих страницах) сделать прозрачность? »
Придётся создавать панель, и на неё накладывать все контролы, присмотритесь внимательней к процедуре CurPageChanged в моём скрипте, там сначала создаётся панель.

A1EXXX
28-11-2009, 00:35
Serega, ого... :( Спасибо за наводку....

CrOsP
28-11-2009, 10:54
Подскажите ребята как добавил данный тут скрипт чтобы повесить картинку на ссылку дак теперь очень долго инстал запускается вот видео Скачать (http://depositfiles.com/files/lvc0f32ht)

A1EXXX
28-11-2009, 12:16
CrOsP, все мелкие файлы (картинки, dll'ки и т.д.) записывай в начало секции [Files], а папки с файлами с самый конец! Пример: [Files]
Source: C:\1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\1.mp3; DestDir: {tmp}; Flags: dontcopy
Source: C:\Program Files\Inno Setup 5\InnoCallback.dll; Flags: dontcopy noencryption solidbreak;;
Source: C:\2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: "D:\Games\Call Of Duty 4\iw3sp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Games\Call Of Duty 4\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

A1EXXX
28-11-2009, 17:03
Serega, создавать панель я не умею, но на примере, в принципе, понял... Вот только я не знаю, как нанести контролы из моего скрипта на ваш... Пробовал просто соединить, получилось с прозрачностью, но без рюшек, создаваемых через Welcome, Edit1 и т.д. (другого не ожидал, но попробовать стоило :)) В общем, без напутствий (или подсказки, примерчика) мне снова никак :(
А пока буду ещё пробовать что-нибудь написать...
[hr]
Inno Setup Compiler v5.3.6 build 091128 (English) (http://restools.hanzify.org/inno/InnoCompiler091128_English(7zip).zip) by Restools (http://restools.hanzify.org/)

DemonAk
29-11-2009, 19:28
кто нибудь смог допетрить как прикрутить запрос второго диска к скрипту Виктора Доброва (FreeArc_Example-Ext.iss (http://freearc.org/download/InnoSetup/FreeArc4InnoSetup3_4.zip))??, Попробовал прикрутить из этого примера #define MyAppName "Test"
#define MyAppVerName "Test"
#define MyAppExeName "Test.exe"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
DirExistsWarning=no
;DisableReadyPage=true
ShowLanguageDialog=auto
OutputBaseFilename=setup
OutputDir=.
UninstallDisplayIcon={app}\{#MyAppExeName}
DefaultGroupName={#MyAppName}
InternalCompressLevel=none
Compression=none

[UninstallDelete]
Type: filesandordirs; Name: {app}

[Languages]
Name: eng; MessagesFile: compiler:Default.isl
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: C:\Program Files\FreeArc\bin\Arc.exe; DestDir: {tmp}; Flags: dontcopy

[CustomMessages]
ExtrError=Произошла ошибка во время извлечения данных. Установка будет прервана.

[Code]
var
SecondProgressBar: TNewProgressBar;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Hide;
WizardForm.StatusLabel.Top:=ScaleY(81);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.StatusLabel.Width:=ScaleX(400);
WizardForm.ProgressGauge.Top:=ScaleY(100);
WizardForm.ProgressGauge.Left:=ScaleX(155);
WizardForm.ProgressGauge.Width:=ScaleX(262);

SecondProgressBar := TNewProgressBar.Create(WizardForm);
with SecondProgressBar do
begin
Parent := WizardForm.InstallingPage;
Left := ScaleX(0);
Top := ScaleY(100);
Width := ScaleX(150);
Height := ScaleY(21);
Min := 0;
Max := 13; //задается как (кол-во распаковываемых архивов * 3) + 1
end;
end;

procedure PlsInsertNextDisk(num: integer; CheckedFile: string);
var Capt:string;
begin
CheckedFile:=ExpandConstant(CheckedFile);
if not FileExists(CheckedFile) then begin
Capt:='Пожалуйста, вставьте диск %n, содержащий файл %f и нажмите ОК для продолжения установки.';
StringChange(Capt, '%n', inttostr(num));
StringChange(Capt, '%f', ExtractFileName(CheckedFile));
MsgBox(Capt, mbInformation, MB_OK);
PlsInsertNextDisk(num, CheckedFile);
end;
end;

procedure ExtractArc(arcArchName,arcDestDir:string);
var ResCode:integer;
begin
WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
Exec(ExpandConstant('{tmp}\arc.exe'), 'x '+AddQuotes(ExpandConstant(arcArchName))+' -y -dp'+AddQuotes(ExpandConstant(arcDestDir)), '', SW_HIDE, ewWaitUntilTerminated, ResCode);
if (ResCode <> 0) then begin
MsgBox(ExpandConstant('{cm:ExtrError}'), mbCriticalError, MB_OK);
SecondProgressBar.Hide;
DelTree(ExpandConstant('{app}'), True, True, True);
Abort;
end else
SecondProgressBar.Position:= SecondProgressBar.Position+3
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then begin
WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
ExtractTemporaryFile('arc.exe');
SecondProgressBar.Position:=SecondProgressBar.Position+1;

ExtractArc('{src}\data-1.arc','{app}');
ExtractArc('{src}\data-2.arc','{app}');

PlsInsertNextDisk(2, '{src}\data-3.arc'); //если data4.arc не найден в корне диска, просим второй диск
ExtractArc('{src}\data-3.arc','{app}');
ExtractArc('{src}\data-4.arc','{app}');
PlsInsertNextDisk(1, '{src}\data-1.arc'); //снова просим первый диск
end;
end; Но ничего не вышло, сразу как только должен распаковывать запрашивает 2ой диск с отсутствующим файлом не распаковав первый архив =\

Cranz86
30-11-2009, 15:14
Помогите пожалуйста исску доработать. Вот что есть:

var
CheckPage: TInputOptionWizardPage;
procedure InitializeWizard;
begin
CheckPage := CreateInputOptionPage(wpInstalling, 'Realore Toolbar Installation', 'Thank you for choosing to install GAMENAME.', 'After installation of the application, you can also get the official Realore toolbar. The toolbar gives you instant access to cool tools like radio, weather, e-mail notifier and more.', False, False);
CheckPage.Add('Instal Toolbar');
end;
function NextButtonClick(CurPageID: Integer): Boolean;
var
I: Integer;
begin
if CurPageID = CheckPage.ID then
if CheckPage.Values[0] then begin
Exec(ExpandConstant('{src}\RealoreStudios.exe'),
'/silent /param2',
ExpandConstant('{src}'),
SW_HIDE,
ewWaitUntilIdle,
i);
end;
Result := True;
end;


на этом же экране надо (красный цвет):
http://i043.radikal.ru/0911/76/d6b3d54ec1bet.jpg (http://radikal.ru/F/i043.radikal.ru/0911/76/d6b3d54ec1be.jpg.html)

LonerD
30-11-2009, 20:18
Как сделать, чтобы можно было установить не только в папку или подпапку, но и прямо на диск, то есть в окне выбора места установки можно было указать корень диска C:\ или D:\ ?

Если выбираю установку на диск, то выскакивает окошко:

Вы должны указать полный путь с буквой диска, например:
С:\APP
или в формате UNC:
\\имя_сервера\имя_ресурса

Нужно, чтобы была возможность распаковать файлы в корень диска.
Странно, почему инсталлятор ставит перепоны в этом отношении. Вроде вполне стандартное желание - куда хочу, туда и распаковываю. Ан нет, приходится измываться.

UPD.
Все, нашел такую опцию:
AllowRootDirectory=yes

YURSHAT
01-12-2009, 00:55
Народ как добавить Title для MsgBox?
Например для этого
MsgBox('Not Enough Disk Space', mbError, MB_OK);

414895494
01-12-2009, 20:17
Добрый день...
Пожалуйста помогите мне реализовать вот это:

http://s41.radikal.ru/i092/0912/4b/bbfa20d6152b.jpg

DemonAk
01-12-2009, 20:22
Люди добрые, не подскажите?, нужно в окне инсталятора поле для ввода "ведите ник для сетевой игры. Послее ввода ника жмем далее и информация должна записаться в файл {app}\autoexec.cfg, вот так:
name "Ник который ввели"

serg aka lain
01-12-2009, 23:49
DemonAk, Думаю можно и так:


[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;


А это условие:
Послее ввода ника жмем далее и информация должна записаться в файл {app}\autoexec.cfg, вот так:
name "Ник который ввели"
возможно не раньше wpSelectDir, т.к. {app} ещё не была определена.

DemonAk
02-12-2009, 00:50
возможно не раньше wpSelectDir, т.к. {app} ещё не была определена. »
Да все нормально получилось, то что надо, спасибо еще раз ;)
serg aka lain
А не подскажешь по моему сообщению выше насчет запроса 2го и последующих дисков??, а то у меня знаний не хватает), может у тебя появятся какие нибудь мысли.

REXE
02-12-2009, 20:10
Такая проблема сделал инсталл с черным фоном,када нажимаю на сетап.ехе то сам инсталл появляется только через 5 мин как исправить скажите??

A1EXXX
02-12-2009, 20:23
REXE, это не из-за чёрного инсталла, решение вот... (http://forum.oszone.net/post-1281933-549.html)




© OSzone.net 2001-2012