Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
ок. спасибо, однако я не доописал ситуацию - есть компоненты:
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;
Здравствуйте,
помогите плз,а то вообще не догадываюсь как сделать:
Програмно (в секции CODE) изменить путь к распаковке,т .е. у меня нету страницы по выбору папки, путь получаю с реестра и туда надо распаковывать. {app} := MyPath; - тип того)
???
с этим разобрался:
DefaultDirName=={code:GetInstallPath}\My Program
чудом с СДК нашел)
возник другой вопрос:
Есть набор файлов который надо расположить в определенную папку(как обычно, распакуется и норм) еще есть два файла которые должны быть распакованы в зависимости от версии, версии то я разобрался что и как а вот как в тех ифах повписывать дабы взяло мне именно тот файл что мне надо распаковать....
Как понимаю нужно установить dontcopy флаг при описании файловой секции на тех файлах что не будем копировать,а вот как его заставить именно тот что надо файл распаковать в папку {app} "по требованию" ??
хелп..
А так » а так спасибо БОЛЬШОЕ помогло :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";
Доброго времени суток. Тут вот какая задача..
[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
Помогите пожалуйста как вот это сделать только через код
@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
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:...} не обязательно
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:\ итд, посмотреть что он показывает в начале.. :)
Может кто знает - почему после редактирования в Рестораторе версии инсталлятора , созданного в Инно,
при попытке запуска получается вот такая вот ситуация :
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.