Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
El Sanchez
22-02-2014, 12:51
Инсталлятор прочесть из реестра не может, кажет альтернативный путь установки. Но при этом рядом есть ключ HKLM\Software\AGEIA Technologies,PhysXCore Path с ним все работает без проблем! Что за избирательность? »
Debugger, по умолчанию инсталлятор работает в 32-разрядном режиме, поэтому все обращения к 64-разрядным разделам реестра и системным директориям перенаправляются в их 32-разрядные аналоги. Либо переводите инсталлятор в 64-разрядный режим установкой директивы ArchitecturesInstallIn64BitMode=x64, либо обращайтесь к 64-разрядному разделу как к 64-разрядному: DefaultDirName={reg:HKLM64\SOFTWARE\Adobe\Photoshop\55.0,PluginPath|C:\123}
как сделать чтобы версия определялась через реестр и появлялся диалог с версией »
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[CustomMessages]
Caption=Действия
Description=Выберите действия которые вы хотите сделать.
NewButton1=Проверить версию для Internet Explorer
NewButton2=Проверить версию для Firefox, Safari, Opera
NewButton3=Запустить деинсталлятор Adobe Flash Player
[Code]
var
ISCustomPage1: TWizardPage;
NewButton1, NewButton2, NewButton3: TNewButton;
ResultCode: Integer;
lpBuff: String;
procedure NewButton1Click(Sender: TObject);
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX', 'Version', lpBuff) then
MsgBox('Установлена версия для Internet Explorer:' + StringOfChar(#32,2) + lpBuff, mbInformation, MB_OK);
end;
procedure NewButton2Click(Sender: TObject);
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin', 'Version', lpBuff) then
MsgBox('Установлена версия для Firefox, Safari, Opera:' + StringOfChar(#32,2) + lpBuff, mbInformation, MB_OK);
end;
procedure NewButton3Click(Sender: TObject);
begin
shellexec('open', ExpandConstant('{sys}\cmd.exe'), '', '',SW_SHOWNORMAL, ewnowait, ResultCode)
end;
procedure InitializeWizard();
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, CustomMessage('Caption'), CustomMessage('Description'));
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(32);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton1');
OnClick := @NewButton1Click;
end;
NewButton2 := TNewButton.Create(WizardForm);
with NewButton2 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(88);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton2');
OnClick := @NewButton2Click;
end;
NewButton3 := TNewButton.Create(WizardForm);
with NewButton3 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(24);
Top := ScaleY(136);
Width := ScaleX(371);
Height := ScaleY(33);
Caption := CustomMessage('NewButton3');
OnClick := @NewButton3Click;
end;
end;
вопрос в том как их прописать в inno setup? »
[Registry]
Root: HKLM; Subkey: SOFTWARE\RegisteredApplications; ValueType: string; ValueName: Kallisto; ValueData: SOFTWARE\Clients\Media\Kallisto\Capabilites; Flags: deletevalue uninsdeletevalue
habib2302
22-02-2014, 15:06
и как перед установкой распаковать деинсталлятор для adobe flash player во временную папку {tmp}
Debugger
22-02-2014, 15:10
El Sanchez, да, все работает. Я проверял HKLM64, но ДО того как выставлял директивы указанные в предыдущем посте. Спасибо!
Почему же работает соседняя ветка?
Dodakaedr,
[Registry]
Root: HKLM; SubKey: SOFTWARE\RegisteredApplications; ValueType: string; ValueName: Kallisto; ValueData: SOFTWARE\Clients\Media\Kallisto\Capabilites0; Flags: uninsdeletevalue
По первому, насчёт перезаписи - то по умолчанию и так будет перезаписано.
А по второму, достаточно будет одного флага uninsdeletevalue - т.е в "RegisteredApplications" удалит параметр "Kallisto" со значением, но не затронет сам раздел "RegisteredApplications (SOFTWARE\RegisteredApplications) - т.к в нём могут иметься другие параметры от других программ".
и как перед установкой распаковать деинсталлятор для adobe flash player во временную папку {tmp} »
ExtractTemporaryFile('install_flash_player_ax.exe');
ExtractTemporaryFile('install_flash_player.exe');
ExtractTemporaryFile('uninstall_flash_player.exe');
El Sanchez
22-02-2014, 16:43
Я проверял HKLM64, но ДО того как выставлял директивы указанные в предыдущем посте »
Debugger, указание HKLM64 достаточно в вашем случае для 32-разрядного режима работы инсталлятора, нет необходимости одновременно еще и директиву ArchitecturesInstallIn64BitMode применять.
Почему же работает соседняя ветка? »
Debugger, потому что в 32-разрядном аналоге раздела реестра эта запись тоже есть.
P.S. Тут, тут, тут и тут по теме.
Dodakaedr
22-02-2014, 18:35
Есть способ изменить цвет текста при включенном Transparent?
Возможно ли распаковать архив pkg ? в определённую папочку
Есть способ изменить цвет текста »
Font.Color:=$FF0000;
Dodakaedr
22-02-2014, 20:33
Nordek, это при включенной прозрачности?
http://savepic.org/5073971.jpg
with WizardForm.PageDescriptionLabel do
begin
Color := clMenuText;
Font.Color := clBlue;
ParentColor := False;
ParentFont := False;
OnClick := @PageDescriptionLabelClick;
Transparent := True;
Left := ScaleX(0);
Top := ScaleY(23);
Width := ScaleX(261);
end;
Dodakaedr там есть font + разверни
Font.Height := -12; а большую картинку под спойлер
Dodakaedr
22-02-2014, 21:21
там есть font + разверни
Font.Height := -12; »
Не меняет цвет, меняет высоту....
Dodakaedr
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code]
procedure InitializeWizard();
begin
with WizardForm.PageDescriptionLabel do
begin
Font.Color := clRed;
end;
with WizardForm.PageNameLabel do
begin
Font.Color := clLime;
end;
end;
Dodakaedr
22-02-2014, 21:32
vint56, не то. нужно поменять цвет текста при включенной прозрачности. посмотрите на скрин
Dodakaedr, шрифт контролов TNewStaticText при включении прозрачности фона лишается свойства Color. Как вариант, можно использовать свои контролы TLabel.
Dodakaedr
22-02-2014, 21:32
saurn, а можно по подробней?
Dodakaedr у простого лэйбала тоже есть параметр празрачности Transparent := True;
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code]
var
Label1: TLabel;
procedure InitializeWizard();
begin
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Transparent := True;
Parent := WizardForm.SelectDirPage;
Caption := 'Dodakaedr';
Font.Color := clRed;
Font.Height := -16;
Font.Name := 'Tahoma';
Font.Style := [fsBold];
ParentFont := False;
Left := ScaleX(152);
Top := ScaleY(136);
Width := ScaleX(113);
Height := ScaleY(19);
end;
end;
Dodakaedr
22-02-2014, 21:41
vint56, оно, только надо вместо NewStaticText1, а он заблокирован. Как быть?
Dodakaedr
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
DestName: "WizardForm.BitmapImage1.bmp"; Source: "E:\Картинки\mostkorol2_1024.bmp"; Flags: dontcopy solidbreak
[Code]
var
Panel1: TPanel;
BitmapImage1: TBitmapImage;
Label1: TLabel;
Label2: TLabel;
procedure InitializeWizard();
begin
WizardForm.MainPanel.Hide;
{ Panel1 }
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Parent := WizardForm.InnerPage;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(499);
Height := ScaleY(57);
BevelOuter := bvNone;
end;
{ BitmapImage1 }
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Parent := Panel1;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(57);
ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
end;
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := Panel1;
Caption := 'Выбор папки установки';
Font.Color := clWhite;
Font.Height := -12;
Font.Name := 'Tahoma';
Font.Style := [];
ParentFont := False;
Left := ScaleX(16);
Top := ScaleY(8);
Width := ScaleX(134);
Height := ScaleY(14);
end;
{ Label2 }
Label2 := TLabel.Create(WizardForm);
with Label2 do
begin
Parent := Panel1;
Caption := 'В какую папку вы хотите установить {#SetupSetting("AppName")}?';
Font.Color := clWhite;
Font.Height := -12;
Font.Name := 'Tahoma';
Font.Style := [];
ParentFont := False;
Left := ScaleX(24);
Top := ScaleY(24);
Width := ScaleX(385);
Height := ScaleY(14);
end;
end;
Вот обновленый пример
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
DestName: "WizardForm.BitmapImage1.bmp"; Source: "E:\Картинки\mostkorol2_1024.bmp"; Flags: dontcopy solidbreak
[code]
var
PageNameLabel, PageDescriptionLabel: TLabel;
MainPanel: TPanel;
BitmapImage: TBitmapImage;
procedure InitializeWizard();
begin
WizardForm.MainPanel.Hide;
MainPanel := TPanel.Create(WizardForm);
with MainPanel do
begin
Parent := WizardForm.InnerPage;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(499);
Height := ScaleY(57);
BevelOuter := bvNone;
end;
BitmapImage := TBitmapImage.Create(WizardForm);
with BitmapImage do
begin
Parent := MainPanel;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(57);
ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
end;
PageNameLabel:=TLabel.Create(WizardForm);
with PageNameLabel do begin
AutoSize:=False;
SetBounds(ScaleX(24), ScaleY(10), ScaleX(400), ScaleY(30));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=clWhite;;
Parent:=MainPanel;
end;
PageDescriptionLabel:=TLabel.Create(WizardForm);
with PageDescriptionLabel do begin
AutoSize:=False;
SetBounds(ScaleX(40), ScaleY(26), ScaleX(389), ScaleY(50));
Wordwrap:= True;
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=clWhite;;
Parent:=MainPanel;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:=WizardForm.PageNameLabel.Caption
PageDescriptionLabel.Caption:=WizardForm.PageDescriptionLabel.Caption
end;
а можно чтобы только текст менялся без картинки
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[code]
var
PageNameLabel, PageDescriptionLabel: TLabel;
MainPanel: TPanel;
BitmapImage: TBitmapImage;
procedure InitializeWizard();
begin
WizardForm.MainPanel.Hide;
MainPanel := TPanel.Create(WizardForm);
with MainPanel do
begin
Parent := WizardForm.InnerPage;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(499);
Height := ScaleY(57);
BevelOuter := bvNone;
end;
PageNameLabel:=TLabel.Create(WizardForm);
with PageNameLabel do begin
AutoSize:=False;
SetBounds(ScaleX(24), ScaleY(10), ScaleX(400), ScaleY(30));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=$000000;
Parent:=MainPanel;
end;
PageDescriptionLabel:=TLabel.Create(WizardForm);
with PageDescriptionLabel do begin
AutoSize:=False;
SetBounds(ScaleX(40), ScaleY(26), ScaleX(389), ScaleY(50));
Wordwrap:= True;
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=$000000;
Parent:=MainPanel;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:=WizardForm.PageNameLabel.Caption
PageDescriptionLabel.Caption:=WizardForm.PageDescriptionLabel.Caption
end;
Dodakaedr
22-02-2014, 22:13
vint56, а можно чтобы только текст менялся без картинки?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC