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

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

Автор: JKSerGEAnt
Дата сообщения: 30.10.2012 22:30
Обалдеть, какой глюк нашел. Если установить Office 2013 и созданный им rtf скормить инсталлятору, то он будет показывать нам вместо шрифта Cambria/Calibri шрифт Times New Roman.

Автор: Alexerm
Дата сообщения: 01.11.2012 08:45
Ссылка на "Inno Setup Scripting 5.1 - Руководство по расширенным возможностям Inno Setup от Kindly" "умерла"
Извините, хотел сюда написать: http://forum.ru-board.com/topic.cgi?forum=5&topic=36421&start=0&limit=1&m=3#1
Автор: Andrey128
Дата сообщения: 01.11.2012 10:38
Genri

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

Спасибо на наводку!
Вот только руки дошли до обрезания.
Решил, что конечных нулей может быть не более 3 (1.0.0.0), ну и тупо сделал так:

Код: #define TrimVersion(str Text) \
(Copy(Text, RPos('.', Text), 2) == '.0') ? Text = Copy(Text, 1, RPos('.', Text)-1) : Text, \
(Copy(Text, RPos('.', Text), 2) == '.0') ? Text = Copy(Text, 1, RPos('.', Text)-1) : Text, \
(Copy(Text, RPos('.', Text), 2) == '.0') ? Text = Copy(Text, 1, RPos('.', Text)-1) : Text
#define AppVersion TrimVersion(GetFileVersion("MyApp.exe"))
Автор: Genri
Дата сообщения: 01.11.2012 14:46
Andrey128 -- а если потребуется задать версию: 3.01.40.0 ?
И не совсем понял, что здесь делает GetFileVersion("MyApp.exe")? Чтобы использовать GetFileVersion, нужно знать имя файла. Но именно имя мы и пытаемся получить. Оно явно будет не MyApp.exe, а с версией в имени. Клинч. Или это совершенно сторонний файл, из которого ты получаешь версию?
Автор: Habib2302
Дата сообщения: 01.11.2012 21:33
как сделать так чтобы создавался ярлык в панели управления windows 7?
Автор: Robby
Дата сообщения: 01.11.2012 21:42
Habib2302
ты бы с правилами написания сообщений ознакомился для начала...

Добавлено:
Апплеты в панели управления, это обычные DLL, имеющие расширение .cpl (Control Panel Library) и располагающиеся в системной директории Windows. В свою очередь, в каждом файле cpl может храниться несколько апплетов. Cpl имеет единственную функцию точки входа CPlApplet(), через которую поступают все сообщения от панели управления.
Файлы .cpl из системной папки, автоматически загружаются при запуске панели управления. Обратите внимание, что файлы панели управления иногда загружаются с помощью записей в разделе [раздела MMCPL] файла Control.ini.
Далее...
Автор: C0USIN
Дата сообщения: 02.11.2012 21:23
Помогите написать скрипт, пожалуйста.

Есть такая задача:Имеем папку с системными шрифтами Arial, Calibri, Cambria, Consolas, Courier, Meiryo, Segoe UI, Tahoma, Times New Roman
Необходимо обновить их в системе.
Если в системе присутствует более свежая версия шрифта, то не заменять.
Почти все они заблокированы системой, поэтому замена должна быть с перезагрузкой компа
Если шрифта не было в системе, то корректно зарегистрировать его в реестре.
Автор: YURSHAT
Дата сообщения: 03.11.2012 01:05
Alexerm

Цитата:
Ссылка на "Inno Setup Scripting 5.1


если очень нужно, можно скачать у нас на сайте. Линк
Автор: Pantalone
Дата сообщения: 03.11.2012 15:17
Нет ли у кого примерчика как сделать кастомную страницу такого вида:



Интересуют только жирные пункты выбора и комментарии к ним.

Обычный код не работает:

Код:
procedure InitializeWizard;
begin

UsagePage := CreateInputOptionPage(wpLicense,
'Select installation option', 'How should My Program be installed?',
'Select the desired installation option, then click Next.',
True, False);
UsagePage.Add('Install as a Windows Application' + #13 + 'Много текста');
UsagePage.Add('Install as a Windows Service' + #13 + 'Много текста');

UsagePage.SelectedValueIndex := 2;

end;
Автор: log1stable
Дата сообщения: 05.11.2012 16:57
Pantalone, по-видимому там не просто caption для радиокнопки, а несколько лэйбелов. По-второму, надо or вместо and.
Автор: CTpaHNICK
Дата сообщения: 07.11.2012 07:48
Привет всем! Как сделать прозрачным эту панель? (Пример ниже)
Автор: elchupakabra
Дата сообщения: 09.11.2012 16:18
Уважаемые, помогите пожалуйста осилить задачу.
При выборе определённого компонента:
1. запустить (до копирования файлов) сторонний (дополнительный) инсталлятор из {tmp} с заданными ключами установки.
2. удалить в {app} определённые папки ("мусорные", которые установит инсталлятор из пункта 1).
3. выполнить копирование (установку) файлов уже посредством основного inno-инсталлятора.

Заранее спасибо.
Автор: R3Pa4eK
Дата сообщения: 10.11.2012 20:59
CTpaHNICK
Эм... так она и так прозрачная О_о
Автор: ultimo
Дата сообщения: 11.11.2012 14:31
Здравствуйте, один маленький вопрос: при установке через ISDone (когда начинается работа с распаковкой архивов) если отменить установку (т.е. нажать отмена), то распаковка архивов заканчивается, и начинается распаковка архивов, запакованных самим компиллятором Inno, и только после этого запускается деинсталляция. Как сделать так, чтобы распаковка архивов Inno не начиналась, а сразу запускался деинсталлятор? Понятно дело, чтобы запустился обычный деинсталлятор, то нужно чтобы он сперва был создан, а создается он на финальном этапе установке. Как удалить в таком случае папку {app} без использования деинсталлятора? Отрывок из скрипта (чтобы вы лучше меня поняли)


Код:
...

if (CurStep = ssInstall) then begin
WizardForm.CancelButton.OnClick := @CancelButtonOnClick;

...

if (CurStep=ssPostInstall) and ISDoneError then begin
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);

...
Автор: nik1967
Дата сообщения: 11.11.2012 16:46
ultimo, в скрипте ISDone есть такая функция

Код: function CheckError:boolean;
begin
result:= not ISDoneError;
end;
Автор: Gnom3
Дата сообщения: 11.11.2012 16:47
ultimo
на файлах, которые пакуются в сам инсталл, ставь проверку - Check :CheckError; (может называться по другому, название взял из оригинала примера, который идет с библиотекой. При такой проверке, файлы не будут распакованы из инсталлятора, если распаковка была прервана по любой причине.
Автор: Andrey128
Дата сообщения: 11.11.2012 17:29
Genri

Цитата:
Andrey128 -- а если потребуется задать версию: 3.01.40.0 ?

Будет 3.1.40

Цитата:
И не совсем понял, что здесь делает GetFileVersion("MyApp.exe")? Чтобы использовать GetFileVersion, нужно знать имя файла. Но именно имя мы и пытаемся получить. Оно явно будет не MyApp.exe, а с версией в имени. Клинч. Или это совершенно сторонний файл, из которого ты получаешь версию?

Да, версия берется из внешнего файла, т.е. из экзешника приложения.
Автор: ChVL
Дата сообщения: 14.11.2012 14:12
Как прописать путь к папке System32 в Win 7 х64?
Любой способ записи через секцию [Files] приводит к тому, что файлы попадают в папку SysWOW64, а надо именно System32.
Автор: ultimo
Дата сообщения: 14.11.2012 21:09
Спасибо за подсказку с CheckError. Теперь надо сделать так, чтобы заместо одного прогресс бара было два - один показывающий распаковку файлов посредством ISDone а другой - распаковку файлов, запакованных самим инсталлятором Inno (фактически я не пакую файлы, использую флаг external, но это не меняет суть вопроса). Встречал похожую операцию с рисованным прогресс баром, но мне нужно сделать обычные бары. Ну или хотя бы ссылку на материал, ибо сам найти ниче толкового не смог
Автор: alexandrevil
Дата сообщения: 15.11.2012 21:40
Приветствую всех форумчанинов)))
Подскажите пожалуйста, а еще лучше если можете дайте скриптик чтобы прогресс установки и ярлычок инсталла отображался в реестре панели быстрого запуска !?
А именно нужно чтобы был ярлык и при наведении на него вылазило "Установлено: 10% Ждите..." как то так))
Автор: boss911
Дата сообщения: 16.11.2012 04:47
У меня отключены все страницы, нужен только прогресс бар.

[more=Code]
Код: procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInstalling then
begin
with WizardForm do
begin
OuterNotebook.Hide;
MainPanel.Hide;
FilenameLabel.Hide;

ClientHeight:= WizardForm.ClientHeight - ScaleY(230);                 // высота (с верху)
ClientWidth:= WizardForm.ClientWidth - ScaleX(100);                    // ширина (с низу)
CancelButton.Left:= WizardForm.CancelButton.Left - ScaleX(100);         // отмена (вверх)
CancelButton.Top:= WizardForm.CancelButton.Top - ScaleY(230);
Bevel.Top:= WizardForm.Bevel.Top - ScaleY(230);                         // линия (вверх)

ProgressGauge.Top:= ScaleY(45);
ProgressGauge.Width:= ProgressGauge.Width - ScaleX(80);
ProgressGauge.Left:= (WizardForm.Width/2) - (ProgressGauge.Width/2);     // прогрессбар (центрируем)
ProgressGauge.Parent:= WizardForm;

StatusLabel.Top:= ScaleY(10);
StatusLabel.Left:= (WizardForm.Width/2) - (ProgressGauge.Width/2);     // текст (центрируем)
StatusLabel.Parent:= WizardForm;
end;
FilenameLabel.Top:= ScaleY(25);
FilenameLabel.Left:= (WizardForm.Width/2) - (WizardForm.ProgressGauge.Width/2);     // текст (центрируем)
FilenameLabel.Parent:= WizardForm;
// новый StaticText...
with TNewStaticText.Create(WizardForm) do
begin
Left:= ScaleX(30);                                                     // отступ с левой стороны
Top:= WizardForm.Bevel.Top - ScaleY(6);
Enabled:= False;
Caption:= ' Copyright 2012 © Boss911 ';
Parent:= WizardForm;
end;
// окно по центру экрана
WizardForm.Position:= poScreenCenter;
// if not WizardSilent then WizardForm.Show;
if Pos('/verysilent', Lowercase(GetCmdTail)) = 0 then WizardForm.Show;
end
else WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
Автор: Gnom3
Дата сообщения: 16.11.2012 07:05
boss911
ну, как-то так. именно эту часть кода как-то менять не рекомендую.
[more=код]
Код: [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := PageID <> wpInstalling; // Скрываем все страницы, кроме установки
end;

procedure WizardFormCreate(Sender: TObject);
begin
WizardForm.NextButton.OnClick(WizardForm.NextButton); // поскольку страница готовности все равно вылазит, нажмем кнопку далее
end;

procedure InitializeWizard();
begin
with WizardForm do
begin
ClientHeight:= WizardForm.ClientHeight - ScaleY(230); // высота (с верху)
ClientWidth:= WizardForm.ClientWidth - ScaleX(100); // ширина (с низу)
// окно по центру экрана делать лучше сразу, после задания размера окна
Position:= poScreenCenter;

OuterNotebook.Hide;
MainPanel.Hide;
FilenameLabel.Hide;

CancelButton.Left:= WizardForm.CancelButton.Left - ScaleX(100); // отмена (вверх)
CancelButton.Top:= WizardForm.CancelButton.Top - ScaleY(230);
Bevel.Top:= WizardForm.Bevel.Top - ScaleY(230); // линия (вверх)

ProgressGauge.Top:= ScaleY(45);
ProgressGauge.Width:= ProgressGauge.Width - ScaleX(80);
ProgressGauge.Left:= (WizardForm.Width/2) - (ProgressGauge.Width/2); // прогрессбар (центрируем)
ProgressGauge.Parent:= WizardForm;

StatusLabel.Top:= ScaleY(10);
StatusLabel.Left:= (WizardForm.Width/2) - (ProgressGauge.Width/2); // текст (центрируем)
StatusLabel.Parent:= WizardForm;

FilenameLabel.Top:= ScaleY(25);
FilenameLabel.Left:= (WizardForm.Width/2) - (WizardForm.ProgressGauge.Width/2); // текст (центрируем)
FilenameLabel.Parent:= WizardForm;
// новый StaticText...
with TNewStaticText.Create(WizardForm) do
begin
Left:= ScaleX(30); // отступ с левой стороны
Top:= WizardForm.Bevel.Top - ScaleY(6);
Enabled:= False;
Caption:= ' Copyright 2012 © Boss911 ';
Parent:= WizardForm;
end;
Show; // сперва показываем окно, иначе ничего не выйдет
OnCreate := @WizardFormCreate;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInstalling then WizardForm.Visible := Pos('/verysilent', Lowercase(GetCmdTail)) = 0; // в принципе не нужна, при verysilent и так будет скрыто вообще все
end;
Автор: boss911
Дата сообщения: 16.11.2012 07:24
Помогите страницу приветствия (wpWelcom) превратить в обычный диалог с размером ScaleY(230) на ScaleX(100), где по центру будет надпись "Начать установку AppName?" (значение AppName из секции Setup), а вместо кнопок "Далее/Отмена" кнопки "Да/Нет".
Автор: Gnom3
Дата сообщения: 16.11.2012 07:29
boss911 делал несколько месяцев назад для одного хорошего человека, под свои нужды там несложно поменять, думаю.

[more=мини]
Код: [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*Code]
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
Cancel := true;
end;

procedure InitializeWizard();
begin
with WizardForm do
begin
AutoScroll := False;
ClientHeight := ScaleY(150);
ClientWidth := ScaleX(500);
OuterNotebook.Hide;

with Bevel do
begin
SetBounds(ScaleX(5), ScaleY(5), ScaleX(490), ScaleY(140));
Shape := bsFrame;
end;

with NextButton do
begin
Left := ScaleX(412);
Top := ScaleY(111);
end;

with CancelButton do
begin
Left := ScaleX(412);
Top := ScaleY(111);
end;

with DirBrowseButton do
begin
Left := ScaleX(417);
Top := ScaleY(40);
Parent := WizardForm;
end;

with DirEdit do
begin
SetBounds(ScaleX(8), ScaleY(39), ScaleX(396), ScaleY(21));
Parent := WizardForm;
end;

with SelectDirLabel do
begin
Parent := WizardForm;
SetBounds(ScaleX(8), ScaleY(8), ScaleX(484), ScaleY(28));
end;

with ReadyLabel do
begin
Parent := WizardForm;
SetBounds(ScaleX(8), ScaleY(104), ScaleX(396), ScaleY(28));
end;

with StatusLabel do
begin
Parent := WizardForm;
SetBounds(ScaleX(8), ScaleY(8), ScaleX(484), ScaleY(28));
end;

with FilenameLabel do
begin
Parent := WizardForm;
SetBounds(ScaleX(8), ScaleY(104), ScaleX(396), ScaleY(28));
end;

with ProgressGauge do
begin
SetBounds(ScaleX(8), ScaleY(70), ScaleX(484), ScaleY(28));
Parent := WizardForm;

end;
end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := PageID < wpReady;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
with WizardForm do
begin
with CancelButton do
begin
Width := ScaleX(0);
Height := ScaleY(0);
end;
ProgressGauge.Style := npbstMarquee;
case CurPageID of
wpReady :
begin
StatusLabel.Visible := False;
FilenameLabel.Visible := False;
end;
wpInstalling :
begin
ProgressGauge.Style := npbsNormal;
ReadyLabel.Visible := False;
SelectDirLabel.Visible := False;
NextButton.Visible := False;
DirEdit.Enabled := False;
DirBrowseButton.Enabled := False;
StatusLabel.Visible := True;
FilenameLabel.Visible := True;
with CancelButton do
begin
Width := ScaleX(80);
Height := ScaleY(23);
end;
end;
wpFinished :
begin
NextButton.Visible := True;
StatusLabel.Caption:= FinishedHeadingLabel.Caption;
FilenameLabel.Caption := FinishedLabel.Caption;
end;
end;
end;
end;
Автор: boss911
Дата сообщения: 16.11.2012 07:30
Gnom3
Спасибо. Ошибка. И так два раза, потом пошла распаковка.
Автор: Gnom3
Дата сообщения: 16.11.2012 07:32

Цитата:
Ошибка.

это нужно смотреть весь скрипт, возможен конфликт между вашим кодом и моим - там довольно хлипкое равновесие в системе обмана инсталла, при сокрытии страницы готовности.
Автор: boss911
Дата сообщения: 16.11.2012 07:41
Gnom3

Вы правы, мешает мой код. Посему давайте в ПМ.
Автор: Yande
Дата сообщения: 18.11.2012 00:49
Update
Автор: Gideon Vi
Дата сообщения: 19.11.2012 07:39
Подскажите, пожалуйста, как задать расположение для файла uninstallexe?
Например, если в инсталяторе задана установка в C:\Tool\ как сделать, чтобы экзешник деинсталятора находился в C:\Tool\Uninstall\ ?


innonewbie, спасибо
Автор: innonewbie
Дата сообщения: 19.11.2012 08:02
Gideon Vi, вроде так можно:
[Setup]
UninstallFilesDir= "{app}\Uninstall"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

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


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