Войти

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


Страниц : 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

Duality
21-11-2010, 23:27
ок. спасибо, однако я не доописал ситуацию - есть компоненты:
a. 1
2

b. 1
2
3
4

нужно привязать эту функцию к компонентам b (1,2,3,4) - чтобы функция проверяла имеено их, выбраны они или нет. а компоненты а(1,2) не важны.

просто сам я не могу додумать как это сделать...

serg aka lain
22-11-2010, 00:17
нужно привязать эту функцию к компонентам b (1,2,3,4) - чтобы функция проверяла имеено их, выбраны они или нет. а компоненты а(1,2) не важны.
просто сам я не могу додумать как это сделать... »

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program

[Components]
Name: a; Description: a; Types: full compact custom;
Name: a\1; Description: a1; Types: full compact custom;
Name: a\2; Description: a2; Types: full compact custom;
Name: b; Description: b; Types: full compact custom;
Name: b\1; Description: b1; Types: full compact custom;
Name: b\2; Description: b2; Types: full compact custom;
Name: b\3; Description: b3; Types: full compact custom;
Name: b\4; Description: b4; Types: full compact custom;

[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;

if (CurPageID = wpSelectComponents) and (IsComponentSelected('b') = False)
and (IsComponentSelected('b\1') = False) and (IsComponentSelected('b\2') = False)
and (IsComponentSelected('b\3') = False) and (IsComponentSelected('b\4') = False) then
begin
MsgBox('Не выбрано ни одиного из компонентов "b"!', mbInformation, MB_OK);
Result := False;
end;
end;

ASMatic
22-11-2010, 03:35
Здравствуйте,
помогите плз,а то вообще не догадываюсь как сделать:

Програмно (в секции CODE) изменить путь к распаковке,т .е. у меня нету страницы по выбору папки, путь получаю с реестра и туда надо распаковывать. {app} := MyPath; - тип того)
???

ASMatic
22-11-2010, 04:00
с этим разобрался:
DefaultDirName=={code:GetInstallPath}\My Program
чудом с СДК нашел)

возник другой вопрос:
Есть набор файлов который надо расположить в определенную папку(как обычно, распакуется и норм) еще есть два файла которые должны быть распакованы в зависимости от версии, версии то я разобрался что и как а вот как в тех ифах повписывать дабы взяло мне именно тот файл что мне надо распаковать....
Как понимаю нужно установить dontcopy флаг при описании файловой секции на тех файлах что не будем копировать,а вот как его заставить именно тот что надо файл распаковать в папку {app} "по требованию" ??
хелп..

Duality
22-11-2010, 05:01
А так » а так спасибо БОЛЬШОЕ помогло :up

R.i.m.s.k.y.
22-11-2010, 08:30
почему в install.exe в параметр приходит текст "Edit.Text", а не текст с поля edit? »
Таков синтаксис этой секции в Инно. А Вам что конкретно надо?

Devils0411
23-11-2010, 00:26
Задачка ))
Необходимо сделать выбор между двумя константами (Допустим Const1=5, Const2=8) Соответственно... при выборе одной из констант, значение добавляется в секцию
[Settings]
Chislo="значение выбранной константы"
ini-файла.. В начало или в конец секции не важно... Главное чтоб не затирало всю секцию, или того хуже весть ini-файл.

Habetdin
23-11-2010, 01:02
Devils0411, [Ini]
filename: {app}\Data.ini; section: Settings; key: Chislo; string: {code:MyNumber};

[Code]
function MyNumber(Param: String): String;
begin
randomize;
if random(5)>2 then Result:='8'
else Result:='5';
end;

Devils0411
23-11-2010, 01:16
Habetdin, Моя ошибка... забыл уточнить... выбор константы выбирается из [Components]
Имеется ввиду, что при запуске инсталлятора, программка остановится на выпадающем меню с выбором константы. После выбранного пункта, константа записывается в ini файл.

#define Const1 "5"
#define Const2 "8"

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName=.\My Program

[Name]
Name: "russian"; Name: "compiler:Name\Russian.isl"

[Components]
Name: "Const1"; Description: "{#Const1} -> data.ini"; Types: "Const1";
Name: "Const2"; Description: "{#Const2} -> data.ini"; Types: "Const2";

[Types]
Name: "Const1"; Description: "{#Const1} -> data.ini";
Name: "Const2"; Description: "{#Const2} -> data.ini";

truth
23-11-2010, 17:58
Доброго времени суток. Тут вот какая задача..


[Files]
Source: ..\..\..\ololo\ololo.exe; DestDir: {app}\ololo\; Flags: onlyifdoesntexist

[Run]
Filename: {app}\ololo\ololo.exe; WorkingDir: {app}\ololo; Flags: nowait


Как правильно применить параметр Check на запуск (та и на установку можно) файла ololo.exe так, чтобы он запускался только в том случае, если он не запущен ранее? :dont-know
Если есть процесс ololo.exe - не устанавливаем (и не запускаем), если нет - устанавливаем и запускаем.

Habetdin
23-11-2010, 18:43
Devils0411, тогда так:
#define Const1 "5"
#define Const2 "8"

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Types]
Name: "Const1"; Description: "{#Const1} -> data.ini";
Name: "Const2"; Description: "{#Const2} -> data.ini";

[Components]
Name: "Const1"; Description: "{#Const1} -> data.ini"; Types: "Const1";
Name: "Const2"; Description: "{#Const2} -> data.ini"; Types: "Const2";

[Ini]
filename: {app}\Data.ini; section: Settings; key: Chislo; string: {#Const1}; Components: Const1;
filename: {app}\Data.ini; section: Settings; key: Chislo; string: {#Const2}; Components: Const2;

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

vint56
24-11-2010, 09:22
Помогите пожалуйста как вот это сделать только через код
@echo off
set SRC="L:\Call of Duty- Black Ops_disk1.sim"
set DST="c:\Games\Call of Duty: Black Ops"
SimPack.exe x %SRC% %DST% -g42700 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1
SimPack.exe x %SRC% %DST% -g42701 -kBAD1EC97BB5FB39A08D70AEDAB239DDC -n1
SimPack.exe x %SRC% %DST% -g42702 -kAC17FBAE013EB5D5A549EBF9907C78A5 -n1
SimPack.exe x %SRC% %DST% -g42709 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1
pause

Habetdin
24-11-2010, 19:07
vint56, если {app}=c:\Games\Call of Duty: Black Ops и файлы Call of Duty- Black Ops_disk1.sim, SimPack.exe расположены рядом с инсталлятором, то:
#define SRCFILE '{src}\Call of Duty- Black Ops_disk1.sim'

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Run]
Filename: "{src}\SimPack.exe"; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42700 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1"; WorkingDir: {src}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard;
Filename: "{src}\SimPack.exe"; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42701 -kBAD1EC97BB5FB39A08D70AEDAB239DDC -n1"; WorkingDir: {src}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard;
Filename: "{src}\SimPack.exe"; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42702 -kAC17FBAE013EB5D5A549EBF9907C78A5 -n1"; WorkingDir: {src}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard;
Filename: "{src}\SimPack.exe"; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42709 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1"; WorkingDir: {src}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard;

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

vint56
24-11-2010, 20:10
Habetdin,Большое тебе спасибо за помошь и еще один вопрос а как можно сделать чтобы он искал файл на dvd приваде
#define SRCFILE '{drive:{src}}\Call of Duty- Black Ops_disk1.sim' что не работает

Habetdin
24-11-2010, 22:07
vint56, только что проверил, работает:
#define SRCFILE '{drive:{src}}\Call of Duty- Black Ops_disk1.sim'

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Code]
function InitializeSetup(): Boolean;
begin
MsgBox(ExpandConstant('{#SRCFILE}'), mbInformation, MB_OK);
end;

Если инсталлятор расположен в корне диска, то использовать {drive:...} не обязательно

vint56
24-11-2010, 22:51
Habetdin, если просто делать с {src} то работает если файлы лежат возле setup.exe а мне хотелось как не будь сделать ставил образ в DAEMON Tools чтобы распаковка шла с диска а не копировать файлы на жёсткий диск
#define SRCFILE '{drive:{src}}\Call of Duty- Black Ops_disk1.sim'

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Run]
Filename: {tmp}\SimPack.exe; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42700 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1"; WorkingDir: {drive:{src}}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard
Filename: {tmp}\SimPack.exe; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42701 -kBAD1EC97BB5FB39A08D70AEDAB239DDC -n1"; WorkingDir: {drive:{src}}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard
Filename: {tmp}\SimPack.exe; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42702 -kAC17FBAE013EB5D5A549EBF9907C78A5 -n1"; WorkingDir: {drive:{src}}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard
Filename: {tmp}\SimPack.exe; Parameters: "x ""{#SRCFILE}"" ""{app}"" -g42709 -kD9AD91A8DB3258C4C8210D505DCB0F70 -n1"; WorkingDir: {drive:{src}}; StatusMsg: Распаковка файлов...; Flags: waituntilterminated HideWizard

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: SimPack.exe; DestDir: {tmp}
Source: GcfFiles.dat; DestDir: {tmp}

Habetdin
25-11-2010, 00:07
vint56, чтобы распаковка шла с диска а не копировать файлы на жёсткий диск »
Где вы увидели копирование? В приведенных выше примерах и инсталлятор, и SimPack.exe, и Call of Duty- Black Ops_disk1.sim будут на CD/DVD/там, где вы расположите
А вот {tmp} »
...это как раз с копированием на жесткий диск во временную папку :closed-to

Попробуйте скомпилить скрипт из моего предыдущего поста (http://forum.oszone.net/post-1550872-55.html) и запустить его с C:\, D:\ итд, посмотреть что он показывает в начале.. :)

shao
25-11-2010, 17:12
Может кто знает - почему после редактирования в Рестораторе версии инсталлятора , созданного в Инно,
при попытке запуска получается вот такая вот ситуация :

http://img155.imageshack.us/img155/5503/2we3.jpg

Habetdin
25-11-2010, 19:23
shao, потому что проверяется CRC :)
Используйте VersionInfoVersion
По умолчанию VersionInfoVersion=0.0.0.0

necromanster
26-11-2010, 12:24
Здравствуйте господа.

Подскажите пожалуйста, как в этом скрипте, сделать так, чтобы рисунок на первой странице был на весь инсталятор, а в конце установки (на последней странице инсталятора) можно было поставить обычный ресунок (который с боку). И еще. Подскажите пожалуйста, где здесь менять цвет текста в инсталяторе.

Заранее спасибо.


[\code\]
var
MyPanel: TPanel;

procedure InitializeWizard();
begin
MyPanel := TPanel.Create(WizardForm);
with MyPanel do
begin
Align := alClient;
Parent := WizardForm;
end;

with WizardForm.WizardBitmapImage do
begin
Align := alClient;
Parent := MyPanel;
end;

with TLabel.Create(WizardForm) do
begin
AutoSize := WizardForm.WelcomeLabel1.AutoSize;
WordWrap := WizardForm.WelcomeLabel1.WordWrap;
Left := WizardForm.WelcomeLabel1.Left;
Top := WizardForm.WelcomeLabel1.Top;
Width := WizardForm.WelcomeLabel1.Width;
Height := WizardForm.WelcomeLabel1.Height;
Caption := WizardForm.WelcomeLabel1.Caption;
Font.Size := WizardForm.WelcomeLabel1.Font.Size;
Font.Style := WizardForm.WelcomeLabel1.Font.Style;
Font.Color := clWhite;
TransParent := True;
Parent := MyPanel;
end;

with TLabel.Create(WizardForm) do
begin
AutoSize := WizardForm.WelcomeLabel2.AutoSize;
WordWrap := WizardForm.WelcomeLabel2.WordWrap;
Left := WizardForm.WelcomeLabel2.Left;
Top := WizardForm.WelcomeLabel2.Top;
Width := WizardForm.WelcomeLabel2.Width;
Height := WizardForm.WelcomeLabel2.Height;
Caption := WizardForm.WelcomeLabel2.Caption;
Font.Size := WizardForm.WelcomeLabel2.Font.Size;
Font.Style := WizardForm.WelcomeLabel2.Font.Style;
Font.Color := clWhite;
TransParent := True;
Parent := MyPanel;
end;

WizardForm.NextButton.BringToFront;
WizardForm.CancelButton.BringToFront;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
MyPanel.Hide;
if CurPageID = wpWelcome then
MyPanel.Show;
end;




© OSzone.net 2001-2012