[архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Ответить
 • Просмотры: 4
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

ilyaalex


Цитата Serega:



Цитата ilyaalex:

Нужно определить наличие учетной записи windows, используя средства Inno setup. »

Почитайте в Справке по Inno Setup, раздел:

Pascal Scripting: Introduction->Pascal Scripting: Support Functions Reference->function GetUserNameString: String;
Inno Setup. Прочие вопросы
Аватара пользователя
serg aka lain

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение serg aka lain »

Цитата user_123:



1) вывод стандартного системного запроса (Да/Нет) с использованием текста из секции CustomMessages
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]





Пример




Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
tsk=Попробуйте, снимите с меня галку... ;)
msg=бла... бла... бла... %n Вы уверенны?
[Tasks]
Name: tsk; Description: {cm:tsk}; GroupDescription: Дополнительно:
[Code]
procedure OnClickCheck(Sender: TObject);
begin
  if not IsTaskSelected('tsk') then
  if MsgBox(ExpandConstant('{cm:msg}'), mbConfirmation, MB_YESNO) = IDYES then
    begin
      MsgBox('Я всё видел, Вы нажали "Да"', mbInformation, MB_OK);
    end
  else
    begin
      MsgBox('Вы нажали "Нет", очень жаль...', mbInformation, MB_OK);
    end;
end;
procedure InitializeWizard;
begin
  WizardForm.TasksList.OnClickCheck:= @OnClickCheck;
end;
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

Привет всем, подскажите пожалуйста, как сделать так, чтобы копирование файлов (Source: D:\TEMP\silnet hill homecoming\rus\*; DestDir: {app}; Flags: recursesubdirs ignoreversion createallsubdirs; Components: Full_Russian EngSRusT), создание ярлыков и выполнение секции run происходило после распаковки архивов, именно в таком порядке. Скрипт прилагается.
Аватара пользователя
DemonAk

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение DemonAk »

Как добавить в этот код еще парочку mp3, чтобы они проигрывались по порядку:


читать дальше »


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;

cb:TCheckBox;



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: PAnsiChar; 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';



function InitializeSetup(): Boolean;

begin

ExtractTemporaryFile('BASS.dll');

ExtractTemporaryFile('Music.mp3');

mp3Name := ExpandConstant('{tmp}\Music.mp3');

BASS_Init(-1, 44100, 0, 0, 0);

mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);

BASS_Start();

BASS_ChannelPlay(mp3Handle, False);

Result := True;

end;



procedure cbmusic(Sender: TObject);

begin

if cb.checked = true then

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, PAnsiChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);

BASS_Start();

BASS_ChannelPlay(mp3Handle, False);

end;

end;

end;

if cb.checked = false then

BASS_ChannelPause(mp3Handle);

end;



procedure InitializeWizard();

begin

cb:=TCheckBox.Create(WizardForm);

cb.Parent:=WizardForm;

cb.Width:=ScaleX(220);

cb.Left:=ScaleY(10);

cb.Top:=ScaleY(330);

cb.CAPTION:='Проигрывание музыки';

cb.ONCLICK:=@cbmusic;

cb.checked:=true

end;



procedure DeinitializeSetup();

begin

BASS_Stop();

BASS_Free();

end;
Аватара пользователя
comsun

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение comsun »

Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют, например, как на
скрине
(та же фигня на всех страницах), а на странице лицензионного соглашения нет текста "я принимаю..." и "я не принимаю...", тупо две галки =((( Помогите это исправить!!!
Аватара пользователя
grinda

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение grinda »

Скажите плиз как тут в верхнем правом углу картинку вставить
http://i060.radikal.ru/0910/b1/651cfc1020df.jpg
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

Цитата A1EXXX:



FlatX007, добавь флаг uninsdeletevalue, например:

[Registry]

Root: HKLM; Subkey: "SOFTWARE\Activision"; ValueType: String; Flags: uninsdeletevalue
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




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

Неработает кароче.
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

МИШАНЧИК, можно! Немного повозился и вот, что получилось Изображение
читать дальше »





Цитата:



; Первоисточник - скрипт ComponentsDescriptions by Victor Dobrov

; изменён и переделан под TaskPage by A1EXXX



[Setup]

AppName=Tasks Descriptions

AppVerName=Tasks Descriptions 1.0

DefaultDirName=Tasks Descriptions

OutputDir=.



[Languages]

Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"



[Files]

; скачать библиотеку descctrl.dll (6 кб) можно здесь:
http://victor-dobrov.narod.ru/inno_descctrl.7z


Source: descctrl.dll; Flags: dontcopy;

Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs



[CustomMessages]

Russian.xxx=Установка компонента Gamedata



[Tasks]

Name: "gamedata"; Description: "{cm:xxx}";


Код: Выделить всё


var Point: TPoint; CompDesc: TEdit; MessageForm: TForm; MessagePanel: TPanel; MessageLabel: TLabel; n, frame: integer;



function EnableDesc(TasksListHandle, DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';

function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';

procedure GetCursorPos(var Point: TPoint); external 'GetCursorPos@user32 stdcall delayload';

function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall';



Procedure DrawIcon(Form: TWinControl; File: String; nIcon, Left, Top, Size, BColor: Integer); var Panel: TPanel; Rect: TRect; Begin

  Panel:= TPanel.Create(Form); Panel.SetBounds(Left, Top, Size, Size); Panel.Parent:= Form

  with TBitmapImage.Create(Panel) do begin Parent:= Panel; with Bitmap do begin

	  Width:= Size; Height:= Size; Rect.Right:= Size; Rect.Bottom:= Size; Canvas.Brush.Color:= BColor; Canvas.FillRect(Rect); end; end;

End;



Procedure ResizeLabel(Obj: TLabel; Text: String; MaxWidth: Integer); var k, w, h: integer;	Begin	{размер формы подгоняется под текст}

	Obj.AutoSize:= true; Obj.WordWrap:= false; Obj.Caption:= Text; {авторазмер}

	w:= Obj.Width; h:= Obj.Height; n:= (w + frame*2)/MaxWidth + 1

  Repeat

	Obj.Width:= w/n + frame*2*n + k

	Obj.Height:= h * n

	Obj.WordWrap:= true; k:= k + 4

  Until Obj.Height/h = n

End;



Procedure ShowHint(String: string; AIndex: Integer; Center: Bool); Begin	{размер формы подгоняется под текст, если AIndex = 0, значок не рисуется}

	frame:= 10; if AIndex  0 then String:= '      '+ String;

  GetCursorPos(Point); MessageLabel.Left:= frame; MessageLabel.Top:= frame

	ResizeLabel(MessageLabel, String, WizardForm.ClientWidth)

	if Center then n:= WizardForm.Left + WizardForm.Width/2 - (MessageLabel.Width + frame*2 -2)/2 else n:= Point.X + 12

  MessageForm.SetBounds(n, Point.Y + 12, MessageLabel.Width + frame*2 -2, MessageLabel.Height + frame*2 -2)

	MessageForm.Show; SetWindowPos(MessageForm.Handle, -1, 0, 0, 0, 0, 3);

End;



Procedure DeinitializeSetup();

Begin

	disabledesc();

End;



Procedure CurStepChanged(CurStep: TSetupStep);

Begin

	if CurStep = ssInstall then disabledesc();

End;



Procedure CurPageChanged(CurPageID: Integer);

Begin

  if CurPageID = wpSelectTasks then enableDesc(WizardForm.TasksList.Handle,CompDesc.Handle,

	'Демонстрационный режим (описание компонента)'); // текст описания

End;



Procedure ObjectOnClick(Sender: TObject);

Begin

  Case TObject(Sender) of	{событие объекта}

	CompDesc:

		if CompDesc.Text > '' then ShowHint(CompDesc.Text, 0, true) else MessageForm.Hide;

	MessageForm:

		WizardForm.BringToFront;

  end;

End;



Procedure InitializeWizard;

Begin

  CompDesc:= TEdit.Create(WizardForm)

	CompDesc.Parent:= WizardForm

	CompDesc.Visible:= false

	CompDesc.OnChange:= @ObjectOnClick

  MessageForm:= CreateCustomForm;

	MessageForm.BorderStyle:= bsNone

	MessageForm.OnActivate:= @ObjectOnClick

  MessagePanel:= TPanel.Create(MessageForm)

	MessagePanel.BevelInner:= bvLowered;

	MessagePanel.Align:= alClient;

	MessagePanel.Color:= $E1FFFF; // цвет панели

	MessagePanel.Parent:= MessageForm

  MessageLabel:= TLabel.Create(MessagePanel)

	MessageLabel.Transparent:= true

	MessageLabel.Font.Name:= 'Tahoma' // шрифт описания

	MessageLabel.Font.Size:= WizardForm.Font.Size

	MessageLabel.Parent:= MessagePanel

End;
Аватара пользователя
serg aka lain

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение serg aka lain »

Цитата DemonAk:



как сделать так, чтобы
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Попробуйте, скрипт прикрепил к сообщению. Работоспасобность, не проверял.




Цитата lmiol:



Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




стандартным способом нет, придётся вручную рисовать чебоксы и обрабатывать клики мышкой по ним.




Цитата A1EXXX:



Есть скрипт для задания чёрного фона (прикрепил), но вот беда, не все текста присутствуют
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




добавьте:



Код:

Код: Выделить всё

WizardForm.PageNameLabel.Font.Color:=clWhite;

а лицензионное соглашение, помоему это:



Код:

Код: Выделить всё

WizardForm.LicenseAcceptedRadio.Font.Color:= clWhite;
WizardForm.LicenseNotAcceptedRadio.Font.Color:= clWhite;
Ответить

Вернуться в «Автоматическая установка приложений»