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

Tukash
01-02-2010, 20:04
morozov-ch
{app}

lexikon
02-02-2010, 03:25
Serega,
благодарю! работает! только вот что указать DefaultDirName чтобы при выборе какой либо папки она не добавляло этот DefaultDirName
к примеру DefaultDirName = \MyProgram то в списке выбрав папку C:\Games у меня автоматически получится С:\Games\MyProgram
мне не надо что бы так получалось :)
заранее благодарю!

morozov-ch
02-02-2010, 07:42
Может я не правельно выразился или что-то не понимаю
Вот функция

//Настройка подключения к серверу.
procedure MyAfterInstall();
//Копирование файла настроек.
begin
FileCopy('{app}\Nastr.ini','{pf}\PPPPP\Nastr.ini', false);
end;

Не работает.

Serega
02-02-2010, 07:59
что указать DefaultDirName чтобы при выборе какой либо папки она не добавляло этот DefaultDirName »
Нужно просто указать AppendDefaultDirName=no, пример:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
AppendDefaultDirName=no
DefaultDirName={pf}\My Program
;*********и т.д.************;


Подскажите в какой переменной/константе в Inno Setup хранится путь к инсталятору.»
AddBackslash(ExpandConstant('{src}')) или ExtractFilePath(ExpandConstant('{srcexe}'))
{scr} - не проходит. »
есть {src}, вы спутали.
FileCopy('{app}\Nastr.ini','{pf}\PPPPP\Nastr.ini', false); »
забыли дописать ExpandConstant, т.е. надо так:

FileCopy(ExpandConstant('{app}\Nastr.ini'), ExpandConstant('{pf}\PPPPP\Nastr.ini'), False);

Cranz86
02-02-2010, 11:06
Народ, помогите пожалуйста с событиями. Понимаю что где то координально ошибся, но объясню что есть и что надо. Если первый чекбокс снять, то 2 и 3 благополучно снимаются, но делаются не кликабельными, а хочется что бы на их нажатие реагировал первый чекбокс, т.е. из двух событий работает первое и оно перекрывает второе.

procedure OnClickCheck(Sender: TObject);
begin
if №1Check.Checked = false then
begin
№2Check.Checked := false;
№3Check.Checked := false;
end;

if №2Check.Checked = true or №3Check.Checked = true then
begin
№1Check.Checked := true;
end;
end;

procedure InitializeWizard();
begin
CreateTheWizardPages;
№1Check.OnClick := @OnClickCheck;
№2Check.OnClick := @OnClickCheck;
№3Check.OnClick := @OnClickCheck;
end;

Jerichoman
02-02-2010, 13:04
Кто-нибудь помогите, плиз

Serega
02-02-2010, 14:47
Понимаю что где то координально ошибся, »
надо так:

procedure CheckOnClick_1(Sender: TObject);
begin
if not №1Check.Checked then
begin
№2Check.Checked:= False;
№3Check.Checked:= False;
end;
end;

procedure CheckOnClick_2(Sender: TObject);
begin
if №2Check.Checked or №3Check.Checked then
№1Check.Checked:= True;
end;

procedure InitializeWizard();
begin
CreateTheWizardPages;
№1Check.OnClick:= @CheckOnClick_1;
№2Check.OnClick:= @CheckOnClick_2;
№3Check.OnClick:= @CheckOnClick_2;
end;

svensoft
02-02-2010, 16:35
vint56, спасибо ..))

Sotonisto
02-02-2010, 18:04
Подскажите как сделать слайд шоу? »
Либо так:
[Setup]
WindowVisible=yes
WindowResizable=no
WindowShowCaption=no

[Files]
Source: C:\isxbb.dll; DestDir: {tmp}; Flags: dontcopy
Source: C:\1.jpg; DestDir: {tmp}; Flags: dontcopy
//////////файлы для слайд-шоу//////////
Source: C:\2.jpg; DestDir: {tmp}; Flags: dontcopy
Source: C:\3.jpg; DestDir: {tmp}; Flags: dontcopy
Source: C:\4.jpg; DestDir: {tmp}; Flags: dontcopy

[Code]
const
BACKGROUND=6;
TIMER=16;

function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';

function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';

function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';

function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin

///////В начале этапа установки запускаем слайд-шоу
if CurStep=ssInstall
then
begin
ExtractTemporaryFile('2.jpg');
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));

///////Таймер показа изображений, в секундах
isxbb_StartTimer(3,BACKGROUND)
end;

///////На завершающем этапе останавливаем таймер, при этом возвращается фоновое изображение по умолчанию
else if CurStep=ssPostInstall then
isxbb_KillTimer(BACKGROUND);
end;
Либо так:
[Setup]
WindowVisible=no

[Files]
Source: " D:\GAME\* "; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

///////Oпределяем файлы, перед установкой которых будет выполнена процедура смены изображения

Source: "D:\GAME\MOVIES\Intro.bik"; DestDir: "{app}\MOVIES"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: bbrd1;
Source: "D:\GAME\SOUNDS\Effects.pak"; DestDir: "{app}\SOUNDS"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: bbrd2;
Source: "D:\GAME\Core.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: bbrd3;
Source: "D:\GAME\TEXTURES\Models.pak"; DestDir: "{app}\TEXTURES"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: bbrd4;

///////Указываем основное фоновое и дополнительные изображения, показ которых будет выполнен через процедуры.

Source: C:\Background.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\bbrd1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\bbrd2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\bbrd3.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\bbrd4.bmp; DestDir: {tmp}; Flags: dontcopy

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

var
BackgroundBitmapImage: TBitmapImage;
s:string;
width, height: Integer;

///////Процедура для показа основного фонового изображения
procedure wizimage;
begin
WizardForm.Position:=poScreenCenter;
MainForm.BORDERSTYLE:=bsNone;
width:=GetSystemMetrics(0);
height:=GetSystemMetrics(1);
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
MainForm.Left := 0;
MainForm.Top := 0;
s:=ExpandConstant('{tmp}')+'\Background.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
MainForm.Visible:=True;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('Background.bmp');
///////Выполнение процедуры показа фонового изображения
wizimage;
end;

///////Размеры и параметры дополнительных изображений
procedure ImgSetting;
begin
MainForm.BORDERSTYLE:=bsNone;
MainForm.Width:=width;
MainForm.Height:=height;
width:=MainForm.ClientWidth;
height:=MainForm.ClientHeight;
MainForm.Left := 0;
MainForm.Top := 0;
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.AutoSize := False;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:= False;
MainForm.Visible:=True;
end;

///////Процедуры показа изображений
procedure bbrd1;
begin
ExtractTemporaryFile('bbrd1.bmp');
s:=ExpandConstant('{tmp}')+'\bbrd1.bmp';

///////Вставляем вышеуказанную процедуру
ImgSetting;
end;

procedure bbrd2;
begin
ExtractTemporaryFile('bbrd2.bmp');
s:=ExpandConstant('{tmp}')+'\bbrd2.bmp';
ImgSetting;
end;

procedure bbrd3;
begin
ExtractTemporaryFile('bbrd3.bmp');
s:=ExpandConstant('{tmp}')+'\bbrd3.bmp';
ImgSetting;
end;

procedure bbrd4;
begin
ExtractTemporaryFile('bbrd4.bmp');
s:=ExpandConstant('{tmp}')+'\bbrd4.bmp';
ImgSetting;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.CancelButton.BringToFront;
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;

///////Вставляем процедуру для показа первоначально фонового изображения
wizimage;
end
end;

P.S.: советую скачать Коллекцию скриптов (http://victor-dobrov.narod.ru/InnoSetupScripts.7z) (в шапке этой темы).

yamaha
02-02-2010, 19:20
Как сделать чтобы автоматом во время установки он запустил reg и без подтверждения добавил инфу?

YURSHAT
02-02-2010, 19:34
Как сделать чтобы автоматом во время установки он запустил reg и без подтверждения добавил инфу? »


Filename: {sys}\regedit.exe; Parameters: -s {app}\file.reg; WorkingDir: {sys}; StatusMsg: Внесение изменений в реестр...;

yamaha
02-02-2010, 19:46
Это в какую строчку вносить?

YURSHAT
02-02-2010, 19:55
Это в какую строчку вносить? »

[Run] :)

yamaha
02-02-2010, 20:19
Что-то пишет при установке что не может найти указанный файл и ссылается на папку систем32.

Sotonisto
03-02-2010, 03:24
yamaha, а не проще примерно так сделать?
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Electronic Arts\Need for Speed Carbon"; ValueType: string; ValueName: "DisplayName"; ValueData: "Need for Speed™ Carbon"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Electronic Arts\Need for Speed Carbon"; ValueType: string; ValueName: "Language"; ValueData: "Russian"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Electronic Arts\Need for Speed Carbon"; ValueType: string; ValueName: "Install Dir"; ValueData: "{app}\"; Flags: uninsdeletekey

МИШАНЧИК
03-02-2010, 06:35
Цитата Cranz86:
Понимаю что где то координально ошибся, »
надо так: »
Serega, не могли бы Вы выложить этот код в небольшом готовом для компилирования скрипте?
Заранее большое спасибо.

lexikon
03-02-2010, 07:32
Sotonisto, а в папке с игрой потом у тебя этот ключик не появляется? у меня так сделано но почему то устанавливается рег файл какой то)))

Tukash
03-02-2010, 13:59
Люди добрые помогите:
Как сделать чтобы программы устанавливались после распаковки архивов, а не после копирования файлов IS?
Тоесть я хочу что-бы разные приложения, типа DirectX(запускаемые из секции RUN:)), и т.д. предлогали установку после распаковки FreeArc архивов... тоесть перед самым завершением, такое вообще возможно?

Jerichoman
03-02-2010, 14:04
Неужели никто не может помочь http://s006.radikal.ru/i214/1002/ea/98c498168082.jpg :(

Tukash
03-02-2010, 14:21
Jerichoman
покажи скрипт!




© OSzone.net 2001-2012