Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: nerobol
Дата сообщения: 14.04.2007 17:31
Как сделать так как на этой картинке
http://img219.imageshack.us/my.php?image=screenshot8lz9.jpg
чтобы на странице приветствия была картинка во всю страницу
Автор: Sampron
Дата сообщения: 14.04.2007 17:33
А не проще для этого использовать авторан?
Автор: NightW0lf
Дата сообщения: 14.04.2007 17:51
nerobol

Цитата:
Как сделать так как на этой картинке
http://img219.imageshack.us/my.php?image=screenshot8lz9.jpg
чтобы на странице приветствия была картинка во всю страницу

[more=Пример растягивания одной и той же картинки на страницах Приветствия и Завершения]

Код:

Код:
procedure InitializeWizard();
var
Page: TWizardPage;
begin
WizardForm.WizardBitmapImage.Left := 333; //Страница Приветствия
WizardForm.WelcomeLabel1.Left := 20;
WizardForm.WelcomeLabel2.Left := 20;
WizardForm.WizardBitmapImage2.Left := 333; //Страница Завершения
WizardForm.FinishedLabel.Left := 20;
WizardForm.FinishedHeadingLabel.Left := 20;
WizardForm.RunList.Left := 20;
WizardForm.YesRadio.Left := 20;
WizardForm.NoRadio.Left := 20;
end;
Автор: Sero
Дата сообщения: 14.04.2007 17:57
NightW0lf
Кажется что тебе надо это:

function InitializeSetup:Boolean;
var ResultCode:Integer;
ResultReg:string;
begin
Result:=False;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath', ResultReg) then
if MsgBox('Запустить S.T.A.L.K.E.R.?',mbConfirmation,MB_YESNO) = IDYES then
begin
RemoveQuotes(ResultReg);
if not Exec(ResultReg+'\XR_3DA.exe', '', '', SW_SHOW,ewNoWait, ResultCode) then
MsgBox('Ошибка',mbError,MB_OK);
end
else
begin
Result:=True;
end;
end;


Добавлено:
Chuvakstepan
[Code]
var ResultCode:Integer;
ResultReg:string;
procedure CurPageChanged(CurPageID:Integer);
begin
if CurPageID=wpWelcome then
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath') then
If WizardForm.FindComponent('NextButton') is TButton then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Играть';
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath', ResultReg)
Result:=False;
Exec(ResultReg+'\XR_3DA.exe', '', '', SW_SHOW,ewNoWait, ResultCode)
WizardForm.Close;
end
else
Result:=True;
end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
if CurPageID=wpWelcome then
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath') then
Confirm:=False;
end;
end;
Автор: NightW0lf
Дата сообщения: 14.04.2007 18:39
Sero

Цитата:
Кажется что тебе надо это:

function InitializeSetup:Boolean;
var ResultCode:Integer;
ResultReg:string;
begin
Result:=False;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC','InstallPath', ResultReg) then
if MsgBox('Запустить S.T.A.L.K.E.R.?',mbConfirmation,MB_YESNO) = IDYES then
begin
RemoveQuotes(ResultReg);
if not Exec(ResultReg+'\XR_3DA.exe', '', '', SW_SHOW,ewNoWait, ResultCode) then
MsgBox('Ошибка',mbError,MB_OK);
end
else
begin
Result:=True;
end;
end;

Спасибо, НО твой слегка работает не так как у S.T.A.L.K.E.R.. А именно если нажать "нет" запускается сетап, а у лицензионного сетапа при нажатии на кнопку "нет" просто игра не запускается, а сетап НЕ появляется.
Автор: Chuvakstepan
Дата сообщения: 14.04.2007 18:43
NightW0lf
Замени Result:=True на Result:= False
Автор: NightW0lf
Дата сообщения: 14.04.2007 18:51
Все уже решил проблему! Спасибо Chuvakstepan, Sero за помощь.
[more=Вот код]

Код:
[code]
function InitializeSetup: Boolean;
var
ResultCode: Integer;
ResultReg: string;
begin
Result := False;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\GSC Game World\STALKER-SHOC', 'InstallPath', ResultReg) then
if MsgBox('Запустить S.T.A.L.K.E.R.?', mbConfirmation, MB_YESNO) = IDYES then
begin
RemoveQuotes(ResultReg);
if not Exec(ResultReg + '\bin\XR_3DA.exe', '', '', SW_SHOW, ewNoWait, ResultCode)
then
MsgBox('Ошибка', mbError, MB_OK);
end
else
begin
Result := False;
end;
end;
Автор: Sampron
Дата сообщения: 14.04.2007 18:59
NightW0lf
А если пользователь удалит игру не через деинсталлятор а вручную то потом он её не сможет установить из-за ветки в реестре. Авторан рулит!
Автор: Chuvakstepan
Дата сообщения: 14.04.2007 19:12
Sampron
Бесспорно Авторан рулит, но, иногда, этого нехватает для полного ажура

Sero
Очень странно, но твой код никак не хочет контачить с моим [more=скриптом][no]#define ISSI_SplashScreen "C:\Program Files\Inno Setup\splash.bmp"

;; Time in seconds:
#define ISSI_SplashScreen_T 2

;; Image Width:
#define ISSI_SplashScreen_X 360

;; Image Heigth:
#define ISSI_SplashScreen_Y 480

#define ISSI_WizardImageFile "C:\Program Files\Inno Setup\st_wel.bmp"
#define ISSI_WizardImageFile_x 495
;; Optional: align will switches alignment of the image
#define ISSI_WizardImageFile_Align


;; (optional) This does the same for the Finished screen
#define ISSI_WizardImageFile2 "C:\Program Files\Inno Setup\st_fin.bmp"
#define ISSI_WizardImageFile2_x 495


;; The WizardSmallImageFile
#define ISSI_WizardSmallImageFile "C:\Program Files\Inno Setup\st_head.bmp"
#define ISSI_WizardSmallImageFile_x 495


;; Optional: align will switches alignment of the image
#define ISSI_WizardSmallImageFile_Align


#define ISSI_UseMyCurPageChanged
#define ISSI_UseMyInitializeSetup
#define ISSI_UseMyInitializeWizard



Код:

const
NeedSize = 60; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

var
ListBox: TListBox;

procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: String;
i: Integer;
begin
for i:= 0 to ListBox.Items.Count-1 do
begin
if ListBox.Selected[i] then
begin
NewLetter:= Copy(ListBox.Items[i], 0, 1);
OldString:= Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text:= NewLetter + OldString;
end;
end;
end;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s:string):string;// функция удаления пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result:= st1;
end;



function CheckSystemPage(PreviousPageId: Integer): Integer;
var Page: TWizardPage;
ProcessorName:string;
Processor,VideoCardPanel,AudioCardPanel,RAMPanel,PageFilePanel: TPanel;
ProcessorNamePanel,VideoCardNamePanel,AudioCardNamePanel,RAMTotalPanel,PageFileTotalPanel: TPanel;
ProcessorMHZ: Cardinal;
StaticText,StaticText2:TNewStaticText;
VidRam:integer;
begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;

Page := CreateCustomPage(PreviousPageId,'Апаратное Обеспечение','Программа установки обнаружила следуюшие необходимые компоненты');

StaticText:=TNewStaticText.Create(Page);
with StaticText do
begin
Parent:=Page.Surface;
Caption:='Все компоненты удовлетворяют требованиям игры.';
Left:=0;
Top:=5;
AutoSize:=True;
end;

StaticText2:=TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent:=Page.Surface;
Caption:='Когда вы будете готовы продолжить установку, нажмите Далее'
Left:=0;
Top:=210;
AutoSize:=True;
end;

Processor := TPanel.Create(Page);
with Processor do
begin
Parent := Page.Surface;
Caption := ' Процессор';
Left := ScaleX(0);
Top := ScaleY(32);
alignment:=taLeftJustify;
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder := 0;
end;

ProcessorNamePanel := TPanel.Create(Page);
with ProcessorNamePanel do
begin
Parent := Page.Surface;
Caption :=DelSP(ProcessorName)+' '+IntToStr(ProcessorMHZ)+'MHz' ; //новое обработанное значение строки
// Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ;
Left := ScaleX(128);
Top := ScaleY(32);
alignment:=taLeftJustify;
Width := ScaleX(281);
Height := ScaleY(25);

BevelInner := bvSpace;
BevelOuter:=bvLowered;
Color :=$ccffcc;
TabOrder := 1;
end;

if ProcessorMHZ<2000then
begin
ProcessorNamePanel.Color:=$ccccff;
StaticText.Caption:='Не все компоненты удовлетворяют требованиям игры.';
end;

VideoCardPanel:=TPanel.Create(Page);
with VideoCardPanel do
begin
Parent:=Page.Surface;
Caption:=' Видеоадаптер';
Left:=ScaleX(0);
alignment:=taLeftJustify;
Top:=Processor.Top+27;
Width:=ScaleX(121);
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=0;
end;

VideoCardNamePanel:=TPanel.Create(Page);
with VideoCardNamePanel do
begin
Parent:=Page.Surface;
Caption:=' '+GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
VidrAM:= GetVidMemLocal/1000000;

if VidRam>127 then
begin
if VidRam<200 then Caption:=Caption+' 128 МB'
else if VidRam<300 then Caption:=Caption+' 256 МB'
else if VidRam<400 then Caption:=Caption+' 384 МB'
else if VidRam>500 then Caption:=Caption+' 512 МB';
end;

Left:=ScaleX(128);
Top:=VideoCardPanel.Top;
alignment:=taLeftJustify;
Width:=ScaleX(281);
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
Color :=$ccffcc;
TabOrder:=1;
end;

if GetVidMemLocal<127000000 then //128MB
begin
StaticText.Caption:='Не все компоненты удовлетворяют требованиям игры.';
VideoCardNamePanel.Color:=$ccccff;
end;

AudioCardPanel:=TPanel.Create(Page);
with AudioCardPanel do
begin
Parent:=Page.Surface;
Caption:=' Звуковая карта';
Left:=ScaleX(0);
Top:=VideoCardPanel.Top+27;
alignment:=taLeftJustify;
Width:=ScaleX(121);
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=0;
end;

AudioCardNamePanel:=TPanel.Create(Page);
with AudioCardNamePanel do
begin
Parent:=Page.Surface;
Caption:=' '+GetSoundCardName;
Left:=ScaleX(128);
alignment:=taLeftJustify;
Top:=AudioCardPanel.Top;
Width:=ScaleX(281);
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=1;
Color :=$ccffcc;
end;

if
GetSoundCards=0 then
begin
StaticText.Caption:='Не все компоненты удовлетворяют требованиям игры.';
AudioCardNamePanel.Color:=$ccccff;
end;


RAMPanel:=TPanel.Create(Page);
with RAMPanel do
begin
Parent:=Page.Surface;
Caption:=' ОЗУ'
Left:=0;
Top:=AudioCardPanel.Top+27;
alignment:=taLeftJustify;
Width:=ScaleX(121);
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=0;
end;

RAMTotalPanel:=TPanel.Create(Page);
with RAMTotalPanel do
begin
Parent:=Page.Surface;
Caption:=' '+IntToStr(GetSystemPhys+1) +' MB'
Left:=AudioCardNamePanel.Left;
Top:=RAMPanel.Top;
alignment:=taLeftJustify;
Width:=AudioCardNamePanel.Width;
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=1;
Color :=$ccffcc;
end;

if GetSystemPhys+1<512 then
begin
RAMTotalPanel.Color:=$ccccff;
StaticText.Caption:='Не все компоненты удовлетворяют требованиям игры.';
end;

PageFilePanel:=TPanel.Create(Page);
with PageFilePanel do
begin
Parent:=Page.Surface;
Caption:=' Файл подкачки';
alignment:=taLeftJustify;
Left:=0;
Top:=RAMPanel.Top+27;
Width:=RAMPanel.Width;
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=0;
end;

PageFileTotalPanel:=TPanel.Create(Page);
with PageFileTotalPanel do
begin
Parent:=Page.Surface;
Caption:=' '+IntToStr(GetSystemPage)+' MB';
Left:=RAMTotalPanel.Left;
Top:=PageFilePanel.Top;
alignment:=taLeftJustify;
Width:=RAMTotalPanel.Width;
Height:=ScaleY(25);
BevelInner := bvSpace;
BevelOuter:=bvLowered;
TabOrder:=1;
Color :=$ccffcc;
end;

if GetSystemPage<1247 then
begin
PageFileTotalPanel.Color:=$ccccff;
StaticText.Caption:='Не все компоненты удовлетворяют требованиям игры.';
end;

Result := Page.ID;
end;

var
PlayButton : TButton;
PauseButton : TButton;
StopButton : TButton;
Panel1: TPanel;


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';
const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;


var
mp3Handle: HWND;
mp3Name: string;


function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';

function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

procedure BevelLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.chuvakstepan.xost.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

function ISSI_InitializeSetup(): Boolean;
var
ResultCode: Integer;
MD5,ResultStr:string;
hWnd: Integer;
begin
Result:=True;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;



if not FileExists(ExpandConstant('{src}')+'\website.url') then
begin
MsgBox('Электронная подпись не найдена.'#13#13'Вы используете взломанную или пиратскую версию.', mbError, mb_OK);
Result:= False;
end
else
begin
MD5 := GetMD5OfFile(ExpandConstant('{src}\website.url'));
If not (MD5 = '2b5db4b3d57755af4891cd5a53902f48') then
begin
MsgBox('Произошла критическая ошибка!'#13'Электронная подпись повреждена.'#13'Обратитесь к разработчику!', mbCriticalError, mb_OK);
Result:=False;
end;
end;
end;
end;

procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;

procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
end;


procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
end;

procedure ISSI_CurPageChanged(CurPageID: Integer);
begin
if CurPageID=1 then
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Начать Установку >>>';
TButton(WizardForm.FindComponent('NextButton')).Width:=ScaleX(135);
WizardForm.NextButton.Left:=WizardForm.ClientWidth - ScaleX(217 + 10); //Отступ слева кнопки: Отмена.
WizardForm.NextButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
WizardForm.BackButton.Left:=WizardForm.ClientWidth - ScaleX(300 + 10); //Отступ слева кнопки: Отмена.
WizardForm.BackButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
If WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption:='Выход';
end;
begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Position:=poScreenCenter;
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);
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Width := 30;
PlayButton.Caption := '>';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Width:=30;
PauseButton.Caption := 'II';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Width := 30;
StopButton.Caption := '[]';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{Размер окна по горизонтали}
WizardForm.Height:=392;{Размер окна по вертикали}
WizardForm.Position:=poScreenCenter;
PlayButton.Visible := False;
PauseButton.Visible := False;
StopButton.Visible := False; {Возврат в исходное состояние}
end
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
end;
end;


procedure ISSI_InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
MD5: String;
i: integer;

begin
CheckSystemPage(wplicense);
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;
ListBox.OnClick:= @ListBoxOnClick;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;

begin
MD5 := GetMD5OfString('Copyright CHUVAKSTEPAN 2007')
WizardForm.PasswordEdit.Visible:= False;
//Вставляем то, что складываем
WizardForm.PasswordEdit.Text:= MD5;
end;


begin
WizardForm.CancelButton.BringToFront;
begin
//Выносим кнопку "Отмена" на передний план
WizardForm.CancelButton.BringToFront;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Width := 30;
PlayButton.Caption := '>';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Width:=30;
PauseButton.Caption := 'II';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Width := 30;
StopButton.Caption := '[]';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
end;
begin
with WizardForm.BeveledLabel do
begin
Cursor := crHand;
OnClick := @BevelLabelOnClick;
Font.Style := Font.Style + [fsUnderline];
Font.Color := clMaroon;
Enabled:= True;
begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
end;
end;
end;
end;
end;
end;
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
Автор: Sampron
Дата сообщения: 14.04.2007 19:18
Chuvakstepan

Цитата:
но, иногда, этого нехватает для полного ажура

Это точно, главное чтобы код был а будут его использовать или нет то уже другой вопрос.
Автор: Sero
Дата сообщения: 14.04.2007 19:19
Chuvakstepan
Ничего не происходит или дает ошибку?
P.S. не понимаю зачем вообще использовать Inno Setup Script Includes...
Автор: Chuvakstepan
Дата сообщения: 14.04.2007 19:24
Компилируется, запускается. Но при успешной установки кнопка "Завершить" не выполняет свою функцию, Alt+F4 не работает. Только "Диспетчер задач"

Добавлено:
Вообщем, не закрывается

Добавлено:

Цитата:
P.S. не понимаю зачем вообще использовать Inno Setup Script Includes...

чтобы тонны страниц ушли в две строчки
Автор: Sampron
Дата сообщения: 14.04.2007 20:02
Sero
Загляни в личку.
Автор: NightW0lf
Дата сообщения: 14.04.2007 22:24
2 All
Кто нибудь может помочь реализовать вот это.

[more=В этом коде]

Код:
[code]
function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s: string): string; // функция удаления пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;

function CheckSystemPage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
ProcessorName: string;
Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TPanel;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TPanel;
ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;
begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;

Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');

StaticText := TNewStaticText.Create(Page);
with StaticText do
begin
Parent := Page.Surface;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Left := 0;
Top := 5;
AutoSize := True;
end;

StaticText2 := TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent := Page.Surface;
Caption := 'Когда Вы будите готовы продолжить установку, нажмите «Далее».'
Left := 0;
Top := 220;
AutoSize := True;
end;

Processor := TPanel.Create(Page);
with Processor do
begin
Parent := Page.Surface;
Caption := ' Процессор';
Left := ScaleX(0);
Top := ScaleY(32);
alignment := taLeftJustify;
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 0;
end;

ProcessorNamePanel := TPanel.Create(Page);
with ProcessorNamePanel do
begin
Parent := Page.Surface;
Caption := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ;
Left := ScaleX(128);
Top := ScaleY(32);
alignment := taLeftJustify;
Width := ScaleX(281);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
Color := $ccffcc;
TabOrder := 1;
end;

if ProcessorMHZ < 1800 then
begin
ProcessorNamePanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
end;

VideoCardPanel := TPanel.Create(Page);
with VideoCardPanel do
begin
Parent := Page.Surface;
Caption := ' Видеоадаптер';
Left := ScaleX(0);
alignment := taLeftJustify;
Top := Processor.Top + 27;
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 0;
end;

VideoCardNamePanel := TPanel.Create(Page);
with VideoCardNamePanel do
begin
Parent := Page.Surface;
Caption := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then Caption := Caption + ' ОЗУ - 128 МB'
else if VidRam < 300 then Caption := Caption + ' ОЗУ - 256 МB'
else if VidRam < 400 then Caption := Caption + ' ОЗУ - 384 МB'
else if VidRam > 500 then Caption := Caption + ' ОЗУ - 512 МB';
end;

Left := ScaleX(128);
Top := VideoCardPanel.Top;
alignment := taLeftJustify;
Width := ScaleX(281);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
Color := $ccffcc;
TabOrder := 1;
end;

if GetVidMemLocal < 127000000 then //128 MB
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
VideoCardNamePanel.Color := $ccccff;
end;

AudioCardPanel := TPanel.Create(Page);
with AudioCardPanel do
begin
Parent := Page.Surface;
Caption := ' Звуковая карта';
Left := ScaleX(0);
Top := VideoCardPanel.Top + 27;
alignment := taLeftJustify;
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 0;
end;

AudioCardNamePanel := TPanel.Create(Page);
with AudioCardNamePanel do
begin
Parent := Page.Surface;
Caption := ' ' + GetSoundCardName;
Left := ScaleX(128);
alignment := taLeftJustify;
Top := AudioCardPanel.Top;
Width := ScaleX(281);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 1;
Color := $ccffcc;
end;

if
GetSoundCards = 0 then
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
AudioCardNamePanel.Color := $ccccff;
end;


RAMPanel := TPanel.Create(Page);
with RAMPanel do
begin
Parent := Page.Surface;
Caption := ' ОЗУ'
Left := 0;
Top := AudioCardPanel.Top + 27;
alignment := taLeftJustify;
Width := ScaleX(121);
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 0;
end;

RAMTotalPanel := TPanel.Create(Page);
with RAMTotalPanel do
begin
Parent := Page.Surface;
Caption := ' ' + IntToStr(GetSystemPhys + 1) + ' MB'
Left := AudioCardNamePanel.Left;
Top := RAMPanel.Top;
alignment := taLeftJustify;
Width := AudioCardNamePanel.Width;
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 1;
Color := $ccffcc;
end;

if GetSystemPhys + 1 < 1024 then
begin
RAMTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
end;

PageFilePanel := TPanel.Create(Page);
with PageFilePanel do
begin
Parent := Page.Surface;
Caption := ' Файл подкачки';
alignment := taLeftJustify;
Left := 0;
Top := RAMPanel.Top + 27;
Width := RAMPanel.Width;
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 0;
end;

PageFileTotalPanel := TPanel.Create(Page);
with PageFileTotalPanel do
begin
Parent := Page.Surface;
Caption := ' ' + IntToStr(GetSystemPage) + ' MB';
Left := RAMTotalPanel.Left;
Top := PageFilePanel.Top;
alignment := taLeftJustify;
Width := RAMTotalPanel.Width;
Height := ScaleY(25);
BevelInner := bvSpace;
BevelOuter := bvLowered;
TabOrder := 1;
Color := $ccffcc;
end;

if GetSystemPage < 1247 then
begin
PageFileTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
end;

Result := Page.ID;
end;

procedure InitializeWizard();
begin
CheckSystemPage(wpWelcome);
end;
Автор: Sampron
Дата сообщения: 14.04.2007 22:58
NightW0lf

[Code]
procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
begin
Page:=CreateCustomPage(wpWelcome, 'Операционная система', 'Программа установки обнаружила следующую Операционную систему')
Text:=TNewStaticText.Create(Page)
with Text do begin
Left:=0
Top:=0
Width:=417
Height:=14
Caption:='Операционная система удовлетворяет требованиям игры'
Parent:=Page.Surface
end
Text:=TNewStaticText.Create(Page)
with Text do begin
Left:=0
Top:=210
Width:=417
Height:=14
Caption:='Когда Вы будете готовы продолжить установку, нажмите «Далее».'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=0
Top:=30
Width:=100
Height:=22
ReadOnly:=True
Color:=clBtnFace
Text:='Windows'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=0
Top:=55
Width:=100
Height:=22
ReadOnly:=True
Color:=clBtnFace
Text:='Service Pack'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=0
Top:=80
Width:=100
Height:=22
ReadOnly:=True
Color:=clBtnFace
Text:='Version'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=0
Top:=105
Width:=100
Height:=22
ReadOnly:=True
Color:=clBtnFace
Text:='Build'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=0
Top:=130
Width:=100
Height:=22
ReadOnly:=True
Color:=clBtnFace
Text:='Registered'
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=104
Top:=30
Width:=313
Height:=22
ReadOnly:=True
Color:=$ccffcc
Text:=ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}');
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=104
Top:=55
Width:=313
Height:=22
ReadOnly:=True
Color:=$ccffcc
Text:=ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=104
Top:=80
Width:=313
Height:=22
ReadOnly:=True
Color:=$ccffcc
Text:=ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CurrentVersion|}');
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=104
Top:=105
Width:=313
Height:=22
ReadOnly:=True
Color:=$ccffcc
Text:=ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CurrentBuildNumber|}');
Parent:=Page.Surface
end
Memo:=TMemo.Create(Page)
with Memo do begin
Left:=104
Top:=130
Width:=313
Height:=22
ReadOnly:=True
Color:=$ccffcc
Text:=ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,RegisteredOwner|}');
Parent:=Page.Surface
end
end;
Автор: Sero
Дата сообщения: 15.04.2007 01:05
Chuvakstepan
Но при этом много глюков! Например мой код.
Автор: SyCraft
Дата сообщения: 15.04.2007 01:58
Подскажите плз!
Как вернуть информацию DWORD при помощи константы {reg:} ?
Автор: garbals
Дата сообщения: 15.04.2007 04:46
как сделать несколько ярлыков в меню пуск
например на запуск проргаммы
на унисталл
на файл справки
на папку
Автор: Chuvakstepan
Дата сообщения: 15.04.2007 05:41
garbals
Юзай справку
Вот как у меня:

Цитата:
[Icons]
Name: {userdesktop}\S.T.A.L.K.E.R.; Filename: {app}\bin\XR_3DA.exe; Tasks: desktopicon; Flags: createonlyiffileexists; WorkingDir: {app}\bin
Name: {group}\Начать игру; Filename: {app}\bin\XR_3DA.exe; Flags: createonlyiffileexists; WorkingDir: {app}\bin
Name: {group}\Руководство; Filename: {app}\manual.pdf; Flags: createonlyiffileexists
Name: {group}\Трейнер; Filename: {app}\trn.exe; Flags: createonlyiffileexists; WorkingDir: {app}
Name: {group}\Файл Readme; Filename: {app}\ReadMe.txt; Flags: createonlyiffileexists
Name: {group}\Интернет-сайты\Chuvakstepan Inc.; Filename: {app}\website.url; Flags: createonlyiffileexists; Tasks: url
Name: {group}\Интернет-сайты\Сайт игры; Filename: {app}\websitegameSTALKER.url; Flags: createonlyiffileexists; Tasks: url
Name: {group}\{cm:UninstallProgram,игры}; Filename: {uninstallexe}





Sero
Я переписал свой скрипт (теперь Script Includes отсутствует напрочь)
Я попробовал из твоего кода реализовать вместо кнопки "Отмена" - "Удалить". Всё работает, но только сетап должен закрываться после нажатия на кнопку "Играть" или "Удалить" - а он не закрывается, может что-то не так:

Цитата:
[Code]
var ResultCode:Integer;
ResultReg:string;
procedure CurPageChanged(CurPageID:Integer);
begin
if CurPageID=wpWelcome then
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Chuvakstepan\STALKER-SHOC','SavePath') then
If WizardForm.FindComponent('NextButton') is TButton then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Играть';
if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Chuvakstepan\STALKER-SHOC','InstallPath') then
If WizardForm.FindComponent('CancelButton') is TButton then
TButton(WizardForm.FindComponent('CancelButton')).Caption:='Удалить';
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\Chuvakstepan\STALKER-SHOC','SavePath') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Chuvakstepan\STALKER-SHOC','SavePath', ResultReg)
Result:=False;
Exec(ResultReg+'\XR_3DA.exe', '', '', SW_SHOW,ewNoWait, ResultCode)
WizardForm.Close;
end
else
Result:=True;
end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
if CurPageID=wpWelcome then
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\Chuvakstepan\STALKER-SHOC','InstallPath') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\SOFTWARE\Chuvakstepan\STALKER-SHOC','InstallPath', ResultReg)
Exec(ResultReg+'\unins000.exe', '', '', SW_SHOW,ewNoWait, ResultCode)
Confirm:=False;
WizardForm.Close;
end;
end;
end;

Сразу скажу Software\SOFTWARE\Chuvakstepan\STALKER-SHOC','InstallPath' = {app}
Software\Chuvakstepan\STALKER-SHOC','SavePath = {app}\bin
Автор: NightW0lf
Дата сообщения: 15.04.2007 09:38
Sampron
Спасибо за код, НО у меня еще один вопрос по твоему коду:
Как сделать так чтобы инсталлятор проверял графу - Windows, Service Pack т.е. если в графе Windows будет например Windows ME, 98, 2000, а не Windows XP то инсталлятор должен подчеркнуть красным. И тоже самое с графой Service Pack если инсталлятор обнаружил что у юзера Service Pack 1 [или Service Pack вообще отсутствует], а НЕ Service Pack 2 то инсталлятор должен подчеркнуть красным.
Автор: Sampron
Дата сообщения: 15.04.2007 11:36
NightW0lf
Я незнаю какие записи в реестре предыдущих Windows.
Автор: Sero
Дата сообщения: 15.04.2007 12:06
Sampron
В личку посмотри!
Автор: Sampron
Дата сообщения: 15.04.2007 12:16
Sero
Совсем не то, мне нужно не на странице установки а на странице прогресса (подготовка к установке(Splash)) перед установкой.
Автор: Sero
Дата сообщения: 15.04.2007 12:21
Chuvakstepan
Да,что-то не так:
Ты должен выбрать только один из них,или кнопку играть или кнопку удалить.
С двумя не получается! Лучше используй авторан

Добавлено:
Sampron
Исправлю!
Автор: NightW0lf
Дата сообщения: 15.04.2007 12:23
Sampron

Цитата:
Я незнаю какие записи в реестре предыдущих Windows.

В Windows 2000:
Ветка таже самая - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
ProductName - Microsoft Windows 2000
CSDVersion - Service Pack 4
CurrentVersion - 5.0
CurrentBuildNumber - 2195
RegisteredOwner - NightW0lf

В Windows 98:
Ветка - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
ProductName - Microsoft Windows 98
Сервис Пак - отсутствует
VersionNumber - 4.10.2222
ProductType - 115
RegisteredOwner - NightW0lf

В Windows 95, ME:
Думаю, что все теже ключи в той же ветке аналогично как и в Windows 98.
Автор: Sero
Дата сообщения: 15.04.2007 13:00
Sampron
Смотри в личку!
Автор: Sampron
Дата сообщения: 15.04.2007 13:11
Sero
С извлечением VideoSlideShow.exe в темп во время подготовки работает а вот кнопка Отмена на странице подготовки не работает. Интересует именно задействование кнопки Отмена на странице подготовки во время показа сплеш заставки.
Автор: Sero
Дата сообщения: 15.04.2007 13:27
Sampron
как сделать это не знаю.
Автор: Sampron
Дата сообщения: 15.04.2007 15:01
NightW0lf
А вот этого сам незнаю как сделать.

Добавлено:
Есть библиотека для Splash заставки выдранная из NSIS.
Основные возможности:
1) показ рисунка по указанному времени
2) показ плавного появления и затухания рисунка по времени
3) есть функция "транспарент" но с ней нужно эксперементировать
4) при нажатии мышой на заставку сплеш закрывается

Кому надо забираем здесь:
http://data.cod.ru/821460426

Добавлено:
А также есть ещё одна библиотека через которую реализован таймер на странице лицензии где радиобаттоны скрыты а на кнопке Далее идёт отсчёт времени.

Кому надо забираем здесь:
http://data.cod.ru/821525962
Автор: NightW0lf
Дата сообщения: 15.04.2007 18:25
Sampron

Цитата:
Есть библиотека для Splash заставки выдранная из NSIS.

Спасибо за нее!

Я тут тоже покопался у себя и нашел одни инсталлятор [русификатор для GTA-SA он написан на NSIS] там тоже реализована splash.bmp, НО с прозрачным фоном через библиотеку.

Если кто хочет и может написать скрипт ее работы в Inno Setup тогда забираем:

Зеркало с RL-Team.RU - 126.34 кб
Зеркало с RapidShare.COM - 126.34 кб

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.