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

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

Автор: Forslay
Дата сообщения: 29.04.2008 21:57
serg_aka_lain, Спасибо за пример ! А можно, сделать так, что бы вылезала не ошибка, а информационное сообщение, с восклицательным знаком...


Добавлено:
Спасибо, всё понял как.
Автор: omals
Дата сообщения: 30.04.2008 15:43
KurtWagner

Цитата:
Как добавить program.exe в АутоЗапуск программ???


или в
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run\"; ValueType: string; ValueName: "Название моей проги"; ValueData: "путь к моей проге (например: {app}\program.exe"; Flags: uninsdeletevalue;
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run\"; ValueType: string; ValueName: "Название моей проги"; ValueData: "путь к моей проге (например: {app}\program.exe"; Flags: uninsdeletevalue;

или в коде (где и когда надо)
RegWriteStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Run\', 'Название моей проги', 'путь к моей проге например: {app}\program.exe');
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Run\', 'Название моей проги', 'путь к моей проге например: {app}\program.exe');

надеюсь идея понятна
а вот как будет с терминалами я не уверен
тут сорри - надо спрашивать у более знающих людей

Добавлено:
2 Forslay

Цитата:
Что некому помочь?

serg_aka_lain дал верный путь, но могут быть ньюансы
нужно следить за всей инфой вроде
AppХХХХХ
типа AppName, AppVerName, AppVersion, AppId и т.д.
желательно сгенерировать GUID в инносетап меню (Tools->Generate GUID)
его вставить в
AppId={{тут то шо сгенерировал инно}
а потом искать или по
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Proga_is1','InstallLocation', Path);
или по
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{тут то шо сгенерировал инно}','InstallLocation', Path);

и даже это не гарантирует правильности нахождения пути
просмотри ветку
HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
там не все так просто
возможно в твоем случае достаточно и совета serg_aka_lain
но на будущее стоит учитывать разные ньюансы
(сам несколько раз погорел на таком, потому и советую)





Автор: KurtWagner
Дата сообщения: 30.04.2008 16:25
Как сделать так чтоб в [Tasks] нельзя было убрать флажок???
Автор: Raf_SE
Дата сообщения: 30.04.2008 21:02
Sampron

Цитата:
Попробуй так:

[Registry]
Root: HKLM; Subkey: System\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List; ValueType: string; ValueName: {app}\MyProg.exe; ValueData: {app}\MyProg.exe:*:Enabled:MyProg; Flags: uninsdeletekey

Нет, фишка в том, что у меня путь к белому списку немного иной, а точнее вместо "ControlSet001" у меня "ControlSet030".
Я вот откопал dll'ку из Earth 2160 отвечающую за прописывание exe'шников в белый список, возможно ктонить мог бы ее какнить переделать чтоб можно было использовать для любой игры, или хотяб скажет как ее задействовать.
Автор: MogilShik2007
Дата сообщения: 01.05.2008 08:28
Извиняюсь если такой вопрос был, но инфы больно уж много, вопрос такой какое значение нужно прописать в скрипте, чтоб моя надпись отображалась в левом нижнем углу инсталлера? Чет в справке толком ниче не написано...
Автор: Victor_Dobrov
Дата сообщения: 01.05.2008 09:29
MogilShik2007 и KurtWagner - добавить копирайт и заблокировать дополнительные задачи:

[Setup]
AppName=Sample
AppVerName=Sample
CreateAppDir=false

[Messages]
BeveledLabel=ru-board.com

[Tasks]
Name: explorer; Description: Запустить проводник

[Code]
Procedure InitializeWizard; Begin
WizardForm.TasksList.Enabled:= false
End;
Автор: MogilShik2007
Дата сообщения: 01.05.2008 10:25
благодарствую, эт мне всё надо вписывать иль тока два первых пункта?

И ещё можно поподробней об установке Corona Skin?

Вот тут написано:
[Setup]
AppName=Corona Lite
AppVerName=Inno Setup Corona Skin & System Test
DefaultDirName={pf}\Corona Skin

#define SkinPath AddBackslash(SourcePath) + "Corona\"
#include SkinPath +"Corona_kernel.iss"

[Code]
Procedure CurPageChanged(CurPageID: Integer);
Begin
ShowSkinPage(CurPageID) { Corona Skin by Victor Dobrov }
End;

Procedure InitializeWizard;
Begin
InitializeSkin { Corona Skin by Victor Dobrov }
End;

Procedure DeinitializeSetup;
Begin
DeInitializeSkin
End;

А кудаж название проги вводить своей? Если в AppName прописана корона?
Автор: Raf_SE
Дата сообщения: 01.05.2008 17:59

Цитата:
А кудаж название проги вводить своей? Если в AppName прописана корона?

А если вместо короны вести название своей проги, то работать не будет?
Автор: Raf_SE
Дата сообщения: 02.05.2008 20:23
1. Как сделать чтоб [more=в ключе реестра]Root: HKLM; Subkey: "SOFTWARE\Topware\Earth 2150\BaseGame\Network\EarthNet"; ValueName: "AddressIP"; ValueType: String; ValueData: ""EarthNet""netserver.earth2150.com"";[/more] не светило ошибку ValueData ?

2. Как сделать чтоб в зависимости от языка интерфейса инсталлятора, устанавливалась русская, украинская или английская версия файла "Kill.ini"?
Автор: Sampron
Дата сообщения: 02.05.2008 21:33
Raf_SE

Цитата:
2. Как сделать чтоб в зависимости от языка интерфейса инсталлятора, устанавливалась русская, украинская или английская версия файла "Kill.ini"?

Смотри пример Languages.iss
Автор: serg_aka_lain
Дата сообщения: 02.05.2008 23:31
Raf_SE

Цитата:
1. Как сделать чтоб в ключе реестра не светило ошибку ValueData ?


Если надо записать так: "EarthNet""netserver.earth2150.com",
то ValueData: """EarthNet""""netserver.earth2150.com""";
Автор: PoReX
Дата сообщения: 03.05.2008 14:32
Помогите пожалуста новичку разобраться с парой вопросов
1. Как сделать чтобы при деинсталяции удалялись не только файлы, но и сам каталог. У меня он остается пустой.
2. У меня в инсталле зашиты два 7z sfx архива. При установке они копируются в нужную диррректорию и в ней же распаковываются, но это занимает довольно много времени т.к архивы весят 2.7 Гига + распаковываются файлы общим объемом почти 5Г. Можно ли сделать чтобы архивы не копировать, а сразу распаковывать в нужную папку?
Ставил флаг nocopy при этом архив запускается из секции Run. При установке пишет не найден файл, код ошибки 2. Как с этим бороться?
Автор: Raf_SE
Дата сообщения: 03.05.2008 15:41
PoReX
Читай руководство от Kindly, там ответы на все твои вопросы.


Цитата:
Ставил флаг nocopy при этом архив запускается из секции Run. При установке пишет не найден файл, код ошибки 2. Как с этим бороться?

Никак, ты требуешь невозможного.
Автор: Victor_Dobrov
Дата сообщения: 03.05.2008 16:53
PoReX - пример запуска внешнего 7-Zip Sfx-архива, распаковка идет в папку приложения {app}:

[Setup]
AppName=7zSfx
AppVerName=7zSfx unpack
DefaultDirName={pf}\7zSfx
OutputDir=.

[Run]
Filename: {src}\7zSfx.exe; Parameters: "-y -o""{app}"""

P.S. про эти ключи несложно было узнать в справке по 7-Zip...
Автор: SotM
Дата сообщения: 03.05.2008 17:14
Кто нибудь сможет ответить на мой вопрос? (еще на пред. странице был задан он)
Автор: firefly2005
Дата сообщения: 03.05.2008 22:50
для SotM

Цитата:
Есть игрушка и я хочу сделать инстал к ней, паковаться она будет долго и нудно (несколько гигов всё таки).
1. Можно ли сначала всё это дело запаковать, а потом менять скрипт установки сколько мне хочется без перепаковки всего архива? Или нужно сразу скрипт с последней версией запаковывать со всеми файлами?
2. Есть ли такие функции, чтобы из скрипта получать информацию о файлах, которые содержатся в архиве. (ну там имя файла, его размер).


Я только несколько недель копаюсь, попытаюсь ответить, несогласные могут дополнить.

1) нет, там идёт же как бы компиляция, т.е. сборка, а не простая архивация.

2) Напрямую вроде бы нет, есть две утилиты:Inno Setup Unpacker (innounp ) и InnoUnPacker.
На первую линк есть в шапке. А вторая ссылка http://ifolder.ru/6192841
автор Valeron87 (если ссылка умрет можно навреное через личку ссылку запросить у автора)

Добавлено:
Подскажите кто с программированием больше знаком.
не получается одна вроде бы несложная вещь.
Необходимо добавить в скрипт от Kindly (из руководства его) который можно взять по этому пути после инсталяции.
C:\Program Files\Inno Setup Scripting v5.1\Scripts\SourceScript\iss.iss

как в него добавить дополнительно свою страницу корректно. Дополнительная страница это 2 переключателя типа радиокнопки.
вот код его (лишние пользовательские данные я убрал, чтобы яснее было видно, отдельно и в другой форме он работает этот код).

[more]procedure CreateTheWizardPages; //главная
var
Newpage: TWizardPage;

begin
Newpage:=CreateCustomPage(wpWelcome, 'Выберите вариант установки ');
NoMusicBtn:=TRadioButton.Create(Newpage);
NoMusicBtn.Top
NoMusicBtn.Width
NoMusicBtn.Height
NoMusicBtn.Caption
NoMusicBtn.Checked
NoMusicBtn.Parent

MusicBtn:=TRadioButton.Create(Newpage);
MusicBtn.Top
MusicBtn.Width
MusicBtn.Height
MusicBtn.Caption
MusicBtn.Checked
MusicBtn.Parent

StaticText := TNewStaticText.Create(Newpage);
StaticText.Top
StaticText.Caption
StaticText.AutoSize
StaticText.Parent

StaticText := TNewStaticText.Create(Newpage);
StaticText.Top
StaticText.Caption
StaticText.AutoSize;
StaticText.Parent
end;

procedure RegisterPreviousData(PreviousDataKey: Integer); // вкл-выкл
begin
SetPreviousData(PreviousDataKey, 'NoMusicС', IntToStr(Ord(NoMusicBtn.Checked)));
SetPreviousData(PreviousDataKey, 'MusicС', IntToStr(Ord(MusicBtn.Checked)));
end;

function NoMusic: Boolean;
begin
Result:=NoMusicBtn.Checked;
end;

function Music: Boolean;
begin
Result:=MusicBtn.Checked;
end;

Procedure InitializeWizard(); // и ещё одну процедурка
var
begin
CreateTheWizardPages
end;
[/more]
Т.е. если я этот код тупо вставлю в скрипт iss.iss, то просто повляется дополнительная страница с фоновым рисунком, но без моих данных. Но кнопки НАЗАД ВПЕРЕД ОТМЕНА присутствуют.

Моих знаний по программированию хватило только на подобный код
(здесь только те изменения которые я внес)
[more]
procedure CreateTheWizardPages; // собственно создание дополнительной страницы
// с радиокнопками
var
Newpage: TWizardPage;

begin
Newpage:=CreateCustomPage(wpWelcome, 'Выберите вариант установки ');
NoMusicBtn:=TRadioButton.Create(Newpage);
MusicBtn:=TRadioButton.Create(Newpage);
StaticText:= TNewStaticText.Create(Newpage);
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
SetPreviousData(PreviousDataKey, 'SCNoMusic', IntToStr(Ord(NoMusicBtn.Checked)));
SetPreviousData(PreviousDataKey, 'SCMusic', IntToStr(Ord(MusicBtn.Checked)));
end;

function NoMusic: Boolean;
begin
Result:=NoMusicBtn.Checked;
end;

function Music: Boolean;
begin
Result:=MusicBtn.Checked;
end;


Procedure HideAll(); //добавил в вскрытые свои компоненты наряду с другими.
Begin // это надо было?

NoMusicBtn.Hide
MusicBtn.Hide
StaticText.Hide

end;


Procedure InitializeSkin(); // самое главное в скрипте от Kindly-отображение картинки
Begin
……..
// wpWelcome здесь соответсвенно оригин код от Kindly
.......
//Newpage А это моя добавленная страница
// 2 радиокнопки и 2 поля текста
NoMusicBtn.Top
NoMusicBtn.Width
NoMusicBtn.Height
NoMusicBtn.Caption
NoMusicBtn.Checked
NoMusicBtn.Parent

MusicBtn.Top
MusicBtn.Width
MusicBtn.Height
MusicBtn.Caption
MusicBtn.Checked;
MusicBtn.Parent


StaticText.Top
StaticText.Caption
StaticText.AutoSize
StaticText.Parent

StaticText.Top :
StaticText.Caption
StaticText.AutoSize
StaticText.Parent

// wpLicense........// wpInfoBefore..........// wpSelectDir…… и тд по оригиналу.
end;


procedure ShowPageComponents(CurPageID: Integer); // отображение компонентов
begin
Case CurPageID of
……..
wpWelcome:
..........
NewPage: // в процедуре отображения компонентов
Begin // добавил свои
NoMusicBtn.Show // 2 кнопки и текстовое поле
MusicBtn.Show //
StaticText.Show //
..........
wpSelectDir:
…… // и т.д.
end

procedure CurPageChanged(CurPageID: Integer);
begin
HideAll
ShowPageComponents(CurPageID)
CreateTheWizardPages // вот здесь добавил на всякий случай,
//моя страница относится к CurPage ?
.......
end;
[/more]

вот это всё компилируется без ошибок , но в процессе запуска выдаёт типа
Runtime Error (at 105:2968) или 3002 и тд.
Could not call proc

или 105:3002 и тд., в зависимости от того что я вкл-выключаю в коде заккоментировав.

Вот собственно и вопрос как включить скрытое изображение, куда смотреть в какую процедуру? или как то по другому нарисовать надо создаваемую страницу?



Автор: braunberg
Дата сообщения: 04.05.2008 02:47
SotM
То, что ты хочешь сделать, - делается через компаненты, и предварительная архивация тебе не нужна
Автор: PoReX
Дата сообщения: 04.05.2008 11:23
Victor_Dobrov
Внешний архив мне не подходит, но все равно спасибо.

Вообще делал архив чтобы инстал получился компактней. Разница с использование 7z и без, составляет 1 гиг. Не устраивало то что при установке копирование самого архива занимает много времени,а потом еще и распаковка.

Теперь подумываю без 7zip сделать, и возникает такой вопросик. Можно ли управлять степенью сжатия Inno или он сразу максимально жмет?
Автор: Kutsenko
Дата сообщения: 04.05.2008 13:25
2 PoReX
Конечно можна управлять степенью сжатия. Для этого лучше используй ISTool.
Автор: braunberg
Дата сообщения: 04.05.2008 13:34
PoReX
В справке для секции [Setup] почитай описание параметров директив Compression и SolidCompression, там все доходчиво изложено. И конечно же GUI надо пользовать для Inno Setup
Автор: PoReX
Дата сообщения: 04.05.2008 18:36
Kutsenko
braunberg

Спасибо, ужу разобрался
Автор: SotM
Дата сообщения: 05.05.2008 09:21
2braunberg

Цитата:
То, что ты хочешь сделать, - делается через компаненты, и предварительная архивация тебе не нужна

Через какие компоненты?

2firefly2005

Цитата:
1) нет, там идёт же как бы компиляция, т.е. сборка, а не простая архивация.

Жаль


Цитата:
2) Напрямую вроде бы нет, есть две утилиты:Inno Setup Unpacker (innounp ) и InnoUnPacker.
На первую линк есть в шапке. А вторая ссылка http://ifolder.ru/6192841
автор Valeron87 (если ссылка умрет можно навреное через личку ссылку запросить у автора)

Но это ведь внешние утилиты. Я думал может есть встроенная поддержка работы с архивом.
Ну ладно, буду думать другие варианты.

Это наверное будет оффтопом: а такая функциональность есть в NSIS?


Автор: braunberg
Дата сообщения: 05.05.2008 16:38
SotM

Цитата:
Через какие компоненты?

...компоненты установки конечно. Чтобы не быть голословным, посмотри как это реализовано на примере K-Lite Codec. Найди любую его версию и начни устанавливать, как только дойдешь до страницы Select Compoments, остановись и посмотри - ни это ли тебе нужно для твоей задачи? На этой странице представлен листинг компонентов установки, т.е. одельные файлы или группы файлов, которые тебе предлагается установить, выбор которых ты можешь сделать с помощью чекбоксов или радиокнопок; с правой стороны списка указан их размер. Если перенести это на твою задачу, то выглядеть это будет примерно так: у тебя есть игрушка, в которой определенная группа файлов устанавливается по-любому (т.е. такие без которых игра просто не запустится), а есть файлы, установкой которых ты хочешь управлять сам. Вот из этих файлов ты и делаешь компоненты установки, которые можно включить или исключить из своей установки простой установкой или снятием галки в чекбоксе.

Пример с кодеком дал для общего представления, т.к. он показался мне наиболее развернутым (да и разобрать его всегда можно, чтобы посмотреть как это сделано). Скорее всего для твоего случая все будет выглядеть гораздо проще. А вобще, если тебя не интересует деинсталяция, реестр, и финты в секции [Code], то сделай не полный SFX своей игрушки и отдельно запакуй в SFX файлы которые ты хочешь ставить выборочно, и не усложняй себе жизнь
Автор: firefly2005
Дата сообщения: 05.05.2008 18:32
SotM
Там в шапке есть ссылка Русская справка к версиям 5.0.xx , вот я собственно оттуда всё узнаю, вбиваю в "ПОИСК" справки непонятное и получаю:
например по твоему вопросу Через какие компоненты?


Цитата:
Секция [Components]

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

Сама по себе эта секция ничего не делает: для того, чтобы компоненты были действительно установлены на компьютер пользователя, секция [Components] должна быть связана с другими секциями. См. Параметры секций [Components] и [Tasks].


От себя добавлю-это выбор компонентов при установке, т.е. у тебя при установке можно "галочкой" установить, или не установливать некоторые вещи из твоего инсталлятора.
Наверное помнишь как устанавливается Офис от Майкрософта- там есть когда галочки на Ворд, Эксель ставишь?

Дополнительно к секции [Components] в скрипте ты можешь доплнительно изменить саму страничку этого выбора компонентов, в секции [Code] она идёт под именем wpSelectComponents

ЗЫ: насчёт NSIS, я не знаю. Могу ещё посоветовать, вверху страницы есть ссылка "Версия для печати", нажми на неё, она отобразит тебе все 77 страниц этой темы в один лист и сохрани на жесткий диск себе (Осторожно страница получится около 1мб). Через Ctrl+F можешь искать интересующие вопросы, например "wpSelectComponents".
Есть шанс, что найдешь ответ.
Автор: Zloy_Gelud
Дата сообщения: 05.05.2008 22:26
Ребят, не могли бы Вы выложить библиотеку ISTask.dll. А то нашел в старых ветках пару ссылок, а они уже устарели..

Добавлено:
И если можно файлик, с функциями, которые она вызывает.
Автор: serg_aka_lain
Дата сообщения: 05.05.2008 22:47
Zloy_Gelud

Она есть в шапке
Цитата:
Руководство по расширенным возможностям Inno Setup 5 (не для чайников) от Kindly


работает так:
If RunTask('process.exe', false) then
begin
KillTask('process.exe');

Автор: Zloy_Gelud
Дата сообщения: 06.05.2008 00:56
serg_aka_lain - а нельзя ли ее отдельно выложить..плиз. А там вроде же есче есть проверка серийного номера HDD/тома?!
Автор: omals
Дата сообщения: 06.05.2008 07:51
Zloy_Gelud
IsTaskСсылка
Автор: MogilShik2007
Дата сообщения: 06.05.2008 10:23
Чёт сделал как писалось выше со скином корона, а толку ноль, инсталлер собирается при,запуске выдаёт ошибку ,чёт типа CancelHint...
Два вопроса:
Как нормально зашифровать инсталлер? Пробовал по руководству которое в шапке, инсталлер всеравно разбирается...
И какое значение нужно прописать чтоб галочки автоматом выставлялись?..
Автор: SotM
Дата сообщения: 06.05.2008 10:29
2braunberg & 2firefly2005
Ну с компонентами понятно, ну сначала я имел ввиду другое, но всё равно и за это спасибо, тоже смогу использовать.

Скажем так: в инсталяте находятся файлы, и после распаковки их нужно преобразовать в другой формат (если кому интересно, то из ogg в wav) с помощью внешней утилитой из командной строки. Я думал, что можно еще в архиве узнать их общий размер, но наверное придется узнавать уже когда они все полностью распакованы и просто пробежаться по известному списку для получения размера каждого файла.
Данная информация нужна, чтобы показать диалог с прогресс баром, со временем оставшимся до конца преобразования.
Тоесть получается установка будет проходить в два этапа: сначала всё это дело распаковывается (показывается стандартный диалог), потом некоторые файлы преобразуются (показывается другой диалог).
Хотелось бы, чтобы это всё происходило в одном диалоге с указанием оставшегося времени, но наверное это невозможно сделать.

Ну пока это всё в планах, изучаю пока что всё

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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