PDA

Показать полную графическую версию : Скрипты 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

Vamp1re
03-02-2011, 19:28
R.i.m.s.k.y., У меня чето не пашет ни первый способ ни второй.А в первом способе нужны какието параметры? ато етот батник дожнен распаковывать файлы сжатые: prcomp.exe; depack.exe; srep.exe

Gnom_aka_Lexander
03-02-2011, 20:09
Vamp1re, в первром варианте добавь флаг постинсталл:
[Run]
Filename: {app}\bat.bat; WorkingDir: {app}; Flags: runhidden postinstall
Ну, и может, runhidden удалить попробовать.

ViHtarb
03-02-2011, 20:37
Люди, пожалуйста, помогите. Вот в чем проблема, если создавать простой инсталятор, то у цвета остается форматирование(цвет и т.п), а если ставить свое изображение на все окно инсталятора, то выходит вот такое как на скрине

http://images.stalker-gsc.ru/upload_image/thumb/ef45a1b9776084af03019bd5fe4bc54f.jpg (http://images.stalker-gsc.ru/upload_image/ef45a1b9776084af03019bd5fe4bc54f.jpg)

Gnom_aka_Lexander
03-02-2011, 20:49
ViHtarb, Скрипт нужно смотреть, а так, чтобы подложка была прозрачная - только на ботве можно сделать.

ViHtarb
03-02-2011, 20:51
вот сам скрипт



[Setup]
AppName=LGN Mod
AppVerName=LGN Mod v0.1
AppPublisher=LGN Team
AppPublisherURL=http://lgnteam.ipb2.ru/
AppSupportURL=http://lgnteam.ipb2.ru/
AppUpdatesURL=http://lgnteam.ipb2.ru/

DefaultDirName={reg:HKLM\SOFTWARE\GSC Game World\STALKER-COP,InstallPath}\gamedata
DefaultGroupName=LGN Mod v0.1

AllowNoIcons=yes

InfoBeforeFile=D:\Ìîè ôàéëû\Èãðû\ôàéëû\stalker\InfoBefore.rtf

OutputDir=D:\Ìîè ôàéëû\Èãðû\S.T.A.lker ÇîâÒåíèÑêàé\STALKER Call of Prypyat\ìîäû\My Mod\Legenda Mod v1.0

Compression=none

SetupIconFile=D:\Games\S.T.A.L.K.E.R. - Çîâ Ïðèïÿòè\stalker_cop.ico
WizardImageFile=D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\WizardImage22.bmp
WizardSmallImageFile=D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\WizardImage22.bmp

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


[Files]
Source: D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\ars\button.bmp; DestDir: {tmp}; Flags: dontcopy
Source: D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\ars\Normal.ani; DestDir: {tmp}; Flags: dontcopy
Source: D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\ars\Pointer.ani; DestDir: {tmp}; Flags: dontcopy
Source: D:\Êàðòèíêè\ðàáîòà\call of Pryp\install\WizardImage22.bmp; DestDir: {tmp}; Flags: dontcopy
Source: D:\Ìîè ôàéëû\Èãðû\S.T.A.lker ÇîâÒåíèÑêàé\STALKER Call of Prypyat\óðîêè\èíñòàëÿòîð\bassmod.dll; DestDir: "{tmp}"; Flags: dontcopy
Source: D:\Ìîè ôàéëû\Èãðû\ôàéëû\stalker\InfoBefore.rtf; DestDir: "{tmp}"; Flags: ignoreversion

[Code]

const
ButtonWidth = 123; //Óêàçûâàåì ðàçìåð êíîïîê
ButtonHeight = 24;

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

GCL_HCURSOR = (-12);
OCR_NORMAL = 32512;

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

function LoadCursorFromFile(FileName: String): Longint;
external 'LoadCursorFromFileA@user32 stdcall';

function SetClassLong(hWnd: HWND; Index, NewLong: Longint): Longint;
external 'SetClassLongA@user32 stdcall';

function SetCursor(Cursor: Longint): Longint;
external 'SetCursor@user32 stdcall';

function SetSystemCursor(Cursor, CurType: Longint): Longint;
external 'SetSystemCursor@user32 stdcall';

function GetCursor(): Longint;
external 'GetCursor@user32 stdcall';

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

//DiskSpaceLabel
WizardImage: TBitmapImage;
YesRadio,NoRadio: TRadioButton;
WelcomeLabel1,WelcomeLabel2,InfoBeforeClickLabel,SelectDirLabel,SelectDirBrowseLabel,ReadyLabel,Stat usLabel,FinishedHeadingLabel,FinishedLabel,YesRadioLabel,NoRadioLabel,
BeveledLabel: TLabel;
CheckBox: TCheckBox;
CheckBoxLabel: Tlabel;
ResultCode: Integer;

OldCursor, NewCursor, NewCursor1: Longint;

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:=246 //Îáÿçàòåëüíî ïðîïèñàòü îðèãèíàëüíûé ðàçìåð ðèñóíêà
Image.Height:=24
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:=40 //Óêàçûâàåì ïîëîæåíèå òåêñòà
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 YesRadioOnClick (Sender: TObject);
begin
WizardForm.YesRadio.Checked:=True
end;

Procedure NoRadioOnClick (Sender: TObject);
begin
WizardForm.NoRadio.Checked:=True
end;

Procedure HideAll();
begin
WizardForm.MainPanel.Hide
WizardForm.BeveledLabel.Hide
WizardForm.OuterNotebook.Hide
WizardForm.InnerNotebook.Hide

WelcomeLabel1.Hide //çàãîëîâîê ïðèâåòñòâèÿ
WelcomeLabel2.Hide //Ïðèâåòñòâèå íèæå
InfoBeforeClickLabel.Hide //Çàãîëîâîê ñðàíèöè
WizardForm.InfoBeforeMemo.Hide //Èíôîðìàöèÿ î ìîäå
SelectDirLabel.Hide //çàãîëîâîê âûáîðà ïàïêè óñòàíîâêè
SelectDirBrowseLabel.Hide //îïèñàíèå ñòðàíèöè âûáîðà ïàïêè
WizardForm.DirEdit.Hide //äàííàÿ äèðåêòîðèÿ
WizardForm.DirBrowseButton.Hide //êíîïêà brows
//DiskSpaceLabel.Hide
ReadyLabel.Hide
WizardForm.ReadyMemo.Hide
StatusLabel.Hide
WizardForm.ProgressGauge.Hide
FinishedHeadingLabel.Hide
FinishedLabel.Hide
WizardForm.RunList.Hide

YesRadio.Hide
YesRadioLabel.Hide
NoRadio.Hide
NoRadioLabel.Hide
end;

Procedure InitializeSkin();
begin
ExtractTemporaryFile('WizardImage22.bmp')

WizardImage:=TBitmapImage.Create(WizardForm)
WizardImage.AutoSize:=True
WizardImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardImage22.bmp'))
WizardImage.Parent:=WizardForm

WizardForm.ClientWidth:=690
WizardForm.ClientHeight:=496
WizardForm.Font.Color:=$ffffff
WizardForm.Center

WizardForm.BackButton.Left:=193
WizardForm.BackButton.Top:=462
WizardForm.BackButton.Width:=80 //80
WizardForm.BackButton.Height:=23 //23

WizardForm.NextButton.Left:=275
WizardForm.NextButton.Top:=462
WizardForm.NextButton.Width:=80
WizardForm.NextButton.Height:=23

WizardForm.CancelButton.Left:=800
WizardForm.CancelButton.Top:=462
WizardForm.CancelButton.Width:=80
WizardForm.CancelButton.Height:=23

BeveledLabel:=TLabel.Create(WizardForm)
BeveledLabel.Left:=10
BeveledLabel.Top:=468
BeveledLabel.Font.Color:=clWhite
BeveledLabel.Transparent:=True
BeveledLabel.Caption:=WizardForm.BeveledLabel.Caption
BeveledLabel.Parent:=WizardForm

WizardForm.BeveledLabel.Left:=700

// wpWelcome
WelcomeLabel1:=TLabel.Create(WizardForm)
WelcomeLabel1.Left:=205
WelcomeLabel1.Top:=90
WelcomeLabel1.Width:=465
WelcomeLabel1.Height:=28
WelcomeLabel1.AutoSize:=False
WelcomeLabel1.WordWrap:=True
WelcomeLabel1.Transparent:=True
WelcomeLabel1.Font.Color:=$ffffff
WelcomeLabel1.Font.Style:=[fsBold]
WelcomeLabel1.Caption:=WizardForm.WelcomeLabel1.Caption
WelcomeLabel1.Parent:=WizardForm

WelcomeLabel2:=TLabel.Create(WizardForm)
WelcomeLabel2.Left:=205
WelcomeLabel2.Top:=130
WelcomeLabel2.Width:=465
WelcomeLabel2.Height:=200
WelcomeLabel2.AutoSize:=False
WelcomeLabel2.WordWrap:=True
WelcomeLabel2.Transparent:=True
WelcomeLabel2.Caption:=WizardForm.WelcomeLabel2.Caption
WelcomeLabel2.Parent:=WizardForm

// wpInfoBefore
InfoBeforeClickLabel:=TLabel.Create(WizardForm)
InfoBeforeClickLabel.Left:=205
InfoBeforeClickLabel.Top:=90
InfoBeforeClickLabel.Transparent:=True
InfoBeforeClickLabel.Caption:=WizardForm.InfoBeforeClickLabel.Caption
InfoBeforeClickLabel.Parent:=WizardForm

WizardForm.InfoBeforeMemo.Left:=205
WizardForm.InfoBeforeMemo.Top:=114
WizardForm.InfoBeforeMemo.Width:=465
WizardForm.InfoBeforeMemo.Height:=300
WizardForm.InfoBeforeMemo.Parent:=WizardForm

// wpSelectDir
SelectDirLabel:=TLabel.Create(WizardForm)
SelectDirLabel.Left:=205
SelectDirLabel.Top:=90
SelectDirLabel.Width:=465
SelectDirLabel.Height:=28
SelectDirLabel.AutoSize:=False
SelectDirLabel.WordWrap:=True
SelectDirLabel.Transparent:=True
SelectDirLabel.Caption:=WizardForm.SelectDirLabel.Caption
SelectDirLabel.Parent:=WizardForm

SelectDirBrowseLabel:=TLabel.Create(WizardForm)
SelectDirBrowseLabel.Left:=205
SelectDirBrowseLabel.Top:=120
SelectDirBrowseLabel.Width:=465
SelectDirBrowseLabel.Height:=28
SelectDirBrowseLabel.AutoSize:=False
SelectDirBrowseLabel.WordWrap:=True
SelectDirBrowseLabel.Transparent:=True
SelectDirBrowseLabel.Caption:=WizardForm.SelectDirBrowseLabel.Caption
SelectDirBrowseLabel.Parent:=WizardForm

WizardForm.DirEdit.Left:=205
WizardForm.DirEdit.Top:=380
WizardForm.DirEdit.Width:=370
WizardForm.DirEdit.Height:=21
WizardForm.DirEdit.Color:=$000000
WizardForm.DirEdit.Font.Color:=$ffffff
WizardForm.DirEdit.Parent:= WizardForm

WizardForm.DirBrowseButton.Width:=80
WizardForm.DirBrowseButton.Height:=23
WizardForm.DirBrowseButton.Parent:= WizardForm

//DiskSpaceLabel:=TLabel.Create(WizardForm)
//DiskSpaceLabel.Left:=205
//DiskSpaceLabel.Top:=415
//DiskSpaceLabel.Transparent:=True
//DiskSpaceLabel.Caption:=WizardForm.DiskSpaceLabel.Caption
//DiskSpaceLabel.Parent:=WizardForm

// wpReady
ReadyLabel:=TLabel.Create(WizardForm)
ReadyLabel.Left:=205
ReadyLabel.Top:=90
ReadyLabel.Width:=465
ReadyLabel.Height:=28
ReadyLabel.AutoSize:=False
ReadyLabel.WordWrap:=True
ReadyLabel.Transparent:=True
ReadyLabel.Parent:=WizardForm

WizardForm.ReadyMemo.Left:=205
WizardForm.ReadyMemo.Top:=124
WizardForm.ReadyMemo.Width:=465
WizardForm.ReadyMemo.Height:=300
WizardForm.ReadyMemo.Color:=$000000
WizardForm.ReadyMemo.Font.Color:=$ffffff
WizardForm.ReadyMemo.Parent:= WizardForm

// wpInstalling
StatusLabel:=TLabel.Create(WizardForm)
StatusLabel.Left:=205
StatusLabel.Top:=90
StatusLabel.Transparent:=True
StatusLabel.Caption:=WizardForm.Caption +'...'
StatusLabel.Parent:=WizardForm

WizardForm.ProgressGauge.Left:=205
WizardForm.ProgressGauge.Top:=120
WizardForm.ProgressGauge.Width:=465
WizardForm.ProgressGauge.Height:=21
WizardForm.ProgressGauge.Parent:= WizardForm

// wpFinished
FinishedHeadingLabel:=TLabel.Create(WizardForm)
FinishedHeadingLabel.Left:=205
FinishedHeadingLabel.Top:=90
FinishedHeadingLabel.Width:=465
FinishedHeadingLabel.Height:=28
FinishedHeadingLabel.AutoSize:=False
FinishedHeadingLabel.WordWrap:=True
FinishedHeadingLabel.Transparent:=True
FinishedHeadingLabel.Font.Color:=$ffffff
FinishedHeadingLabel.Font.Style:=[fsBold]
FinishedHeadingLabel.Caption:=WizardForm.FinishedHeadingLabel.Caption
FinishedHeadingLabel.Parent:=WizardForm

FinishedLabel:=TLabel.Create(WizardForm)
FinishedLabel.Left:=205
FinishedLabel.Top:=130
FinishedLabel.Width:=465
FinishedLabel.Height:=56
FinishedLabel.AutoSize:=False
FinishedLabel.WordWrap:=True
FinishedLabel.Transparent:=True
FinishedLabel.Caption:=WizardForm.FinishedLabel.Caption
FinishedLabel.Parent:=WizardForm

WizardForm.RunList.Left:=0
WizardForm.RunList.Top:=200
WizardForm.RunList.Width:=465
WizardForm.RunList.Height:=120
WizardForm.RunList.Color:=$000000
WizardForm.RunList.Font.Color:=$ffffff

YesRadio:=TRadioButton.Create(WizardForm)
YesRadio.Left:=205
YesRadio.Top:=290
YesRadio.Width:=13
YesRadio.Height:=13
YesRadio.Color:=$b58434
YesRadio.OnClick:=@YesRadioOnClick
YesRadio.Parent:=WizardForm

YesRadioLabel:=TLabel.Create(WizardForm)
YesRadioLabel.Left:=221
YesRadioLabel.Top:=290
YesRadioLabel.Transparent:=True
YesRadioLabel.Caption:=WizardForm.YesRadio.Caption
YesRadioLabel.Parent:=WizardForm

NoRadio:=TRadioButton.Create(WizardForm)
NoRadio.Left:=205
NoRadio.Top:=310
NoRadio.Width:=13
NoRadio.Height:=13
NoRadio.Color:=$b58434
NoRadio.OnClick:=@NoRadioOnClick
NoRadio.Parent:=WizardForm

NoRadioLabel:=TLabel.Create(WizardForm)
NoRadioLabel.Left:=221
NoRadioLabel.Top:=310
NoRadioLabel.Transparent:=True
NoRadioLabel.Caption:=WizardForm.NoRadio.Caption
NoRadioLabel.Parent:=WizardForm
end;

Procedure ShowPageComponents(CurPageID: Integer);
begin
Case CurPageID of

wpWelcome:
begin
WelcomeLabel1.Show
WelcomeLabel2.Show
end

wpInfoBefore:
begin
InfoBeforeClickLabel.Show
WizardForm.InfoBeforeMemo.Show
end

wpSelectDir:
begin
SelectDirLabel.Show
SelectDirBrowseLabel.Show
WizardForm.DirEdit.Show
WizardForm.DirBrowseButton.Show
//DiskSpaceLabel.Show
end

wpReady:
begin
ReadyLabel.Show
ReadyLabel.Caption:=WizardForm.ReadyLabel.Caption
WizardForm.ReadyMemo.Show
end

wpInstalling:
begin
StatusLabel.Show
WizardForm.ProgressGauge.Show
end

wpFinished:
begin
FinishedHeadingLabel.Show
FinishedLabel.Show
FinishedLabel.Caption:=WizardForm.FinishedLabel.Caption
WizardForm.RunList.hide
end
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideAll
ShowPageComponents(CurPageID)
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse)
end;

Procedure InitializeWizard();
var
width,height: Integer;
begin

ExtractTemporaryFile('WizardImage22.bmp')
ExtractTemporaryFile('button.bmp')
ExtractTemporaryFile('normal.ani')
ExtractTemporaryFile('pointer.ani')
ExtractTemporaryFile('InfoBefore.rtf')
ExtractTemporaryFile('BASSMOD.dll');

InitializeSkin

NewCursor:= LoadCursorFromFile(ExpandConstant('{tmp}\pointer.ani'));
NewCursor1:= LoadCursorFromFile(ExpandConstant('{tmp}\normal.ani'));
OldCursor:= SetClassLong(WizardForm.NextButton.Handle, GCL_HCURSOR, NewCursor);
OldCursor:= SetClassLong(WizardForm.Handle, GCL_HCURSOR, NewCursor1);
OldCursor:= SetClassLong(WizardForm.MainPanel.Handle, GCL_HCURSOR, NewCursor);

WizardForm.BackButton.Left:=249
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

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

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

WizardForm.DirBrowseButton.Top:=379
WizardForm.DirBrowseButton.Left:=580
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
end;

procedure DeInitializeSetup();
begin
SetSystemCursor(OldCursor, OCR_NORMAL);
end;

Serega
03-02-2011, 21:05
Exec(Expandconstant('{app}\bat.bat'), ' /parametrs ',SW_HIDE,ewWaitUntilTerminated,res); »
Батник напрямую нельзя запускать через Exec, для этого есть ShellExec
У меня чето не пашет ни первый способ ни второй »
Примеры запуска батника:


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

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

[Files]
Source: test.bat; DestDir: {tmp}; Flags: ignoreversion

; первый вариант, через секцию [Run]
[Run]
Filename: {tmp}\test.bat; WorkingDir: {tmp}; Flags: shellexec waituntilterminated

[Code]
//procedure CurStepChanged(CurStep: TSetupStep);
//var
// ResultCode: Integer;
//begin
// if CurStep = ssPostInstall then
// { второй вариант, через ShellExec }
// ShellExec('open', ExpandConstant('{tmp}\test.bat'), '', ExpandConstant('{tmp}'),
// SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
// { третий вариант, через Exec }
// Exec(ExpandConstant('{sys}\cmd.exe'), '/c "' + ExpandConstant('{tmp}\test.bat') + '"',
// ExpandConstant('{sys}'), SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
//end;

Gnom_aka_Lexander
03-02-2011, 21:09
ViHtarb,
InfoBeforeMemoParentColor := True;
или
InfoBeforeMemo.ParentColor := True;
Можно попробовать, может еще както можно ето окно запрозрачить - может подскажет кто еще.

ViHtarb
03-02-2011, 21:16
Лександер, спс, но к сожалению не помогло((

R.i.m.s.k.y.
03-02-2011, 21:18
Батник напрямую нельзя запускать через Exec, для этого есть ShellExec »
[голосом Савелия Краморова] "АХ ЙЕС ЙЕС!"
точно, батники я пускаю третьим способом, звиняйте, фЫгню написал

Black666angel
04-02-2011, 02:17
Neutron,
Соответственно сколько InitializeWizard столько и номеров, также это касается InitializeSetup и т.д!
Я надеюсь я правильно понял? »
Да. Кстати если нужно это (http://forum.oszone.net/attachment.php?attachmentid=59061&stc=1&d=1296786136)

Black666angel
04-02-2011, 02:29
XNick, Товарищи! Скинте скрипт чтоб можно было растянуть изображения на страницах приветсвия и завершения... (Сам искал ничего нормального не нашел, то в одном шрифт пропадает то в другом ошибка вылетает, в общем вся надежда вас господа!!) »Попробуй это (http://forum.oszone.net/attachment.php?attachmentid=59062&stc=1&d=1296786426)

Anderon
04-02-2011, 19:29
---

oleg_teacher
04-02-2011, 19:35
подскажите как можно связать иконку для расширения файла, причем без перегруза компа.
Делал так:
[Registry]
Root: HKCR; Subkey: ".ups"; ValueType: string; ValueData:"xxx"; Flags: uninsdeletekey;
Root: HKCR; Subkey: "xxx"; Flags: uninsdeletekey;
Root: HKCR; Subkey: "xx\Shell"; Flags: uninsdeletekey;
Root: HKCR; Subkey: "xxx\DefaultIcon"; ValueType: string; ValueData: "{app}\xxx.ico";
Root: HKCR; Subkey: "xxx\Shell\Open"; Flags: uninsdeletekey;
Root: HKCR; Subkey: "xxx\Shell\Open\Command"; ValueType: string; ValueData:"{app}\xxx.EXE %1"; Flags: uninsdeletekey;

ChangesAssociations=true почему то не помогает

R.i.m.s.k.y.
04-02-2011, 21:45
oleg_teacher,
ChangesAssociations=true
ChangesEnvironment=true
и перезапустить тотал/эксплорер

XNick
05-02-2011, 02:38
Вот еще вопрос...Как сделать чтобы InnoSetup не создавал файлы удаления для моего приложения, в папке с установленной игрой (uninst000.exe, uninst000.exe)???

XNick
05-02-2011, 04:36
Neutron,
Спасибо, комрад!!!!!!

R.i.m.s.k.y.
05-02-2011, 12:29
Если можно как-то другим способом жду ваших предложений! »

Способ 1

[Files]
Source: vorbis.acm; DestDir: {sys}\; Flags: restartreplace

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc"; ValueName: "vorbis.acm"; ValueType: String; ValueData: "Ogg Vorbis Audio CODEC"; Components: ffd; Flags: uninsdeletevalue
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32"; ValueName: "msacm.vorbis"; ValueType: String; ValueData: "vorbis.acm"; Components: ffd; Flags: uninsdeletevalue


Способ 2 отсюда http://windata.ru/windows-xp/faq-xp/ustanovka-fajla-inf-iz-komandnoj-stroki/


[Files]
Source: vorbis.acm; DestDir: {tmp}\; Flags:
Source: vorbis.inf; DestDir: {tmp}\; Flags:

[Run]
Filename: {sys}\rundll32.exe; Parameters: " syssetup, SetupInfObjectInstallAction DefaultInstall 128 ""{tmp}\vorbis.inf"""; StatusMsg: Установка Vorbis; Flags: runhidden waituntilterminated



Про 3 кнопки не знаю, про две ДА/НЕТ могу подсказать

nik1967
05-02-2011, 23:30
Можно ли сделать так, что бы если например какая программа или игра установлена, и при запуске инсталлятора были 3 кнопки Запустить Удалить Отмена? »
#define Name "My Program"

[Setup]
AppName={#Name}
AppVerName={#Name}
DefaultDirName={pf}\{#Name}

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

[Messages]
rus.SetupWindowTitle={#Name}

[Files]
;Source: My Program.exe; DestDir: {app}; Flags: ignoreversion nocompression;

[Registry]
Root: HKLM; Subkey: "SOFTWARE\{#Name}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\{#Name}"; ValueName: "Path"; ValueType: String; ValueData: "{app}\"; Flags: uninsdeletekey

[UninstallDelete]
Type: filesandordirs; Name: {app};

[_Code]
var
AppDir, unins, run: string;
ResultCode: Integer;
UninsButton, RunButton: TButton;
MyLabel: TLabel;

procedure ReadEntries;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\{#Name}', 'Path', AppDir);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:= False;
end;

procedure Uninstall(Sender: TObject);
begin
unins:='unins000.exe';
ReadEntries;
if not (FileExists(AddBackslash(AppDir) + unins)) then
MsgBox('Невозможно запустить деинсталляцию программы ' + ExpandConstant('{#Name}') + ', т.к. исполняемый файл деинсталляции unins000.exe не найден.', mbCriticalError, MB_OK or MB_DEFBUTTON1)
else
Exec(AddBackslash(AppDir) + unins, '', ExtractFilePath(AddBackslash(AppDir) + unins), SW_SHOW, ewNoWait, ResultCode);
WizardForm.Close;
end;

procedure RunProgramm(Sender: TObject);
begin
run:='My Program.exe';
ReadEntries;
if (FileExists(AddBackslash(AppDir) + run)) then
Exec(AddBackslash(AppDir) + run, '', ExtractFilePath(AddBackslash(AppDir) + run), SW_SHOW, ewNoWait, ResultCode);
WizardForm.Close;
end;

procedure NewForm;
begin
ReadEntries;
if (RegValueExists(HKLM, 'SOFTWARE\{#Name}', 'Path')) and (FileExists(ExpandConstant(AppDir)+'\My Program.exe')) then begin
with WizardForm do
begin
ClientWidth := ScaleX(395);
ClientHeight := ScaleY(120);
Bevel.Hide;
InnerNotebook.Hide;
OuterNotebook.Hide;
BorderStyle:= bsDialog;
Center;
with CancelButton do
begin
Left := WizardForm.CancelButton.Left -100;
Top := WizardForm.ClientHeight - CancelButton.Height - ScaleY(10);
BringToFront;
end;
UninsButton:= TButton.Create(WizardForm);
with UninsButton do
begin
Left := WizardForm.NextButton.Left -100;
Top := WizardForm.ClientHeight - NextButton.Height - ScaleY(10);
Width:= WizardForm.NextButton.Width;
Parent:= WizardForm;
Caption:= 'Удалить';
OnClick := @Uninstall;
BringToFront;
end;
RunButton:= TButton.Create(WizardForm);
with RunButton do
begin
Left := WizardForm.BackButton.Left -110;
Top := WizardForm.ClientHeight - BackButton.Height - ScaleY(10);
Width:= WizardForm.BackButton.Width;
Parent:= WizardForm;
Caption:= 'Запустить';
OnClick := @RunProgramm;
BringToFront;
end;
MyLabel:= TLabel.Create(WizardForm);
with MyLabel do
begin
SetBounds(10,10,380,80);
AutoSize:=False;
WordWrap:=True;
Font.Color:=$000000;
Font.Style:=[fsBold];
Font.Size:=10;
Parent:=WizardForm;
Transparent:=True;
Caption:= 'Программа ' + ExpandConstant('{#Name}') + ' уже установлена на Ваш компьютер.' +#13#13+ 'Выберите нужное действие.';
end;
end;
end;
end;

procedure InitializeWizard;
begin
NewForm;
end;

duxa
06-02-2011, 07:20
nik1967, Благодарю за пример. Только вот у меня работать не хочет. Ветка реестра появляется, а вот выбора нет, стандартное окно приветствия.
Мои замечания: имя деинсталлятора лучше бы было выразить "переменной", т.к. инно в некоторых случаях переименовывает (unins001.exe...)

nik1967
06-02-2011, 10:10
duxa,
Повнимательнее. У меня организована проверка не только ветки реестра, но и присутствия запускающего файла (в моём случае My Program.exe). Если его нет, то стандартное окно приветствия.
if (RegValueExists(HKLM, 'SOFTWARE\{#Name}', 'Path')) and (FileExists(ExpandConstant(AppDir)+'\My Program.exe')) then begin
У меня работает. Я всегда по несколько раз проверяю, прежде чем выложить.




© OSzone.net 2001-2012