Inno Setup (создание инсталяционных пакетов). Часть 1

Статус
В этой теме нельзя размещать новые ответы.

LexBell

Борода
Супер модератор
VinTagE, И ту-же ошибку сюда даеш. RGNameLabel.Color:= clBlack; это зачем? попробуй запустить инсталл без стекла(что будет у половины пользователей).
Еще одна ошибка, про которую совсем недавно говорили:
RGNameLabel.Left:= 10;
RGNameLabel.Top:= 324;
RGNameLabel.Width:= 50;
RGNameLabel.Height:= 15;
А если у человека размерность стоит, например, 130% я думаю он будет очень счастлив :) Говорилось уже, координаты и размеры нужно писать через ScaleX(),ScaleY(), чтоб контролы не разъезжались по всему окну в разные стороны.
 
Последнее редактирование:

GVS276

Старожил
Проверенный
Gnom, Это только пример, а за совет: ScaleX(),ScaleY() - спасибо.

И ту-же ошибку сюда даеш. RGNameLabel.Color:= clBlack; это зачем? попробуй запустить инсталл без стекла(что будет у половины пользователей).
Ну на счёт RGNameLabel.Color:= clBlack; - это я учёл, я подумал если юзер использует твою библиотеку: dwmEnabled.dll - и сделает примерно
Код:
 var 
 RGNameLabel: TNewStaticText; 

 function GlassEnabled:Boolean;external 'GlassEnabled@files:dwmEnabled.dll stdcall';

 procedure iswin7_add_glass(Handle:HWND; Left, Top, Right, Bottom : Integer; GDIPLoadMode: boolean); external 'iswin7_add_glass@files:iswin7.dll stdcall'; 
 procedure iswin7_add_button(Handle:HWND); external 'iswin7_add_button@files:iswin7.dll stdcall'; 
 procedure iswin7_free; external 'iswin7_free@files:iswin7.dll stdcall'; 
 procedure RGNameSiteOnClick(Sender: TObject); var SiteCode: Integer; begin ShellExec('open', 'http://element-team.org/index.php', '', '', SW_SHOWNORMAL, ewNoWait, SiteCode); end;

procedure InitializeWizard();
begin
 RGNameLabel:= TNewStaticText.Create(WizardForm); 
 RGNameLabel.Left:= 10; 
 RGNameLabel.Top:= 324; 
 RGNameLabel.Width:= 50; 
 RGNameLabel.Height:= 15; 
 RGNameLabel.AutoSize:= True; 
 RGNameLabel.Font.Color:= $484848; 
 RGNameLabel.Font.Name:= 'Georgia'; 
 RGNameLabel.Font.Style:=[fsBold] 
 RGNameLabel.Font.Size:= 10; 
 RGNameLabel.Color:= clBlack; 
 RGNameLabel.Caption:= '[ R.G. Element Arts ]'+#13+#10+ 
 ' element-team.org'; 
 RGNameLabel.OnClick:=@RGNameSiteOnClick 
 RGNameLabel.Cursor:=crHand 
 RGNameLabel.Parent:= WizardForm; 

 iswin7_add_button(WizardForm.BackButton.Handle); 
 iswin7_add_button(WizardForm.NextButton.Handle); 
 iswin7_add_button(WizardForm.CancelButton.Handle); 
 iswin7_add_glass(WizardForm.Handle, 0, 0, 0, 47, False);

if GlassEnabled then RGNameLabel.Color:= clBlack else RGNameLabel.Color:= clNone;
end;

procedure DeinitializeSetup(); 
begin 
 iswin7_free; 
end;
[/SPOILER]
И если не будет найдено Aero, то цвет заднего фона текста, станет под цвет инсталлятора =)
 
Последнее редактирование:

AnalGin69

Мимокрокодил
Добрый день!Подскажите и научите Как сделать фоновую картинку не одним цветом,а чтобы была картинка из игры.Везде искал советы,но ни чего не нашёл.[/FONT]:(
 

shidow

Новичок
В твоем инсталляторе если перейти на страницу компонентов или доп. ПО и отметить там чекбоксы, перейти на следующую страницу а потом обратно то чекбоксы снова неактивные.:unknown: как то странно получается? (я же их отмечал следовательно они должны быть отмеченные)
хм.. попробую исправить, спасибо
хоть один из 27 ответил
 

LexBell

Борода
Супер модератор
И если не будет найдено Aero, то цвет заднего фона текста, станет под цвет инсталлятора =)
RGNameLabel.Color:= clBlack;
вообще не нужна. Цвет фона статиктекста меняется с цветом фона инсталлятора.
dwmEnabled актуальна только для вставки лого, чтоб смотрелось нормально и на стекле, и без стекла.
 

Avangard

Участник
Почему при загрузке картинки через fairy.dll инсталлятор разворачивается при старте? И как это исправить?
 

Edison007

Ветеран
Модератор
Возможно ли сделать средствами inno setup, что-то типо титров?
 

alexa1995

Участник
Нужно создать чекбокс (создал) но сделать ему условие если он не активен то не создаётся папка в меню "пуск" а если активен то создаётся. Долго думал, ничего не вышло.
 

AnalGin69

Мимокрокодил
Inno Setupe

Посмотрите скрипт,а то Inno Setup чули только матом не ругается.Что то я не то там сделал...:cry:

[hr] Скрипт, с нужными к нему файлами пакуеш в архив, архив заливаеш на любой бесплатный файлообменник. Никто не обязан разыскивать файлы, которые ты использовал в своем скрипте. Gnom.
 
Последнее редактирование:

LexBell

Борода
Супер модератор
alexa1995, Можно както так:
var
NewCheckBox1: TNewCheckBox;


procedure NewCheckBox1Click(Sender: TObject);
begin
NewCheckBox1.Checked:=not WizardForm.NoIconsCheck.Checked;
end;

procedure InitializeWizard();
begin
NewCheckBox1 := TNewCheckBox.Create(WizardForm);
with NewCheckBox1 do
begin
Parent := WizardForm.SelectProgramGroupPage;
Left := ScaleX(80);
Top := ScaleY(216);
Width := ScaleX(97);
Height := ScaleY(17);
OnClick := @NewCheckBox1Click;
end;
end;
 

Horna

Мимокрокодил
Здравствуйте!
В InnoSetup новичок, сильно не бейте. :)
Задача: необходимо сделать так, чтобы в зависимости от выбранного языка Мастера установки (многоязычный инсталлятор) выполнялась инсталляция определенных файлов.
Если можно приведите простенький пример. Я так понимаю, что нужно создать или считать значение переменной выбранного языка установки и в дальнейшем им оперировать во время работы инсталлятора. Но как это сделать, какие команды и где их использовать не могу взять в толк.
 

LexBell

Борода
Супер модератор
В InnoSetup новичок, сильно не бейте.
Задача: необходимо сделать так, чтобы в зависимости от выбранного языка Мастера установки (многоязычный инсталлятор) выполнялась инсталляция определенных файлов.
Пример:
[Languages]
Name: Russian; MessagesFile: compiler:\Languages\Russian.isl
Name: English; MessagesFile: compiler:\Languages\English.isl
[Files]
Source: файл для русского языка; DestDir: {app}; Languages: Russian
Source: Файл английского языка; DestDir: {app}; Languages: English
Предваряя подобные вопросы - точно так-же делается для компонентов и задач.
 

Horna

Мимокрокодил
Вот те на! Так просто оказывается! А я в переменные и константы полез.
Большое спасибо за подсказку!
С выбором компонентов для установки я разобрался. Там просто - добавил параметр Components: имя и все. А вот, что можно туда же добавить и параметр Languages: имя языка, пока нигде не встретил (правда, только два дня изучаю и пробую InnoSetup).
Сейчас застрял на шифровании инсталлятора. Что-то не хочет у меня работать приведенный пример:
...
[Setup]
...
Encryption=Yes
Password=7T34Ue(rrT
...
Код:
function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
if PageID = wpPassword then Result:= True; 
end;
...[/COLOR]
Я просто скопировал приведенные строки в свой скрипт и скомпилировал его. При запуске инсталлятора у меня сначала выбирается язык установки, затем я нажимаю "ОК" и выскакивает сообщение: "[I]Внутренняя ошибка: Cannot read an encrypted file before the key has been set.[/I]"
Понятно, что он [I]не может прочитать зашифрованный файл, т.к. нет ключа[/I], но почему не может? Если диалог выбора языка показывает, значит прочитал файл установки?! Или здесь другой механизм чтения данных файла?
Да, ладно, не буду вас отвлекать, попытаюсь сам разобраться. Примеров много, изучай-нехочу. Немного напрягает, что сразу не получается так как хочется: поскопировал разные участки кода с разных примеров, вставил свои файлы и... опа, все готово и работает - ан, ннееет.... не работает, а где собака порылась, одному богу известно. 
Что интересно, Inno существует уже давно, но до сих пор не сделали нормального конструктора инсталляторов со всеми придуманными наворотами (музыка, слайдшоу и т.д. и т.п.). В итоге, новичку каждый раз приходится изобретать велосипед.
Простите за философию, больше не буду. Извините, если что не так.
 
Последнее редактирование:

DeKaN

Новичок
Horna,
всем файлам, которые используются инсталлятором (библиотеки, фон) надо проставить
Код:
Flags: noencryption
 

Winst@n

Участник
Проверенный
Возник такой вопрос, можно ли сделать доп. форму Form1 по верх основной формы WizardForm
Вариант Form1.BringToFront не предлагать. Не работает.
 
Последнее редактирование:

LexBell

Борода
Супер модератор
Возник такой вопрос, можно ли сделать доп. форму Form1 по верх основной формы WizardForm
Можно. Только кнопки придется переносить - недоступны становятся.
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

Код:
var Form1:Tsetupform;
procedure InitializeWizard();
begin
Form1:=CreateCustomForm;
[B]Form1.Parent:=WizardForm;[/B]
Form1.SetBounds(0,0,WizardForm.Width,WizardForm.Height);
Form1.Show;
end;[/SPOILER] Как всегда, все удивительно просто :)
 

AlexandR

Новичок
Помогите по этим вопросам....,
1)Нужен кусок скрипта где заменяются стандартные кнопки на свои(с четырмя видами состояния) ,чтобы только в скрипте было нужна картинка не в bmp, а в png формате;
2)Как поменять расположение кнопок (далее,назад,отмена)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху