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

necromanster
19-10-2010, 13:28
Здравствуйте господа.

У меня такая проблема.

Упаковал три папки FreeArc. Теперь возникла проблема как правильно в скриптах указать путь распаковки архивов. Тоесть мне нужно чтобы инсталятор распаковывал в папку, которая находиться в папке с игрой (например Lost planet2\ nativePC.) А он тупо распаковывает просто в папку с игрой (Lost planet2), что меня конечно не утраивает. Подскажите пожалуйста. Заранее благодарен.

Вот скрипты которые я применяю:

Filename: {src}\arcLp2Xml.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных, подождите пожалуйста...; Flags: runasoriginaluser
Filename: {src}\arcXmlTmpPC.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных, подождите пожалуйста...; Flags: runasoriginaluser
Filename: {src}\sound.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных, подождите пожалуйста...; Flags: runasoriginaluser



Дошло. Спасибо.

ArtemYa
19-10-2010, 16:23
Не могу найти, как сделать, чтобы файл вставлялся в папку, название которой начинается на определенную строку и не важно как заканчивается, помогите пожалуйста!

Imitri7
19-10-2010, 19:11
nik1967, как убрать вот эту http://s001.youpic.su/pictures/1287421200/thumb_828c98ee0405208333b75843e5f47d3a.png (http://youpic.su/view.php?id=s001.youpic.su/pictures/1287421200/828c98ee0405208333b75843e5f47d3a.png) линию, которая по сторонам прогсбара идет? ?

ArtemYa
19-10-2010, 19:21
Вычитал, что можно так сделать регистрацию dll
Filename: {sys}\regsvr32.exe; Parameters: {app}\*.dll /i
но такой путь не может найти, почему-то имя папки Programm Files делится и пишет ошибку
не найден путь С:\Programm
если кидать *.dll в корень С и задавать путь Parameters: С:\*.dll /i , то все нормально, но не кидать же все dll в корень!
помогите подалуйста!!

Кстати, через RegisterServer тоже ничего не получается

serg aka lain
19-10-2010, 23:36
почему-то имя папки Programm Files делится и пишет ошибку
не найден путь С:\Programm »
Потому-что присутствует побел в пути, параметр нужно заключить в кавычки.

как убрать вот эту линию »
Видимо в процедуре CurPageChanged, на этапе CurPageID = wpInstalling нужно ее скрыть:
WizardForm.Bevel.Hide;

nik1967
20-10-2010, 11:25
Imitri7,
Почти, как написал serg aka lain, только немного проще:
WizardForm.Bevel.Hide;
перед(или после)
WizardForm.Bevel1.Hide;

Imitri7
20-10-2010, 14:33
nik1967, спасибо большое =)
а еще, как :
1)сделать чтобы окошко распаковки нельзя было перемешать по экрану?
2)сделать рядом с крестиком остальные кнопки и чтобы кнопка свернуть работала,но кнопка развернуть окно была бы серой(т.е. не активной)?
3)наложить текстуру на кнопку отмены с помощью [ code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
case TLabel(Sender).Tag of
bidBack: Button:=WizardForm.BackButton
bidNext: Button:=WizardForm.NextButton
bidCancel: Button:=WizardForm.CancelButton
bidDirBrowse: Button:=WizardForm.DirBrowseButton
bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
else
Exit
end
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=AButton.Left
Panel.Top:=AButton.Top
Panel.Width:=AButton.Width
Panel.Height:=AButton.Height
Panel.Tag:=AButtonIndex
Panel.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm) //Рисунок который ложится на кнопку
Image.Width:=160 //Обязательно прописать оригинальный размер рисунка
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

with TLabel.Create(WizardForm) do begin
Tag:=AButtonIndex
Parent:=Panel
Width:=Panel.Width
Height:=Panel.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm) //Текст кнопок
Labl.Left:=23 //Указываем положение текста
Labl.Top:=5
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite //Цвет текста
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2);
ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2);
ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2);
ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2);
ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2);
end;

procedure InitializeWizard();
begin
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

nik1967
20-10-2010, 21:44
Imitri7,
Если честно, то я с этим со всем никогда не заморачивался, юзал botva2.dll, и поэтому ничем больше помочь не могу. Пардон за оффтоп.

Imitri7
20-10-2010, 22:32
nik1967, эх((( ну и на этом спасибо

2all 1) как сделать чтобы окошко распаковки нельзя было перемешать по экрану?
2)наложить текстуру на кнопку отмены с помощью [ code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
case TLabel(Sender).Tag of
bidBack: Button:=WizardForm.BackButton
bidNext: Button:=WizardForm.NextButton
bidCancel: Button:=WizardForm.CancelButton
bidDirBrowse: Button:=WizardForm.DirBrowseButton
bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
else
Exit
end
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=AButton.Left
Panel.Top:=AButton.Top
Panel.Width:=AButton.Width
Panel.Height:=AButton.Height
Panel.Tag:=AButtonIndex
Panel.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm) //Рисунок который ложится на кнопку
Image.Width:=160 //Обязательно прописать оригинальный размер рисунка
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

with TLabel.Create(WizardForm) do begin
Tag:=AButtonIndex
Parent:=Panel
Width:=Panel.Width
Height:=Panel.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm) //Текст кнопок
Labl.Left:=23 //Указываем положение текста
Labl.Top:=5
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite //Цвет текста
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2);
ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2);
ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2);
ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2);
ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2);
end;

procedure InitializeWizard();
begin
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;


или хотябы подскажите есть ли какой нибудь параметр для "procedure InitializeWizard();" чтобы действия выполнялись на определенной странице например установки

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

procedure InitializeWizard();
begin
//Выносим кнопку "Отмена" на передний план
WizardForm.CancelButton.BringToFront;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then
begin
WizardForm.BorderStyle:=bsDialog;
WizardForm.MainPanel.Visible:=False;
WizardForm.Width:=ScaleX(320);
WizardForm.Height:=ScaleY(127);
WizardForm.InnerNotebook.Left:=ScaleX(7);
WizardForm.InnerNotebook.Top:=ScaleY(7);
WizardForm.InnerNotebook.Width:=ScaleX(300);
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(17);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(37);
WizardForm.ProgressGauge.Left:=ScaleX(0);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(122);
WizardForm.CancelButton.Top:=ScaleY(70);
WizardForm.Left:=GetSystemMetrics(16)-ScaleX(330);
WizardForm.Top:=GetSystemMetrics(17)-ScaleX(110);
end;
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{Размер окна по горизонтали}
WizardForm.Height:=392;{Размер окна по вертикали}
WizardForm.Position:=poScreenCenter; {Возврат в исходное состояние}
end
end;

dimon135
21-10-2010, 16:12
помогите пожалуйста народ.Как в этой строчке добавить более одного архива?
#define ArcLocation "C:\Users\Администратор\Desktop\nfs\Data4.arc";

THE GUILTY GOD
22-10-2010, 12:14
Всем здорова!
Такой вопрос! у меня несколько архивов формата xxx.arc и идут они через srep+pcf+arc и как мне сделать чтобы всё фархива формата arc распаковывались поочерёдно, так же они проходят через ISDone. Я знаю что надо в этой
if not ISSRepExtract ( 0, OveralPct, 0, ExpandConstant('{app}\data1\CODMW2.srep'), ExpandConstant('{app}\data1\CODMW2.pcf'), '', true, CallBack ) then break;
if not ISPrecompExtract( 0, OveralPct, 0, ExpandConstant('{app}\data1\CODMW2.pcf'), ExpandConstant('{app}\data1\CODMW2.arc'), true, CallBack ) then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\CODMW2.arc'), ExpandConstant('{app}\data1'), false,CallBack, '', '', '') then break;


значения на свои, но здесь только если один архив а мне нужно на несколько

nik1967
22-10-2010, 13:16
THE GUILTY GOD,
ISDone.dll v0.5 (http://forum.ru-board.com/topic.cgi?forum=5&topic=34920#1)

j8r60
23-10-2010, 13:57
как правильно в этом коде прописать реестр

function InitializeSetup: Boolean;
var
path: string;
res: Integer;
begin
Result:= True;
if RegValueExists(HKLM, 'Software\Что нужно указать', 'InstallPath') then
if RegQueryStringValue(HKLM, 'Software\Что нужно указать', 'InstallPath', path) then
if FileExists(path + '\xrEngine.exe') then
if MsgBox('Запустить S.T.A.L.K.E.R. - Чистое Небо?', mbConfirmation, MB_YESNO) = IDYES then
begin
Exec(path + '\xrEngine.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
Result:= False;
end
else Result:= False;
end;

moov1kk
23-10-2010, 16:52
подскажите пожалуйста, как сделать так чтобы при переключении страниц в инсталле буквы не выделялись вот так:
http://s002.radikal.ru/i199/1010/d1/6bdbe5871ee6t.jpg (http://radikal.ru/F/s002.radikal.ru/i199/1010/d1/6bdbe5871ee6.bmp.html)

Habetdin
25-10-2010, 16:16
чтобы действия выполнялись на определенной странице например установки »
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then
begin
// код, выполняющийся на странице установки
end;
end;


Из вашего сообщения не совсем понятно, какой результат нужен :unsure:

STRAYKER
25-10-2010, 16:53
Serega,

У меня к вам просьба я создал инсталятор со скином , картинка на весь инсталятор
Но такая проблема когда я устанавливаю то оно не создаёт ярлыки хотя в скрипте прописано чтобы создало как быть

R.i.m.s.k.y.
25-10-2010, 17:00
STRAYKER,
Надо выполнить кое-какие действия, написать нужное в скрипте и тогда ошибки исчезнут.

Habetdin
25-10-2010, 17:05
не создаёт ярлыки хотя в скрипте прописано чтобы создало »
Выложите проблемную часть скрипта

shao
25-10-2010, 18:50
При деинсталляции программы на удаляются разделы из реестра, хотя в секции [Registry] указаны соответствующие флаги.
Один раздел после деинсталляции программы пустой. В другом остались кое-какие параметры.
Пробовал ставить флаги uninsdeletekey, uninsdeletekeyifempty, uninsdeletevalue, комбинировал их - всё безрезультатно...

Вот часть скрипта:

[Registry]
Root: HKCU; SubKey: Software\MyProg; Flags: uninsdeletevalue
Root: HKLM; SubKey: SOFTWARE\MyProg; Flags: uninsdeletevalue uninsdeletekeyifempty

Что я не так делаю, подскажите пожалуйста.

***********************************

З.Ы. Пришла мысля потом :teeth:

Если никак нельзя удалить параметр реестра тем способом , тогда можно ли так :

[UninstallRun]
Filename: {sys}\cmd.exe; Parameters: /c Reg Delete "HKCU\Software\MyProg" /f; Flags: runhidden ?

serg aka lain
25-10-2010, 19:37
Код:
[Registry]
Root: HKCU; SubKey: Software\MyProg; Flags: uninsdeletevalue
Root: HKLM; SubKey: SOFTWARE\MyProg; Flags: uninsdeletevalue uninsdeletekeyifemptyЧто я не так делаю, подскажите пожалуйста. »
uninsdeletevalue - это удаление параметра типа:
Root: HKLM; SubKey: SOFTWARE\MyProg; ValueType: string; ValueName: Name; ValueData: "";
А в данном случае, (если нужно удалить раздел Root: HKCU; SubKey: Software\MyProg) - задаётся флаг uninsdeletekey




© OSzone.net 2001-2012