Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
пример http://rghost.ru/36652616А как сиё чудо прикрепить к текстурированному через ботву прогрессбару?
const
Indent=25;
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boo lean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssAddImage(FileName:PAnsiChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure ShowMP3Panel(hMainFrm:HWND;StartVolume:integer;DefMP3Dir,BASSDir,MLabel:PAnsiChar;IsShowMP3Info,IsBk gFrmVisible:boolean;ShowTimeMP3Info:integer;dBottom:integer);external 'ShowMP3Panel@files:isgsg.dll stdcall';
procedure KillMP3Panel;external 'KillMP3Panel@files:isgsg.dll stdcall';
function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Game.reg');
ExtractTemporaryFile('20-abspann-ik.mp3');
ExtractTemporaryFile('08-erzmagier_alastair-ik.mp3');
ExtractTemporaryFile('10-das_lied_vom_tod-ik.mp3');
ExtractTemporaryFile('12-unknown-ik.mp3');
ExtractTemporaryFile('15-unknown-ik.mp3');
ExtractTemporaryFile('16-ivo-ik.mp3');
ExtractTemporaryFile('bass.dll');
Result:=True;
end;
procedure InitializeWizard;
begin
ShowMP3Panel(WizardForm.Handle,80,ExpandConstant('{tmp}'),ExpandConstant('{tmp}'),'Repack by BlackPhoenix',True,True,7000,Indent);
ssInitialize(GetWindowLong(MainForm.Handle,-8),10,False,1,$FF000000);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
ExtractTemporaryFile('1.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\1.jpg');
ExtractTemporaryFile('2.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\2.jpg');
ExtractTemporaryFile('3.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\3.jpg');
ExtractTemporaryFile('4.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\4.jpg');
ExtractTemporaryFile('5.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\5.jpg');
ExtractTemporaryFile('6.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\6.jpg');
ExtractTemporaryFile('7.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\7.jpg');
ExtractTemporaryFile('8.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\8.jpg');
ExtractTemporaryFile('9.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\9.jpg');
ExtractTemporaryFile('10.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\10.jpg');
ssStartShow;
end;
if CurStep=ssPostInstall then ssStopShow;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(GetSystemMetrics(0)-WizardForm.Width-Indent);
WizardForm.Top:=ScaleY(GetSystemMetrics(1)-WizardForm.Height-Indent);
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);
end;
if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then begin
if WizardForm.Width<>502 then begin
WizardForm.Visible:=False;
WizardForm.Width:=ScaleX(502);
WizardForm.Height:=ScaleY(392);
WizardForm.Left:=(GetSystemMetrics(0)-WizardForm.Width) div 2;
WizardForm.Top:=(GetSystemMetrics(1)-WizardForm.Height) div 2;
WizardForm.MainPanel.Visible:=True;
WizardForm.Bevel1.Visible:=True;
WizardForm.InnerNotebook.Left:=ScaleX(40);
WizardForm.InnerNotebook.Top:=ScaleY(72);
WizardForm.InnerNotebook.Width:=ScaleX(417);
WizardForm.Visible:=True;
end;
end;
end;
procedure DeinitializeSetup;
begin
KillMP3Panel;
ssDeInitialize;
end;[/spoiler]
P.S. Очень прошу не отсылать читать хелпы, статьи и тд. а реально помочь. Так же прошу меня сильно не пинать т.к. я в этом пока очень слабо разбираюсь.
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
procedure BackupFile(const Mydir,BackDir: string; MyFiles: array of String);
var
i: Integer;
FindFiles: TFindRec;
begin
for i:=0 to GetArrayLength(MyFiles)-1 do begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
if not DirExists(BackDir) then CreateDir(BackDir);
repeat MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name) until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(MyDir)
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
BackupFile(ExpandConstant('{app}\CSS\Data\'), ExpandConstant('{app}\Backup\'),['Ts3.exe','CssFile.txt','*.precomp','*.bmp']);
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then begin
BackupFile(ExpandConstant('{app}\Backup\'), ExpandConstant('{app}\CSS\Data\'),['*']);
end;
end;
[/source]
это значение по умолчанию. Единственный способ убрать иконку окна выглядит так:WizardForm.BorderStyle := bsDialog;
//procedure CurStepChanged(CurStep: TSetupStep);
//Вариант 1:
//if IsComponentSelected('Comp1') then
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Comp1.7z'), ExpandConstant('{app}'), false, '') then break;
//if IsComponentSelected('Comp2') then
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Comp2.7z'), ExpandConstant('{app}'), false, '') then break;
//Вариант 2:
//TmpValue:=1;
//if IsComponentSelected('Comp1') then Comps1:=Comps1+TmpValue; //компонент 1
//TmpValue:=TmpValue*2;
//if IsComponentSelected('Comp2') then Comps1:=Comps1+TmpValue; //компонент 2
//TmpValue:=TmpValue*2;
//if not IS7ZipExtract ( 1, 0, ExpandConstant('{src}\Comp1.7z'), ExpandConstant('{app}'), false, '') then break;
//if not IS7ZipExtract ( 2, 0, ExpandConstant('{src}\Comp2.7z'), ExpandConstant('{app}'), false, '') then break;
[/source]
[HR][/HR]
Пример с TRadioButton:
[source="iss"]
[Code]
var
RadioButton1, RadioButton2: TRadioButton;
procedure InitializeWizard();
begin
WizardForm.OuterNotebook.Hide;
WizardForm.InnerNotebook.Hide;
RadioButton1:= TRadioButton.Create(WizardForm);
RadioButton1.SetBounds(10, 10, 200, 15);
RadioButton1.Caption:= 'Компонент 1';
RadioButton1.Parent:= WizardForm;
RadioButton1.Checked:= True;
RadioButton2:= TRadioButton.Create(WizardForm);
RadioButton2.SetBounds(10, 25, 200, 15);
RadioButton2.Caption:= 'Компонент 2';
RadioButton2.Parent:= WizardForm;
RadioButton2.Checked:= False;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
//if RadioButton1.Checked then
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Comp1.7z'), ExpandConstant('{app}'), false, '') then break;
//if RadioButton2.Checked then
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Comp2.7z'), ExpandConstant('{app}'), false, '') then break;
end;
[/source]
P.S.: Думаю намёк ясен... Эти примеры только для ISDone...
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Files]
Source: Files\1.jpg; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Files\botva2.dll; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Files\CallbackCtrl.dll; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Files\Button.png; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Files\ProgressBackground.png; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
Source: Files\ProgressImg.png; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system;
[code\]
function ImgLoadBotvaU(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
function BtnCreateBotvaU(hParent :HWND; Left, Top, Width, Height :integer; FileName :PAnsiChar; ShadowWidth :integer; IsCheckBtn :boolean) :HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetPositionBotvaU(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer); external 'ImgSetPosition@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetVisiblePartU(img:Longint; NewLeft, NewTop, NewWidth, NewHeight : integer); external 'ImgSetVisiblePart@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetTextBotvaU(h :HWND; Text :PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFontU(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFontColorBotvaU(h :HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor :Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetEnabledBotvaU(h :HWND; Value :boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';
procedure ImgApplyChangesBotvaU(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdownBotvaU; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';
type
TImgPBun = record Left, Top, Width, Height, MaxWidth: integer; img1,img2: Longint; end;
TPBProc = function (h:hWnd;Msg,wParam,lParam:Longint):Longint;
function ImgPBCreateUn(hParent :HWND; bk, pb :ansistring; Left, Top, Width, Height :integer):TImgPBun;
begin
Result.Left:=Left+1;
Result.Top:=Top+1;
Result.Width:=0;
Result.Height:=Height-2;
Result.MaxWidth:=Width-2;
if Length(pb)>0 then Result.img1:=ImgLoadBotvaU(hParent,pb,Result.Left,Result.Top,Result.Width,Result.Height,True,False) else Result.img1:=0;
if Length(bk)>0 then Result.img2:=ImgLoadBotvaU(hParent,bk,Left,Top,Width,Height,True,False) else Result.img2:=0;
end;
procedure ImgPBSetPositionUn(var PB :TImgPBun; Percent :Extended);
var
NewWidth:integer;
begin
if PB.img1<>0 then begin
NewWidth:=Round(PB.MaxWidth*Percent/100);
if PB.Width<>NewWidth then begin
PB.Width:=NewWidth;
ImgSetPositionBotvaU(PB.img1,PB.Left,PB.Top,PB.Width,PB.Height);
ImgSetVisiblePartU(PB.img1,ScaleX(0),ScaleY(0),ScaleX(PB.Width),ScaleY(PB.Height));
end;
end;
end;
function InitializeUninstall: Boolean;
begin
FileCopy(ExpandConstant('{app}\botva2.dll'), ExpandConstant('{tmp}\botva2.dll'), False);
FileCopy(ExpandConstant('{app}\CallbackCtrl.dll'), ExpandConstant('{tmp}\CallbackCtrl.dll'), False);
FileCopy(ExpandConstant('{app}\1.jpg'), ExpandConstant('{tmp}\1.jpg'), False);
FileCopy(ExpandConstant('{app}\ProgressBackground.png'), ExpandConstant('{tmp}\ProgressBackground.png'), False);
FileCopy(ExpandConstant('{app}\ProgressImg.png'), ExpandConstant('{tmp}\ProgressImg.png'), False);
FileCopy(ExpandConstant('{app}\Button.png'), ExpandConstant('{tmp}\Button.png'), False);
Result:=True;
end;
var
UnLabelPct: Tlabel;
UninstPB: TImgPBun;
UninstPBOldProc:Longint;
hCancelUninstBtn: HWND;
WFButtonUninstFont: TFont;
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall';
function CallBackProc(P:TPBProc;ParamCount:integer):LongWord; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';
function UninstPBProc(h:hWnd;Msg,wParam,lParam:Longint):Longint;
var
pr,i1,i2:Extended;
p:string;
begin
if Msg=$2 then SetWindowLong(h,-4,UninstPBOldProc);
Result:=CallWindowProc(UninstPBOldProc,h,Msg,wParam,lParam);
if (Msg=$402) and (UninstallProgressForm.ProgressBar.Position>UninstallProgressForm.ProgressBar.Min) then begin
i1:=UninstallProgressForm.ProgressBar.Position-UninstallProgressForm.ProgressBar.Min;
i2:=UninstallProgressForm.ProgressBar.Max-UninstallProgressForm.ProgressBar.Min;
pr:=(i1*100)/i2;
p:=+Format('%f',[pr])+'%';
UnLabelPct.Caption:=p;
StringChange(p,',','.');
ImgPBSetPositionUn(UninstPB,pr);
ImgApplyChangesBotvaU(UninstallProgressForm.Handle);
end;
end;
procedure InitializeUninstallProgressForm();
begin
with UninstallProgressForm do begin
Bevel.Hide;
InnerNotebook.Hide;
OuterNotebook.Hide;
ClientWidth := ScaleX(497);
ClientHeight := ScaleY(368);
BorderStyle := bsSingle;
end;
UnLabelPct := TLabel.Create(UninstallProgressForm);
with UnLabelPct do begin
Parent := UninstallProgressForm;
SetBounds(ScaleX(207),ScaleY(117),ScaleX(80),ScaleY(20));
AutoSize:=True;
Alignment := taCenter;
Transparent := True;
Font.Name:='Tahoma';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
end;
ImgLoadBotvaU(UninstallProgressForm.Handle,ExpandConstant('{tmp}\1.jpg'),0,0,UninstallProgressForm.ClientWidth,UninstallProgressForm.ClientHeight,True,True);
WFButtonUninstFont:=TFont.Create;
UninstallProgressForm.CancelButton.Visible:=False;
with UninstallProgressForm.CancelButton do begin
hCancelUninstBtn:=BtnCreateBotvaU(UninstallProgressForm.Handle,371,322,110,39,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetTextBotvaU(hCancelUninstBtn, UninstallProgressForm.CancelButton.Caption);
BtnSetFontU(hCancelUninstBtn,WFButtonUninstFont.Handle);
BtnSetFontColorBotvaU(hCancelUninstBtn,$ffffff,$000000,$ffffff,$B6B6B6);
BtnSetEnabledBotvaU(hCancelUninstBtn,False);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usUninstall then begin
UninstallProgressForm.ProgressBar.Visible:=False;
UninstPB:=ImgPBCreateUn(UninstallProgressForm.Handle,ExpandConstant('{tmp}\ProgressBackground.png'),ExpandConstant('{tmp}\ProgressImg.png'),ScaleX(38), ScaleY(114), UninstallProgressForm.ProgressBar.Width, ScaleY(20));
ImgApplyChangesBotvaU(UninstallProgressForm.Handle);
UninstPBOldProc:=SetWindowLong(UninstallProgressForm.ProgressBar.Handle,-4,CallBackProc(@UninstPBProc,4));
end;
end;
procedure DeinitializeUninstall;
begin
gdipShutdownBotvaU;
end;
тут пример.меня интерисует как накласть картинку на radio button
Просто удаляй из пути подпапку Wow6432Node. ТОесть вместо HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\и так далее, нужно HKEY_LOCAL_MACHINE\SOFTWARE\и так далее.все игрушки пишутся вот в эту ветку реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\
никак, если только длл переписатьСобрал скрипт в IS GameScript generator и не пойму как сделать так что-бы плеер был все время виден ?
Как убрать иконку в левом вверхнем углу, но оставить кнопку сворачивания?
стандартными методами не получится убрать только иконкуЕдинственный способ убрать иконку окна выглядит так:
procedure InitializeWizard();
begin
WizardForm.BorderIcons := [];
end;
Но он скроет все кнопки, вместе с иконкой. вернуть назад кнопки, у меня не получилось.
не совсем так. если под пустой иконкой подразумевать файл .ico, 32-бит, полностью прозрачный, то такую иконку можно сунуть в заголовок окна, при этом иконка самого приложения не поменяется. т.е. иконку меняем только у WizardForm. ну и еще останется системная менюшкаи в инно, это иконка самого инсталла, так что иконка самого инсталла, станет похожа на иконку консоли.
procedure InitializeWizard_splash();
var
val1,val2: Integer;
begin
ExtractTemporaryFile('AdvSplash.dll');
ExtractTemporaryFile('splash1.bmp');
ExtractTemporaryFile('splash2.bmp');
val1:=callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','1000','4000','1500','0xffffff',ExpandConstant('{tmp}\splash1'),'','','','','');
val2:=callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','3000','2000','1500','0xffffff',ExpandConstant('{tmp}\splash2'),'','','','','');
end;