Jump to content
Korean Random

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


Recommended Posts

Чет не получается,наверное опять с процедурами косяк!

Разжуй как с ними бороться?

Разжёвывал уже и не раз.

Скинь всю свою процедуру InitializeWizard.

Link to comment
Short link
Share on other sites

 

 

Скинь всю свою процедуру InitializeWizard.

не знаю то ли это?

'Это на кнопке'

procedure InitializeWizard();

var
BtnPanel: TPanel;
BtnImage: TBitmapImage;
//--------// Кнопки [Начало] //--------//
begin
begin
ExtractTemporaryFile('Лого.bmp')

BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=10
Top:=85
Width:=78
Height:=43
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm.FinishedPage;
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Лого.bmp')
Parent:=BtnPanel
end
end;

 

'и ещё вот'

RedesignWizardForm;

//--------// Показ картинок и описания [Начало] //--------//
begin
WizardForm.SelectComponentsLabel.Hide;
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(18), ScaleY(6), ScaleX(455), ScaleY(370));
WizardForm.ComponentsList.Font.Name:='Tahoma'; //Шрифт
WizardForm.ComponentsList.Font.Color:= clwhite; //Цвет шрифта
WizardForm.ComponentsList.Font.Size:= 9 //Размер шрифта
WizardForm.ComponentsList.Font.Style := [fsBold]; //Стиль шрифта
WizardForm.ComponentsList.Color:= $ffffffff; //Цвет заливки окно компонентов
WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;


// Окно на странице "Итоги"
WizardForm.ReadyMemo.Font.Name:='Tahoma'; //Шрифт
WizardForm.ReadyMemo.Font.Color:= clwhite; //Цвет шрифта
WizardForm.ReadyMemo.Font.Size:= 10 //Размер шрифта
WizardForm.ReadyMemo.Font.Style := [fsBold]; //Стиль шрифта
WizardForm.ReadyMemo.Color:= $ffffffff; //Цвет заливки окно компонентов

CompDescImgPanel := TPanel.Create(WizardForm); //Окно показа изображений
with CompDescImgPanel do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(480), ScaleY(6), ScaleX(400), ScaleY(263));
Color:= $ffffffff; //Цвет заливки окно компонентов
BevelInner := bvLowered;
end;

BitmapImage := TBitmapImage.Create(WizardForm);
with BitmapImage do
begin
Parent := CompDescImgPanel;
SetBounds(ScaleX(1), ScaleY(1), CompDescImgPanel.Width - ScaleX(3), CompDescImgPanel.Height - ScaleY(3));
ExtractTemporaryFile('CompDescImgMods1.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\CompDescImgMods1.bmp'));
end;

CompDescImg := TBitmapImage.Create(WizardForm);
with CompDescImg do
begin
Parent := CompDescImgPanel;
SetBounds(ScaleX(1), ScaleY(1), CompDescImgPanel.Width - ScaleX(3), CompDescImgPanel.Height - ScaleY(3));
Stretch := True;
Hide;
end;

CompDescPanel := TPanel.Create(WizardForm); //Окно показа описания
with CompDescPanel do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(480), ScaleY(276), ScaleX(400), ScaleY(100));
Font.Name:='Tahoma'; //Шрифт
Font.Color:= clwhite; //Цвет шрифта
Font.Size:= 8 //Размер шрифта
Font.Style := [fsBold]; //Стиль шрифта
Color:= $ffffffff; //Цвет заливки окно компонентов
BevelInner := bvLowered;
end;

CompDescText := TLabel.Create(WizardForm);
with CompDescText do
begin
Parent := CompDescPanel;
SetBounds(ScaleX(1), ScaleY(1), CompDescPanel.Width - ScaleX(3), CompDescPanel.Height - ScaleY(3));
AutoSize := False;
WordWrap := True;
Enabled := False;
Caption := CustomMessage('ComponentsInfo');
end;

AddCompDescription(0, CustomMessage('CompDescMods'), 'CompDescImgmods1.bmp');
AddCompDescription(1, CustomMessage('CompDescMods'), 'CompDescImgmods.bmp');
AddCompDescription(2, CustomMessage('CompDescMods1'), 'CompDescImgmods2.bmp');

AddCompDescription(4, CustomMessage('CompDescA1'), 'CompDescImgA1.bmp');
AddCompDescription(5, CustomMessage('CompDescA2'), 'CompDescImgA2.bmp');
AddCompDescription(6, CustomMessage('CompDescA3'), 'CompDescImgA3.bmp');
AddCompDescription(7, CustomMessage('CompDescA4'), 'CompDescImgA4.bmp');
AddCompDescription(8, CustomMessage('CompDescA5'), 'CompDescImgA5.bmp');
AddCompDescription(9, CustomMessage('CompDescA6'), 'CompDescImgA6.bmp');
AddCompDescription(10, CustomMessage('CompDescA7'),'CompDescImgA7.bmp');
AddCompDescription(11, CustomMessage('CompDescA8'),'CompDescImgA8.bmp');


AddCompDescription(12, CustomMessage('CompDescAr1'),'CompDescImgAr1.bmp');
AddCompDescription(13, CustomMessage('CompDescAr2'),'CompDescImgAr2.bmp');
AddCompDescription(14, CustomMessage('CompDescAr3'),'CompDescImgAr3.bmp');

AddCompDescription(26, CustomMessage('CompDescI1'), 'CompDescImgI1.bmp');
AddCompDescription(27, CustomMessage('CompDescI2'), 'CompDescImgI2.bmp');
AddCompDescription(28, CustomMessage('CompDescI3'), 'CompDescImgI3.bmp');

AddCompDescription(30, CustomMessage('CompDescDI1'), 'CompDescImgDI1.bmp');
AddCompDescription(31, CustomMessage('CompDescDI2'), 'CompDescImgDI2.bmp');
AddCompDescription(32, CustomMessage('CompDescDI3'), 'CompDescImgDI3.bmp');

AddCompDescription(34, CustomMessage('CompDescP1'), 'CompDescImgP1.bmp');
AddCompDescription(35, CustomMessage('CompDescP2'), 'CompDescImgP2.bmp');
AddCompDescription(36, CustomMessage('CompDescP3'), 'CompDescImgP3.bmp');

AddCompDescription(38, CustomMessage('CompDescPR1'), 'CompDescImgPR1.bmp');
AddCompDescription(39, CustomMessage('CompDescPR2'), 'CompDescImgPR2.bmp');
AddCompDescription(40, CustomMessage('CompDescPR3'), 'CompDescImgPR3.bmp');

AddCompDescription(41, CustomMessage('CompDescPmod'), 'CompDescImgPmod.bmp');
AddCompDescription(42, CustomMessage('CompDescPmod1'), 'CompDescImgPmod1.bmp');
AddCompDescription(43, CustomMessage('CompDescPmod2'), 'CompDescImgPmod2.bmp');
AddCompDescription(44, CustomMessage('CompDescPmod3'), 'CompDescImgPmod3.bmp');
AddCompDescription(45, CustomMessage('CompDescPmod4'), 'CompDescImgPmod4.bmp');
AddCompDescription(46, CustomMessage('CompDescPmod5'), 'CompDescImgPmod5.bmp');
AddCompDescription(47, CustomMessage('CompDescPmod6'), 'CompDescImgPmod6.bmp');

AddCompDescription(48, CustomMessage('CompDescPmod6'), 'CompDescImgPmod6.bmp');
AddCompDescription(49, CustomMessage('CompDescPmod7'), 'CompDescImgPmod7.bmp');
AddCompDescription(50, CustomMessage('CompDescPmod8'), 'CompDescImgPmod8.bmp');
AddCompDescription(51, CustomMessage('CompDescmod1'), 'CompDescImgmod1.bmp');
AddCompDescription(52, CustomMessage('CompDescmod2'), 'CompDescImgmod2.bmp');

AddCompDescription(53, CustomMessage('CompDescclok'), 'CompDescImgclok.bmp');
AddCompDescription(54, CustomMessage('CompDescclok1'), 'CompDescImgclok1.bmp');
AddCompDescription(55, CustomMessage('CompDescclok2'), 'CompDescImgclok2.bmp');

end;

InitializeWizard1();
end;
Link to comment
Short link
Share on other sites

не знаю то ли это?

Вот так:

'код'

[Code]
var
  FilesMemo: TNewMemo;

procedure AddToMemo();
var
  AFile: String;
begin
  AFile := ExpandConstant(CurrentFilename);
  if ExtractFileExt(AFile) = '' then
    FilesMemo.Lines.Add('CreateFolder: ' + RemoveBackslash(AFile))
  else
    FilesMemo.Lines.Add('Extract: ' + AFile);
end;

procedure InitializeWizard();
var
BtnPanel: TPanel;
BtnImage: TBitmapImage;
begin
begin
ExtractTemporaryFile('Лого.bmp')

BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=10
Top:=85
Width:=78
Height:=43
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm.FinishedPage;
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Лого.bmp')
Parent:=BtnPanel
end

 FilesMemo := TNewMemo.Create(WizardForm);
  FilesMemo.SetBounds(ScaleX(0), ScaleY(80), ScaleX(418), ScaleY(120));
  FilesMemo.WordWrap := False;
  FilesMemo.Parent := WizardForm.InstallingPage;
  FilesMemo.ScrollBars := ssVertical;
  FilesMemo.ReadOnly := True;
  FilesMemo.Clear;

end;

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Вот так:

'код'

[code]
var
  FilesMemo: TNewMemo;

procedure AddToMemo();
var
  AFile: String;
begin
  AFile := ExpandConstant(CurrentFilename);
  if ExtractFileExt(AFile) = '' then
    FilesMemo.Lines.Add('CreateFolder: ' + RemoveBackslash(AFile))
  else
    FilesMemo.Lines.Add('Extract: ' + AFile);
end;

procedure InitializeWizard();
var
BtnPanel: TPanel;
BtnImage: TBitmapImage;
begin
begin
ExtractTemporaryFile('Лого.bmp')

BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=10
Top:=85
Width:=78
Height:=43
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm.FinishedPage;
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Лого.bmp')
Parent:=BtnPanel
end

 FilesMemo := TNewMemo.Create(WizardForm);
  FilesMemo.SetBounds(ScaleX(0), ScaleY(80), ScaleX(418), ScaleY(120));
  FilesMemo.WordWrap := False;
  FilesMemo.Parent := WizardForm.InstallingPage;
  FilesMemo.ScrollBars := ssVertical;
  FilesMemo.ReadOnly := True;
  FilesMemo.Clear;

end;

вот что получилось

post-19655-0-97907100-1407691866_thumb.png

Link to comment
Short link
Share on other sites

а как сделать чтобы инстал можно было ставить на win8

а то почему мой не поддерживает 

Когда вы уже сами введёте себе в привычку прикреплять скрины, без просьб других.

Link to comment
Short link
Share on other sites

вот что получилось

Скажу так, то, что тебе нужно, можно сделать в юникод версии инно, но она более требовательная к синтаксису кода, и рукам, поэтому или или переходи, или думай, так как у большинства тут анси версия, на которой я подобного не видел чтобы легко делали, есть фича, но там ухитриться надо, а этим делиться врядли просто так захотят.

Link to comment
Short link
Share on other sites

 

 

Скажу так, то, что тебе нужно, можно сделать в юникод версии инно, но она более требовательная к синтаксису кода, и рукам, поэтому или или переходи, или думай, так как у большинства тут анси версия, на которой я подобного не видел чтобы легко делали, есть фича, но там ухитриться надо, а этим делиться врядли просто так захотят.

на сколько сложней  юникод?Что значит требовательная к синтаксису кода?И если можно выложите кусок кода написаный в разных версиях инно? 

Link to comment
Short link
Share on other sites

на сколько сложней  юникод?Что значит требовательная к синтаксису кода?И если можно выложите кусок кода написаный в разных версиях инно? 

Код на вид не отличается, но в анси версии допустив мелкую ошибку вы не всегда об этом узнаете, так как инсталл возможно даже так заработает, а вот юникод вам этого не простит.

Link to comment
Short link
Share on other sites

Вам инно сама ответила: У неё нет такого, попробуйте поискать в справке какая бредятина отвечает за то, что и та на ошибке:) И просто замените на новый вариант.

Edited by Darksoul
Link to comment
Short link
Share on other sites

Ну вот к примеру попробывал свой код в юникоде компильнуть  выдал ошибку сразу,что здесь не так?

Во-первых, нужна расширенная версия компилятора.

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

ANSI vs UNICODE

-------------------------------------------------------------------------------------

 

Кодировка символов

 
Текст - это набор смысловых символов, которые при записи заменяются значками или изображениями. Например изображение 1 - это арабская цифра, означающая единицу, а вот такое изображение X - имеет несколько значений, это и римская цифра десять и заглавная буква экс из алфавита англ. языка и т.д.
 
Все печатные изображения символов хранятся в соот. таблицах. Например, есть таблица из 128 печатных символов, которая содержит арабские цифры, буквы англ. алфавита и еще десяток символов, которые мы с вами знаем как синтаксические, управляющие и служебные символы - эта таблица называется, таблица кодировки символов UN-ASCII или упрощенная ASCII.
 
Так как в каждой стране юзают свой язык, то эту таблицу решили расширить и добавили еще 128 ячеек, куда можно вписать еще 128 символов национального языка. Получилась таблица ASCII или расширенная ASCII. Однако, языков то много разных и чтобы каждый разработчик ПО не создавал себе таблицу какая ему вздумается, был придуман стандарт ANSI, который устанавливал правила составления ASCII таблиц для разных языков. В результате на свет появились тысячи таблиц, составленных по единым правилам. Вот например, для русского языка такая таблица называется Windows-1251 (есть и другие таблицы для русского языка, например KOI8-R там те же символы, но записаны они по другим правилам).
 
 
Ну а потом, когда стали переводить в таблицы языки с большим число символов, поняли что 256 ячеек не всякому языку хватит. И решили, что идея с таблицами - была не удачной и надо делать единый реестр графических изображений - это и есть Юникодовая таблица, она безразмерная и все печатные символы, которые в мире юзаются в ней есть. А если нужно ввести в оборот новый символов, то её просто расширяют дальше и дальше.
 

Поддержка кодировок в программах

 
Как кодировки сказываются на пользователе. На компе любой текст храниться только в виде кодов символов из кодировочной таблицы. Если при записи текста на диск использовалась Windows-1251 таблица, то все символы будут иметь коды от 0 до 255 из этой таблицы. Программа, которая ни чего не знает об юникоде, кодирует по умолчанию текст всегда через текущую локальную таблицу символов. Если у вас стоит русская винда, т.е. с русской локализацией, то значит локальной таблицей символов будет Windows-1251.
 
Берем русский текст сохраняем в файл в такой программе и переносим файл на комп, где локализация например немецкая, как вы думаете что мы увидим открыв этот файл? А вот чего, так как локализация немецкая, то значит по умолчанию в винде юзается локальная таблица символов Windows-1252 (или -1250 я не помню), в которой в последних 128 ячейках вместо русских символов нарисованы символы из немецкого алфавита. Вот их вы и увидите в своем тексте.
 
Отсюда получается, что если я сохранил текст через кодировку А и этот текст содержит только символы из UN-ASCII, то открыв его через любую другую ANSI таблицу я увижу его таким же как и у себя. А вот если я беру текст с национальными символами и сохраняю чего через кодировку А, то и открывать его можно будет только через неё. Если открою через кодировку B, то увижу совсем другие символы.
 
А теперь, пусть у меня есть инсталлятор, который я сделал в ANSI-версии Inno. Это значит что все названия, слова, надписи, тексты были записаны в файл в локальной кодировке моей системы. Если у вас весь интерфейс в инсталляторе - на английском, то и фиг с этими кодировками... на любом другом компе все ваши надписи при запуске программы будут отлично читаться. А вот если у вас нтерфейс сделан на русском - то пиши пропало. Скачает немец, француз, китаец или любой другой юзвер, у которого в винде не стоит русской локализации ваш инсталлятор, и он вместо русских символов при запуске программы увидит абракадабру. Мало того если у него в системе не будет шрифта для этой абрыкадабры и даже её не увидит, а будут у него просто вопросики рисоваться ??????? или квадратики. Именно это в большинстве случаев и происходит.
 
Ну, а если взять Юникод-версию Inno. Думаю уже легко догадаться, что в этом случае в вашем инсталляторе все символы в интерфейсе будут закодированы через универсальную юникод-таблицу. И в любой винде, где такая таблица поддерживается и соот. есть универсальные шрифты для неё - это XP, Vista, 7, 8, при запуске вашего инсталлятора текст в нем будет отображаться так же как и на вашем компутере, не зависимо от того какая там локализация винды и какая там локальная таблица кодировки стоит по умолчанию у юзвера.



 

Ну вот к примеру попробывал свой код в юникоде компильнуть  выдал ошибку сразу,что здесь не так?


В новой версии инно класса TItemArea похоже нет. Вот и пишет, что не понимает что это за тип такой. Похоже его заменили на какой-то другой. Юникод и кодировки тут не причем.
Edited by StranikS_Scan
  • Upvote 1
Link to comment
Short link
Share on other sites

@Ekspoint, когда-то игрался сней) Но в свет инстальник так и не вышел, решил, что это бесполезность.

Вообще, в шапке темы, под последним спойлером, есть куча примеров от меня. Скачай и найди там папку TrayIconCtrl. Дальше уже разберёшься, надеюсь.

Edited by Kotyarko_O
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...