Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
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;
Не работает.
что указать 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);
Народ, помогите пожалуйста с событиями. Понимаю что где то координально ошибся, но объясню что есть и что надо. Если первый чекбокс снять, то 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
Кто-нибудь помогите, плиз
Понимаю что где то координально ошибся, »
надо так:
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) (в шапке этой темы).
Как сделать чтобы автоматом во время установки он запустил reg и без подтверждения добавил инфу?
Как сделать чтобы автоматом во время установки он запустил reg и без подтверждения добавил инфу? »
Filename: {sys}\regedit.exe; Parameters: -s {app}\file.reg; WorkingDir: {sys}; StatusMsg: Внесение изменений в реестр...;
Это в какую строчку вносить?
Это в какую строчку вносить? »
[Run] :)
Что-то пишет при установке что не может найти указанный файл и ссылается на папку систем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, не могли бы Вы выложить этот код в небольшом готовом для компилирования скрипте?
Заранее большое спасибо.
Sotonisto, а в папке с игрой потом у тебя этот ключик не появляется? у меня так сделано но почему то устанавливается рег файл какой то)))
Люди добрые помогите:
Как сделать чтобы программы устанавливались после распаковки архивов, а не после копирования файлов IS?
Тоесть я хочу что-бы разные приложения, типа DirectX(запускаемые из секции RUN:)), и т.д. предлогали установку после распаковки FreeArc архивов... тоесть перед самым завершением, такое вообще возможно?
Jerichoman
03-02-2010, 14:04
Неужели никто не может помочь http://s006.radikal.ru/i214/1002/ea/98c498168082.jpg :(
Jerichoman
покажи скрипт!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.