Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: sjwrec
Дата сообщения: 06.08.2013 20:35
Dark_Delphin
Пробывал переместить код работы библиотеки в конец процедуры Initialize Wizard. Инстал стал прозрачным как надо, но сам инсталл при этом в центре чёрный. Тоже не могу понять что с этим скриптом.
Автор: Gnom3
Дата сообщения: 06.08.2013 21:18

Цитата:
но сам инсталл при этом в центре чёрный.

так и должно быть, просто обычно поверх Wizardform лежит OuterNotebook и прикрывает эту черноту. А здесь OuterNotebook скрыта. так что все в порядке, так и должно быть.
Цитата:
В самой проге я вируса не наблюдал.

Его нет. Я говорю о том, что инсталл проявляет характерные признаки вируса - он втихушку запускает программы да еще и лезет в нее-же за данными.

Цитата:
Дело в том что это нужно чтобы не дать инсталлу возможности установить игру в систему, в которой видеокарта не поддерживает DX11

завтра займусь, на этой неделе сделаю. Но боюсь, что на ХР невозможно будет определить поддержку видеокартой 10 и 11 директа а на висте 11-го.
Автор: sjwrec
Дата сообщения: 06.08.2013 22:05

Цитата:
завтра займусь, на этой неделе сделаю. Но боюсь, что на ХР невозможно будет определить поддержку видеокартой 10 и 11 директа а на висте 11-го.


Это замечательно. Буду ждать. XP мне и не надо, А Vista уже давно выкинул как не доработанную ОС. Интересует только 7-ка.

Да кстати вот ещё что. Запускал DXDIAG на странице Экран заинтересовало вот что:



У меня видеокарта DX10. Это случайно не DX версия?
Автор: yuwik
Дата сообщения: 06.08.2013 22:09
Подскажите, как добавить кнопочку "Включение и выключение музыки" на бордюре вверху рядом с крестиком
Автор: Dark_Delphin
Дата сообщения: 07.08.2013 00:02
Подскажите, пожалуйста, как добавить DirEdit на стекло (ну чтоб без дыр.)?
Я пробовал так:


Код: iswin7_add_button(WizardForm.DirEdit.Handle);
Автор: trolltmn
Дата сообщения: 07.08.2013 08:11
Gnom3
как реализовать окно инсталлятора поверх остальных окон? найденные примеры не получаются, кроме с кнопкой stayonTop, но она перекрывает у меня кликабельную ссылку. Можно ли обойтись без данной кнопки?

И совсем забыл. Можно ли средствами inno реализовать удаление содержимого "{app}\*.*", перед началом установки, желательно с информационным сообщением типа "в папке {app} были обнаружены файлы, подождите она очищается"?

Заранее спасибо
Автор: sjwrec
Дата сообщения: 07.08.2013 09:58
trolltmn

Цитата:
кроме с кнопкой stayonTop, но она перекрывает у меня кликабельную ссылку. Можно ли обойтись без данной кнопки?


Можно сместить кнопку куда Вам угодно. Можно кнопку совсем удалить если не нужна.

Пример. Без кнопки.
[more]
//Пусть скажем кнопка при нажатии вызывает
procedure StayOnClick(Sender: TObject);
// Меняем эту процедуру в такой вид
procedure StayOnTop();

procedure Initialize Wizard();
begin
// Удаляем все строки которые были нужны для создания кнопки
// и вместо них вставляем это
StayOnTop();
end;
[/more]

Добавлено:

Цитата:
Можно ли средствами inno реализовать удаление содержимого "{app}\*.*", перед началом установки, желательно с информационным сообщением типа "в папке {app} были обнаружены файлы, подождите она очищается"?


Можно но это не безопасно. Так как не опытный пользователь может выбрать например в качестве {APP} папку Windows, дальнейшие последствия думаю вы поняли.

Можно такое сделать на странице Выбор папки для установки. Функция будет срабатывать при нажатии на кнопку далее.
[more]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if CurPageID=wpSelectDir then
begin

// Здесь нужна проверка - есть ли файлы в папке. Но я его ещё ищу. Извините.

case MsgBox('В папке '+ExpandConstant("{app}")+' были обнаружены файлы, Хотите удалить их?', mbError, MB_YESNO)
of IDYES:
begin
DelTree(ExpandConstant('{app}')+'\*.*', True, True, True) // Очень опасная комманда удаления
end
else
begin

end;
end;
end;
end;
end;
[/more]
Автор: Gnom3
Дата сообщения: 07.08.2013 11:27

Цитата:
Подскажите, пожалуйста, как добавить DirEdit на стекло

выпросить исходники и описать реализацию эдита.
Цитата:
Но никаких изменений...
естественно, эдит - не кнопка.
Цитата:
как реализовать окно инсталлятора поверх остальных окон?
поиск по форуму очень быстро дал решение:Inno Setup (создание инсталяционных пакетов) Только я-бы не советовал. Большинству не понравится, что вместо того, что-бы заниматься своими делами во время установки, они вынуждены будут лицезреть твой инсталл. и минимум половина после этого откажутся от сборок с твоим инсталлятором.
Цитата:
Можно ли средствами inno реализовать удаление содержимого "{app}\*.*"

Справка. Секция [InstallDelete]
Автор: trolltmn
Дата сообщения: 07.08.2013 11:55

Цитата:
Можно но это не безопасно. Так как не опытный пользователь может выбрать например в качестве {APP} папку Windows, дальнейшие последствия думаю вы поняли.


у меня путь {APP} берется из реестра, но даже в моем случае это не спасет от приведенного вами примера, только если запретить изменять путь каким либо образом, вопрос только в том как это реализовать в чем не силен в том не силен

Добавлено:

Цитата:
и минимум половина после этого откажутся от сборок с твоим инсталлятором.


реализация нужна для того что бы победить окно выскакивающее после установки библиотек Dokan, авто посчитал что пользователь должен обязательно увидеть содержимое установленного каталога, и на небольших разрешениях, оно перекрывает окно инсталлятора. А каким образом можно закрыть это окно через Inno не на щел. Не рубить жe процесс explorer eй богу
Автор: Gnom3
Дата сообщения: 07.08.2013 15:07

Цитата:
А каким образом можно закрыть это окно через Inno не на щел.

Поиграться с ключами установки? даже если нет, то папку все равно нужно будет закрывать - не оставляешь-же открытым окно папки навсегда? Поэтому ничего и не нужно побеждать. На худой конец, отследи регшотом изменения в файловой системе и реестре при установке Dokan и вшей ее в свой инсталл.
Автор: Black_Ghost
Дата сообщения: 07.08.2013 16:22
sjwrec
Жаль, что у модульного скрипта v6.1 , какое-то кривоватое оформление, у v6.0 оно было куда лучше...
Автор: Dark_Delphin
Дата сообщения: 07.08.2013 19:27
Как поле сделать пустым?
DefaultDirName={pf}
Автор: sjwrec
Дата сообщения: 07.08.2013 21:29
Black_Ghost

Цитата:
Жаль, что у  модульного скрипта v6.1 , какое-то кривоватое оформление, у  v6.0 оно было куда лучше...

Что именно Вам не понравилось в оформлении? Напишите в ЛС.

Добавлено:
Gnom3
Я на 7-ке запускал DXDIAG на странице Экран заинтересовало вот что:



У меня видеокарта DX10. Это случайно не DX версия?


Добавлено:
Dark_Delphin

Цитата:
Как поле сделать пустым?  DefaultDirName={pf}

Интересно, а для чего это нужно?

Можно так:

Код:
WizardForm.DirEdit.Text:='';
Автор: trolltmn
Дата сообщения: 08.08.2013 11:04
я снова к вам, не могу найти толковую информацию по следующему вопросу.

Можно ли увеличить размер рабочей области?

как увеличить размер окна я нашел:


Код:
procedure InitializeWizard();
begin
WizardForm.ClientWidth:=ScaleX(790); ширина
WizardForm.ClientHeight:=ScaleY(533); высота
WizardForm.Center; установшик будет стоят по центру
end;
Автор: nik1967
Дата сообщения: 08.08.2013 12:55
trolltmn, как вариант

Код: with WizardForm.OuterNotebook do
begin
Width := ScaleX(790);
Height := ScaleY(500);
end;
with WizardForm.InnerNotebook do
begin
Width := ScaleX(790);
Height := ScaleY(500);
end;
Автор: Dark_Delphin
Дата сообщения: 08.08.2013 15:10
А кто знает как можно исправить проблему:
ХР совсем не отображает кнопки.
А в 7 нормально все.

Исходник. http://rghost.ru/47978050
Автор: trolltmn
Дата сообщения: 08.08.2013 16:32

Цитата:
попробуй.


Спс. Получилось но не без плясок с бубном. На текущем этапе изучаю Botva2, оказалось без него никак.

Вопрос на засыпку. За весь день ковыряния уже голова плывет от Inno, вполне возможно что уже туплю, но все же.

Добавил на CustomPage компоненты Checkbox:


Код:
////////////////////// SelectComponentDirPage //////////////////////

SelectComponentsLabel := TLabel.Create(WizardForm);
with SelectComponentsLabel do begin
WizardForm.SelectComponentsLabel.Left:= ScaleX(310)
WizardForm.SelectComponentsLabel.Top:= ScaleY(160);
WizardForm.SelectComponentsLabel.Width:= ScaleX(450)
WizardForm.SelectComponentsLabel.Height:= ScaleY(152)
WizardForm.SelectComponentsLabel.Font.Name:= 'Georgia';
WizardForm.SelectComponentsLabel.Font.Size:= 8;
WizardForm.SelectComponentsLabel.Font.Color:=$FFFFFF;
WizardForm.SelectComponentsLabel.Font.Style:=[fsBold, fsItalic];
WizardForm.SelectComponentsLabel.Parent := WizardForm;
WizardForm.SelectComponentsLabel.Color:= $FFFFFF;
end;

ComponentsList := TLabel.Create(WizardForm);
with ComponentsList do begin
WizardForm.ComponentsList.Left:= ScaleX(310)
WizardForm.ComponentsList.Top:= ScaleY(220);
WizardForm.ComponentsList.Width:= ScaleX(450)
WizardForm.ComponentsList.Height:= ScaleY(152)
WizardForm.ComponentsList.Font.Name:= 'Georgia';
WizardForm.ComponentsList.Font.Size:= 8;
WizardForm.ComponentsList.Font.Color:=$FFFFFF;
WizardForm.ComponentsList.Font.Style:=[fsBold, fsItalic];
WizardForm.ComponentsList.Parent := WizardForm;
WizardForm.ComponentsList.Color:= $FFFFFF;
end;

ComponentsDiskSpaceLabel := TLabel.Create(WizardForm);
with ComponentsDiskSpaceLabel do begin
WizardForm.ComponentsDiskSpaceLabel.Left:= ScaleX(310)
WizardForm.ComponentsDiskSpaceLabel.Top:= ScaleY(290);
WizardForm.ComponentsDiskSpaceLabel.Width:= ScaleX(450)
WizardForm.ComponentsDiskSpaceLabel.Height:= ScaleY(152)
WizardForm.ComponentsDiskSpaceLabel.Font.Name:= 'Georgia';
WizardForm.ComponentsDiskSpaceLabel.Font.Size:= 8;
WizardForm.ComponentsDiskSpaceLabel.Font.Color:=$FFFFFF;
WizardForm.ComponentsDiskSpaceLabel.Font.Style:=[fsBold, fsItalic];
WizardForm.ComponentsDiskSpaceLabel.Parent := WizardForm;
WizardForm.ComponentsDiskSpaceLabel.Color:= $FFFFFF;
end;
////////////////////// SelectComponentDirPage //////////////////////
Автор: sjwrec
Дата сообщения: 08.08.2013 20:09
trolltmn

[more=Ваш исправленный код]
////////////////////// SelectComponentDirPage //////////////////////

SelectComponentsLabel := TLabel.Create(WizardForm);
with SelectComponentsLabel do begin
Left:= ScaleX(310)
Top:= ScaleY(160);
Width:= ScaleX(450)
Height:= ScaleY(152)
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=clWhite;
Font.Style:=[fsBold, fsItalic];
Parent := WizardForm;
Transparent:=True;
end;

ComponentsList := TLabel.Create(WizardForm);
with ComponentsList do begin
Left:= ScaleX(310)
Top:= ScaleY(220);
Width:= ScaleX(450)
Height:= ScaleY(152)
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=clWhite;
Font.Style:=[fsBold, fsItalic];
Parent := WizardForm;
Transparent:=True;
end;

ComponentsDiskSpaceLabel := TLabel.Create(WizardForm);
with ComponentsDiskSpaceLabel do begin
Left:= ScaleX(310)
Top:= ScaleY(290);
Width:= ScaleX(450)
Height:= ScaleY(152)
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=clWhite;
Font.Style:=[fsBold, fsItalic];
Parent := WizardForm;
Transparent:=True;
end;
////////////////////// SelectComponentDirPage //////////////////////
[/more]
Автор: trolltmn
Дата сообщения: 08.08.2013 20:17

Цитата:
Ваш исправленный код


факир был пьян и фокус не удался. компоненты совсем исчезли со страницы.

пытался сделать аналогичным способом, стоит убрать WizardForm.имя_компонента.* как исчезают со страницы.

видимо волшебство, или моя криворукость.
Автор: sjwrec
Дата сообщения: 08.08.2013 20:26
AlexM2222

Цитата:
1. Из файла Settings.reg - В систему с помощью InnoSetup...


[more=Например так]
[_code]
var
ResultCode: Integer;

procedure Initialize Wizard();
begin

Exec(ExpandConstant('{win}\regedit.exe'), 'ExpandConstant('{src}')+'\Settings.reg /s', '', SW_HIDE, ewNoWait, ResultCode);
end;
[/more]


Добавлено:
trolltmn

Цитата:
стоит убрать  WizardForm.имя_компонента.* как исчезают со страницы.   видимо волшебство, или моя криворукость.

Нет скорее всего это из-за полного совпадения с оригинальными названиями WizardForm.
Попробуйте поменять например на строки такого вида:

Код:
var
SelectComponentsLbl: TLabel;

SelectComponentsLbl := TLabel.Create(WizardForm);
with SelectComponentsLbl do begin
Автор: nik1967
Дата сообщения: 08.08.2013 20:35
trolltmn, выложи скрипт, может кто и исправит. А на вскидку - родителем укажи не WizardForm, а созданную страницу.
Автор: trolltmn
Дата сообщения: 09.08.2013 06:48

Цитата:
Нет скорее всего это из-за полного совпадения с оригинальными названиями WizardForm.
Попробуйте поменять например на строки такого вида:


ларчик просто открывался. После установки винды установил стандартный комплект inno. С утра поставил расширенный от innoultra и полетела родимая.

Еще вопросик шкурный. А можно ли защитить инсталлятор от декомпиляции?
Автор: sjwrec
Дата сообщения: 09.08.2013 12:15
trolltmn

Цитата:
А можно ли защитить инсталлятор от декомпиляции?


Расширенную версию 5.5.1 не открыть innounpack-ом, сам пробывал, без результата.

Если знаете такой софт для вскрытия, пожалуйста поделитесь в ЛС.
Автор: Mailchik
Дата сообщения: 10.08.2013 20:02
999Kay666

Цитата:
Люди, скажите как закомментировать/раскомментировать кусок(несколько строк сразу) кода

Выделяете нужный кусок и нажимаете "/".
Автор: SotM
Дата сообщения: 10.08.2013 22:50

Цитата:
Выделяете нужный кусок и нажимаете "/".

Неверно. Текст затрётся и останется символ "/".
Автор: BUU
Дата сообщения: 11.08.2013 08:41
Подскажите откуда эта фигня взялась вместо лого? весь код перерыл нашел решения, рисунки в порядке,

Заранее спс
Автор: insombia
Дата сообщения: 11.08.2013 09:54
BUU
скрипт может покажешь?
Автор: BUU
Дата сообщения: 11.08.2013 10:11
insombia
http://rghost.ru/48041556 вот
Автор: insombia
Дата сообщения: 11.08.2013 10:36
BUU файлы не помешали бы
Автор: BUU
Дата сообщения: 11.08.2013 10:46
insombia
http://rghost.ru/48041981

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.