Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
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 удалить попробовать.
Люди, пожалуйста, помогите. Вот в чем проблема, если создавать простой инсталятор, то у цвета остается форматирование(цвет и т.п), а если ставить свое изображение на все окно инсталятора, то выходит вот такое как на скрине
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, Скрипт нужно смотреть, а так, чтобы подложка была прозрачная - только на ботве можно сделать.
вот сам скрипт
[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;
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;
Можно попробовать, может еще както можно ето окно запрозрачить - может подскажет кто еще.
Лександер, спс, но к сожалению не помогло((
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)
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
и перезапустить тотал/эксплорер
Вот еще вопрос...Как сделать чтобы InnoSetup не создавал файлы удаления для моего приложения, в папке с установленной игрой (uninst000.exe, uninst000.exe)???
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 кнопки не знаю, про две ДА/НЕТ могу подсказать
Можно ли сделать так, что бы если например какая программа или игра установлена, и при запуске инсталлятора были 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;
nik1967, Благодарю за пример. Только вот у меня работать не хочет. Ветка реестра появляется, а вот выбора нет, стандартное окно приветствия.
Мои замечания: имя деинсталлятора лучше бы было выразить "переменной", т.к. инно в некоторых случаях переименовывает (unins001.exe...)
duxa,
Повнимательнее. У меня организована проверка не только ветки реестра, но и присутствия запускающего файла (в моём случае My Program.exe). Если его нет, то стандартное окно приветствия.
if (RegValueExists(HKLM, 'SOFTWARE\{#Name}', 'Path')) and (FileExists(ExpandConstant(AppDir)+'\My Program.exe')) then begin
У меня работает. Я всегда по несколько раз проверяю, прежде чем выложить.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.