Jump to content
Korean Random

Создание инсталляторов для модпаков на базе Inno Setup


Recommended Posts

удалял шрифт уже .... а обратно не появляется он (((

хм,странно 

у меня вот так и все ок

Source: "файлы модпака\шрифты\XVM.ttf"; DestDir: "{fonts}"; FontInstall: "XVM"; Flags: onlyifdoesntexist uninsneveruninstall; Components: KMP;
Source: "файлы модпака\шрифты\dynamic.otf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "dynamic"; Components: KMP;
Source: "файлы модпака\шрифты\Micra Normal.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "Micra Normal"; Components: KMP;
Source: "файлы модпака\шрифты\warhelio.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "warhelio"; Components: KMP;
Source: "файлы модпака\шрифты\XVMSymbol_9.0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_9.0"; Components: KMP;
Source: "файлы модпака\шрифты\XVMSymbol_7.1_0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_7.1_0"; Components: KMP;
Source: "файлы модпака\шрифты\XVMSymbol_4.0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_4.0"; Components: KMP;
Source: "файлы модпака\шрифты\Millennia.otf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "Millennia"; Components: KMP;
Source: "файлы модпака\шрифты\8428523.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "8428523"; Components: KMP;
Source: "файлы модпака\шрифты\a_Algerius.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "a_Algerius"; Components: KMP;

Link to comment
Short link
Share on other sites

, что-то мне подсказывает, что это скин.

 

 

 

с этим кодом шрифт должен сам установиться в виндоус во время установки модов ??? или нужно для этого еще создать страницу ???
Да. Нет.

 

 

 

что то может не то делаю но у меня шрифт не ставиться (((
Ты администратор своей системы?
Название шрифта правильно указано?

ОС, случайно, не winXP?

Link to comment
Short link
Share on other sites

Оно вроде по умолчанию запоминает со стандартной страницы выбора компонентов. Если деинсталлятор не отключен.

А если он отключён (только занесение в реестр) и 5 кастомных страниц на борту? :heh:

 

Приходится крутиться. :ok:

Link to comment
Short link
Share on other sites

Не подскажите как сделать, чтобы при выборе компонента (звуковых модов) воспроизводилась озвучка данного мода как в ProTanki или Ekspoint ♫

лови

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
ComponentsListTVStyle=true
[Files]
Source: sounds\*; flags: dontcopy;
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Components]
Name: sound; Description: Звук выстрела; Types: full;
Name: sound\snd1; Description: "Тихий"; Flags: exclusive;
Name: sound\snd2; Description: "Громкий"; Flags: exclusive;
[Code]
const
  LB_ITEMFROMPOINT  = $01A9;
type
  TComponentSound = record
    SoundName: String;
    Index: Integer;
  end;
  TSize = record
    cx: Longint;
    cy: Longint;
  end;
  ABC = record
    abcA: Integer;
    abcB: UINT;
    abcC: Integer;
  end;
  HDC = Longword;
  HGDIOBJ = Longword;
var
  iSound: array of TComponentSound;
  sndCompOldProc: TNotifyEvent;
function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints: TPoint; cPoints: UINT): Integer; external '[email protected] stdcall';
function GetTextExtentPoint32(DC: HDC; lpString: String; Len: Integer; var lpSize: TSize): Boolean; external '[email protected] stdcall';
function GetClientDC(hWnd: HWND): HDC; external '[email protected] stdcall';
function ReleaseClientDC(hWnd: HWND; hDC: HDC): Integer; external '[email protected] stdcall';
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; external '[email protected] stdcall';
function GetCharABCWidths(DC: HDC; uFirstChar, uLastChar: UINT; var lpAbc: ABC): Boolean; external '[email protected] stdcall';
function sndPlaySound(lpszSoundName: String; fuSound: UINT): BOOL; external '[email protected] stdcall';
function GetTextWidth(aFont: TFont; Text: String): Integer;
var
  DC: HDC;
  aSize: TSize;
  OldObj: Longword;
  abc1, abc2: ABC;
begin
  if Text='' then Exit;
  DC:= GetClientDC(0);
  try
    OldObj:= SelectObject(DC, aFont.Handle);
    GetTextExtentPoint32(DC, Text, Length(Text), aSize);
    Result:= aSize.cx;
    if (Length(Text)<>1)and(fsItalic in aFont.Style) then begin
      GetCharABCWidths(DC, Ord(Text[1]), Ord(Text[1]), abc1);
      GetCharABCWidths(DC, Ord(Text[Length(text)]), Ord(Text[Length(text)]), abc2);
      if abc1.abcA<0 then Result:= Result-abc1.abcA;
      if abc2.abcC<0 then Result:= Result-abc2.abcC
    end;
  finally
    SelectObject(DC, OldObj);
    ReleaseClientDC(0, DC);
  end;
end;
procedure PlaySound(Sender: TObject);
var
  x, o, n, lParam, i, f, ids, w1, w2, x1, x2: Integer;
  p: TPoint;
  sp, s: String;
  fnt: TFont;
begin
  GetCursorPos(p);
  MapWindowPoints(0, WizardForm.ComponentsList.Handle, p, 1);
  lParam:= p.x or (p.y shl 16);
  i:= SendMessage(WizardForm.ComponentsList.Handle, LB_ITEMFROMPOINT, 0, lParam);
  if ((i shr 16) = 1) or ((i and $FFFF) < 0) then Exit;
  ids:= i and $FFFF;
  o:= WizardForm.ComponentsList.Offset;
  n:= WizardForm.ComponentsList.ItemLevel[ids];
  if (WizardForm.ComponentsList.TreeViewStyle) then
    x:= ScaleX((1 + o) + ((13 + o * 2)*(n + 1)) + (14 + o * 2))
  else
    x:= ScaleX((13 + o * 2)*(n + 1));
   
  sp:= ' '+#$266B;
  f:= -1;
  for i:= 0 to GetArrayLength(iSound)-1 do begin
    if (ids = iSound[i].Index) then begin
      f:= i;
      Break;
    end;
  end;
  if (f < 0) then Exit;
  s:= WizardForm.ComponentsList.ItemCaption[ids];
  if (Pos(#$266B, s) <= 0) then Exit;
  fnt:= WizardForm.ComponentsList.Font;
  fnt.Style:= WizardForm.ComponentsList.ItemFontStyle[i];
 
  w1:= GetTextWidth(fnt, Trim(s));
  w2:= GetTextWidth(fnt, sp);
 
  x2:= w1 + x;
  x1:= x2 - w2;
  if (p.x >= (x1 - 1)) and (p.x <= (x2 + 1)) then begin
    if FileExists(iSound[f].SoundName) then
      sndPlaySound(iSound[f].SoundName, 0);
  end;
 
  if (sndCompOldProc <> nil) then
    sndCompOldProc(Sender);
end;
procedure AddItemSound(AIndex: Integer; AFilename: String);
var
  i: Integer;
begin
  i:= GetArrayLength(iSound);
  SetArrayLength(iSound, i+1);
  iSound[i].Index:= AIndex-1;
  iSound[i].SoundName:= ExpandConstant(AFilename);
  WizardForm.ComponentsList.ItemCaption[AIndex-1]:= WizardForm.ComponentsList.ItemCaption[AIndex-1] + ' '+#$266B;
end;
procedure InitializeWizard();
begin
  WizardForm.TypesCombo.Visible:=False;
  WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Width := ScaleX(417);
  sndCompOldProc:= WizardForm.ComponentsList.OnClick;
  WizardForm.ComponentsList.OnClick:= @PlaySound;
  ExtractTemporaryFile('sound1.wav');
  ExtractTemporaryFile('sound2.wav');
  AddItemSound(2, '{tmp}\sound1.wav');
  AddItemSound(3, '{tmp}\sound2.wav');
end;

Link to comment
Short link
Share on other sites

, в примере это лишнее, запутает ещё кого-то, и начнут подгонять форму под один компонентЛист.

  WizardForm.TypesCombo.Visible:=False;
  WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Width := ScaleX(417);
Link to comment
Short link
Share on other sites

 

, в примере это лишнее, запутает ещё кого-то, и начнут подгонять форму под один компонентЛист.

  WizardForm.TypesCombo.Visible:=False;
  WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Width := ScaleX(417);

я подумал что это и так ясно

Link to comment
Short link
Share on other sites

Source: "файлы модпака\шрифты\XVMSymbol_9.0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_9.0"; Components: KMP;

Source: "файлы модпака\шрифты\XVMSymbol_7.1_0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_7.1_0"; Components: KMP;

Source: "файлы модпака\шрифты\XVMSymbol_4.0.ttf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall; FontInstall: "XVMSymbol_4.0"; Components: KMP;

 

Это же вроде как один и тот же шрифт разных версий, можно оставить более новый и всё работать будет.

.... кстати последняя версия   XVMSymbol_10.0.ttf

А если он отключён (только занесение в реестр) и 5 кастомных страниц на борту? :heh:

Приходится крутиться. :ok:

И как успехи?

Edited by -zav-
Link to comment
Short link
Share on other sites

 

, в примере это лишнее, запутает ещё кого-то, и начнут подгонять форму под один компонентЛист.

  WizardForm.TypesCombo.Visible:=False;
  WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
  WizardForm.ComponentsList.Width := ScaleX(417);

Я понял что это лишнее :)

Спасибо огромное!!

Link to comment
Short link
Share on other sites

День добрый Уважаемые Форумчане!

Листая данный форум узнал много интересного и воплотил это в своей сборке. Огромная за инфу благодарность. Но у меня есть проблемма и я надеюсь Вы мне в этом поможете.

 

 

Прикрутив скин обнаружил что участок скрола пустой. Методом научного тыка добавил ScrollBar и он теперь отображается но от сюда и возникает проблемма

 

post-30748-0-54043100-1424004577_thumb.jpg

 

Этот самый скрол не работает. То-есть лицензия прокручивается а ползунок скрола на это не риагирует. Стоит как сувенир. Подскажите как привязать его к прокрутке. Заранее благодарен!

Link to comment
Short link
Share on other sites

Это значит на 7 к примеру надо компилить или на 8 инстал всё равно будет глючить?

Без разницы где будешь компилить - всё равно на 8 и 8.1 будут глюки. Советую присмотреться к VCL Styles for Inno Setup

  • Upvote 1
Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...