PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 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

Shift85
03-05-2014, 13:44
функция картинки на эту кнопку »

diman_21Ru, Через png и bmp:

habib2302
03-05-2014, 15:15
ответьте пожалуйста на мой вопрос http://forum.oszone.net/post-2346336-534.html

Shift85
03-05-2014, 15:21
ответьте пожалуйста на мой вопрос http://forum.oszone.net/post-2346336-534.html »

habib2302, Не совсем понятен вопрос,что за прогресс бар и куда его добавить.

Давайте поточней задавайте вопросы...

habib2302
03-05-2014, 15:29
Shift85, как вам объяснить? я дорабатываю свой репак adobe flash player. во время установки первый прогресс бар показывал состояние распаковки файлов, а второй показывал состояние установки самого adobe fl pl

Shift85
03-05-2014, 15:45
habib2302, Не то пробуй:http://rghost.ru/54891448

diman_21Ru
03-05-2014, 17:01
habib2302, русский ,английский добавил спасибо огромное а как можно ещё украинский,работал с этим примером если можно добавьте туда же заранее спасибо http://rghost.ru/54895502

habib2302
05-05-2014, 00:44
diman_21Ru, http://yadi.sk/d/CdooukGBP4J6T

Антон_Мураткин@vk
05-05-2014, 15:11
Всем привет!!!
Подскажите пожалуйста скрипты на музыку, Слайдшоу и соответственно какие должны быть ещё dll-ки для этого

Shift85
05-05-2014, 15:17
Подскажите пожалуйста скрипты на музыку, Слайдшоу »

На слайдшоу: http://rghost.ru/54963256

habib2302
05-05-2014, 23:17
http://i.imgur.com/Co3m5Wa.png (http://i.imgur.com/qmIhpTL.jpg)
я дорабатываю свой репак adobe flash player. и как сделать так, чтобы во время установки первый прогресс бар показывал состояние распаковки файлов, а второй показывал состояние установки самого adobe fl pl

sergey3695
06-05-2014, 11:23
habib2302, ну как первый прогрессбар сделать? ну думаю знаешь. загвоздка во втором.
1. второй активируется после первого. (думаю понятно)
2. проверка папки установки flash player (если там указывается папка установки,то способ не прокатит)
3. какой размер папки куда ставится и сколько займет устанавливаемое.
4. двигать прогрессбар второй проверяя размер папки куда ставится.
5. не парится. поставить скрыто установку а потом прогрессбар на 100 сразу двинуть и все. (ставится то недолго)
я только не знаю как скрыто установить флеш. надо параметр смотреть.

habib2302
06-05-2014, 12:22
sergey3695, мой репак сделан на подобии от diakov.
вот как устроен мой скрипт
http://i.imgur.com/68siDW5.png (http://i.imgur.com/mvsefjg.jpg)
и вот команда для тихой установки
[Run]
Filename: {tmp}\activex.exe; Flags: RunHidden; Components: AFP\A; Parameters: "/install /force";
Filename: {tmp}\plugin.exe; Flags: RunHidden; Components: AFP\P; Parameters: "/install /force";
т.е у меня идет распаковка во временную папку и дальше идет тихая установка самого flash player'а

Shift85
06-05-2014, 13:58
т.е у меня идет распаковка во временную папку и дальше идет тихая установка самого flash player'а »

habib2302, Зачем изобретать велосипед а не проще все напрямую ставить как репаки игр например.

habib2302
06-05-2014, 14:10
Shift85, в каком смысле напрямую?

sergey3695
06-05-2014, 19:00
habib2302, т.к. файлов нету,скрипта нету,то пример.
Сделал так
////////////////////// Начало ExecAndWait //////////////////

var
lastproc: cardinal;
const
NORMAL_PRIORITY_CLASS = $00000020;
REALTIME_PRIORITY_CLASS = $00000100;
type
_TStartupInfo = record
cb: DWORD;
lpReserved, lpDesktop: Longint;
lpTitle: PAnsiChar;
dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags: DWORD;
wShowWindow, cbReserved2: Word;
lpReserved2: Byte;
hStdInput, hStdOutput, hStdError: Longint;
end;
_TProcessInformation = record
hProcess, hThread: Longint;
dwProcessId, dwThreadId: DWORD;
end;
_TMsg = record
hWnd: HWND;
msg, wParam: Word;
lParam: LongWord;
Time: TFileTime;
pt: TPoint;
end;

function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; external 'OpenProcess@kernel32.dll stdcall';
procedure GetStartupInfo(var lpStartupInfo: _TStartupInfo); external 'GetStartupInfoA@kernel32.dll stdcall';
function CreateProcess(lpApplicationName: PAnsiChar; lpCommandLine: PAnsiChar; lpProcessAttributes, lpThreadAttributes: DWORD; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: PAnsiChar; lpCurrentDirectory: PAnsiChar; const lpStartupInfo: _TStartupInfo; var lpProcessInformation: _TProcessInformation): BOOL; external 'CreateProcessA@kernel32.dll stdcall';
function WaitForSingleObject(hHandle: Longint; dwMilliseconds: DWORD): DWORD; external 'WaitForSingleObject@kernel32.dll stdcall';
function TerminateProcess(hProcess: Longint; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall';
function PeekMessage(var lpMsg: _TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: _TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: _TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';

procedure Application_ProcessMessages;
var
Msg: _TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;

function ExecAndWait(filename, params: pansichar; showcmd: integer; Priority: Smallint; zav: DWord): Boolean;
var
SI : _TStartupInfo;
PI : _TProcessInformation;
CMD: string;
prt: DWORD;
begin
Result:=false;
CMD:='"' + filename + '" ' + params;
GetStartupInfo(SI);
SI.wShowWindow := showcmd;
SI.dwFlags := 1;
if Priority = 0 then prt:= NORMAL_PRIORITY_CLASS else
if Priority = 1 then prt:= REALTIME_PRIORITY_CLASS;
Result:=CreateProcess('', PansiChar(CMD), 0, 0, false, prt,'', pansichar(ExtractFilePath(filename)), SI, PI);
lastproc:=PI.dwProcessId;
if zav=1 then
begin
while WaitforSingleObject(PI.hProcess, 50) = $00000102 do
Application_ProcessMessages;
end;
CloseHandle(PI.hProcess)
end;

////////////////////// Конец ExecAndWait ///////////////////

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableFinishedPage=yes
OutputDir=.

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

[Code ]
var
Timer: TTimer;
Labelpr: TLabel;
NewProgressBar1: TNewProgressBar;

// ExecAndWait
#include "ExecAndWait.iss"

procedure RedesignWizardForm;
begin
Labelpr := TLabel.Create(WizardForm);
with Labelpr do
begin
Parent := WizardForm;
Left := ScaleX(96);
Top := ScaleY(120);
Width := ScaleX(289);
Caption:= 'Установка флеша';
end;
{ NewProgressBar1 }
NewProgressBar1 := TNewProgressBar.Create(WizardForm);
with NewProgressBar1 do
begin
Parent := WizardForm;
Left := ScaleX(96);
Top := ScaleY(144);
Width := ScaleX(289);
Height := ScaleY(25);
Max:= 100;
end;
end;

procedure FlRun(Sender: TObject);
begin
ExecAndWait(ExpandConstant('{src}\activex.exe'), '/install /force', SW_HIDE, 0,1);
WizardForm.Close;
end;

procedure Timepr(Sender: TObject);
begin
NewProgressBar1.Position:=NewProgressBar1.Position+9;
if NewProgressBar1.Position= 100 then
begin
Labelpr.Caption:= 'Завершение установки';
Timer.Enabled:= False;
end;
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
Timer:=TTimer.Create(nil);
with Timer do begin
Interval:= 300;
OnTimer:=@Timepr;
end;
WizardForm.OnActivate:= @FlRun;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;
Время таймера должно быть меньше времени установки флеша. Прогрессбар тупо двигается по таймеру,а в это время происходит установка, потом прогресс доходит до максимума и лейбл меняется на завершение установки,в то время как флеш еще ставится. хотел сделать ожидание установщика (если флеш установится), но тогда процесс зависает. Можно конечно создать еще процесс,но это извращенство. Вообщем так. Или файлы со скиптом и я по изгаляюсь )

Антон_Мураткин@vk
06-05-2014, 20:09
Shift85, Благодарю!!!

Ребят, вот скрипт Инсталлятора http://sendfile.su/976358 не могу найти в скрипте код на кнопки далее, отмена, установка. Хочу кнопки передвинуть в другое место. Может кто посмотрит и подскажет в каком месте в скрипте это поменять положения этих кнопок. Заранее благодарю

habib2302
06-05-2014, 20:27
скрипта нету »
скрипт я не дам. т.к кто-то у меня скрипт украл и за меня делал репаки

Shift85
06-05-2014, 20:29
в каком месте в скрипте это поменять положения этих кнопок »
Антон_Мураткин@vk, В модуле Button.iss

with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle,203,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hBackBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hBackBtn,WFButtonFont.Handle);
BtnSetFontColor(hBackBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle,298,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hNextBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hNextBtn,WFButtonFont.Handle);
BtnSetFontColor(hNextBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle,203,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hCancelBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hCancelBtn,WFButtonFont.Handle);
BtnSetFontColor(hCancelBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;

298,277,77,23
298,277,77,23
203,277,77,23

Эти параметры. ;)

Антон_Мураткин@vk
06-05-2014, 20:35
Shift85, Благодарю! А я искал в главном скрипте

Dodakaedr
06-05-2014, 21:43
мультиязычный вариант »
Как сделать чтобы полностью инсталлятор менялся, а то оно меняется только на одной странице?




© OSzone.net 2001-2012