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

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

Автор: Victor_Dobrov
Дата сообщения: 09.09.2008 16:24
Nuke142

Цитата:
Я правильно понял что программа для программистов ?
То есть визуально в ней не поработаешь, как например в Setup Factory, InstallShield и пр.

Установи ISTool - надстройку над Inno Setup, и встроенные в Compil32.exe визард и редактор больше не понадобятся.
Автор: ComradG
Дата сообщения: 09.09.2008 21:41
Я вот что подумал: если сделать второй прогрессбар, который бы отображал ход событий для текущего(устанавливаемого) компонета, то нужно писать обработчик этого события. А раз так, почему бы к нему не прикрутить побайтовый обработчик? Есть у кого идеи по этому поводу?
Автор: STALKER_HIGHLANDER
Дата сообщения: 09.09.2008 22:29
Позволю себе повторить свои вопросы с прошлой страницы:


Цитата:
Я копирую папку вместе со всеми находящимися в ней файлами, т.е.

Source: "{app}\папка\*"; DestDir: "{app}\папка"; Components: osnovnoe; Flags: createallsubdirs recursesubdirs

Вопрос-если я добавлю флаг ignoreversion, то он будет применятся ко всем файлам в этой папке?

Тоже самое интересует относительно флага sortfilesbyextension.
И кстати есть ли смысл применять этот (sortfilesbyextension) флаг, для уменьшения размера инсталлятора? Это дает заметный эффект?

Автор: Diawer
Дата сообщения: 09.09.2008 23:19
SotM

Нет там цикла, я же говорю, при нажатии "Ok" - выход (запущена прога или нет) не катит. По-этому и спрашиваю.
Автор: SotM
Дата сообщения: 10.09.2008 07:26
Diawer
Блин, я говорю что в НЕ твоей программе организован цикл с проверкой, что тут не понятного?
Нажимаешь Ок, проверяет запущена программа или нет, если не запущена то выходим из цикла и продолжаем установку, а если запущена, то продолжаем цикл. Когда нажимаешь Отмена, то цикл обрывается и установка прекращается.
Автор: Diawer
Дата сообщения: 10.09.2008 09:06
SotM

Цитата:
в НЕ твоей программе организован цикл с проверкой

я знаю, код который дал, он для дороботки, думал кто-то сможет помоч


Цитата:
Нажимаешь Ок, проверяет запущена программа или нет, если не запущена то выходим из цикла и продолжаем установку, а если запущена, то продолжаем цикл. Когда нажимаешь Отмена, то цикл обрывается и установка прекращается.

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

Автор: SotM
Дата сообщения: 10.09.2008 09:54
Diawer
Эх, ну если сам уже не можешь, то глянь [more=сюды]

Код: function InitializeSetup(): Boolean;
begin
Result:=False;
while not Result do
begin
If
RunTask('Compil32.exe', false) then
begin
if
MsgBox('Обнаружен запущенный экземпляр My Prog.'#13#13'Пожалуйста, закройте все экземпляры приложения, затем'#13#13'нажмите «OK», чтобы продолжить, или «Отмена», чтобы выйти.', mbError, mb_OkCancel) = idCancel then
Exit
;
end
else
Result:=True;
end;
end;
Автор: ComradG
Дата сообщения: 10.09.2008 19:28
Пардон за но полагаю, многим интересно следущее - почему так долго нет очередной версии Inno Setup? Как выяснилось, Джордан Расселл работает над шестой версией программы, которая, по-видимому, обещает стать шароварной - по крайней мере сам автор тактично промолчал в ответ на прямой вопрос.
А теперь к делу. Раз уж в разгаре дачный сезон, по заявлению Victor_Dobrov, значит реализации безумных идей мы здесь не найдем. Зато подкинуть можем. Например, если кто знаком с оригинальными инсталляторами игр Westwood Studios, тот наверное поймет о чем речь. Так вот, чисто теоретически, возможно ли подобное сделать с помощью Inno Setup? Я нечто подобное писал в MS Visual Studio 6 c использованием входящего в состав вышеобозначенной программы InstallShield 2.0, но поправде сказать мне двиг последнего не очень по душе. Может кто-то что-нибудь посоветует, подскажет. Хотя после моих критических замечаний я снискал довольно дурную репутацию на форуме, я продолжаю разрабатывать потенциал Inno наряду с вами.
Автор: Diawer
Дата сообщения: 11.09.2008 01:57
SotM, человеческое спасибо,
Цитата:
ну если сам уже не можешь
, да когда видишь готовый код, то думаешь -блин, как же сам не догадался-
у меня просто очередная проблема которую не получается решить (несколько часов).
Не могу сделать "usa" из секции [Tasks] на ОТДЕЛЬНОЙ странице (следующей), конечно с сохранением работоспособности, а
с секцией [Registry].

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: usa; Description: &Associate files; GroupDescription: {cm:AssocingFileExtension,Project64,}; Flags: unchecked

[Registry]
Root: HKLM; Subkey: SOFTWARE\AAcide; ValueType: string; ValueData: PJ64; Flags: uninsdeletekey; Tasks: usa

Мучал код (другого не нашел) из [more=FAQ`а]
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"
Name: desktopicon\common; Description: "For all users"; GroupDescription: "Additional icons:"; Flags: exclusive
Name: desktopicon\user; Description: "For the current user only"; GroupDescription: "Additional icons:"; Flags: exclusive unchecked
Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Flags: unchecked
Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked

[Code_]
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'License Information', 'Are you a registered user?',
'If you are a registered user, please check the box below, then click Next.',
False, False);

{0} Page.Add('Исправить ошибку page2chm v.2.7 RC1 с Opera v.9.10 и выше');
{1} Page.Add('Исправить кодировку русских символов в оболочке Windows');
{2} Page.Add('Использовать доступное поле множественного поиска');
{3} Page.Add('Сокращать длинные названия кнопок и панелей в середине имени');
{4} Page.Add('Включить сохранение страниц');
{5} Page.Add('Включить рекомендуемую кодировку текста');

Page.Values[0] := True;
end; [/more]и не че не получается.
Автор: STALKER_HIGHLANDER
Дата сообщения: 11.09.2008 02:08
Товарищи, выручайте!

Есть задачка, а самому мне похоже не разобраться...
Игра СТАЛКЕР при установке создает папку STALKER-SHOC по седующему пути (в моём случае) - C:\Documents and Settings\All Users\Документы\STALKER-SHOC\
Естественно у пользователей, к примеру Висты (или тех, кто юзает не русскую винду), он будет другим.
В этой папке хранятся скрины, сохраненки, логи и пр. Еще там есть файл user.ltx, в котором записанны многие пользовательские настройки. Вот этот самый файл и должен заменяться инсталлером.
Путь до этого user.ltx прописанн в файле fsgame.ltx (лежит в папке с игрой), вот его содержание:

Цитата:
$app_data_root$=true|false|C:\|Documents and Settings\All Users\Документы\STALKER-SHOC\
$game_data$ = false|true|    $fs_root$|        gamedata\
$game_ai$ = true|false|    $game_data$|    ai\
$game_spawn$ = true|false|    $game_data$|    spawns\
$game_anims$ = true|true|    $game_data$|    anims\
$game_levels$ = true|false|    $game_data$|    levels\
$game_meshes$ = true|true|    $game_data$|    meshes\
$game_dm$ = true|true|    $game_data$|    meshes\
$game_shaders$ = true|true|    $game_data$|    shaders\
$game_sounds$ = true|true|    $game_data$|    sounds\
$game_textures$ = true|true|    $game_data$|    textures\
$game_scripts$ = true|false|    $game_data$|    scripts\
$game_config$ = true|false|    $game_data$|    config\
$level$ = false|false|    $game_levels$
$game_saves$ = true|false|    $app_data_root$|    savedgames\
$logs$     = true|false|    $app_data_root$|    logs\
$screenshots$ = true|false|    $app_data_root$|    screenshots\
$mod_dir$ = false | false | $fs_root$ | mods\


Возможно ли (если да, то каким образом), сделать чтоб инсталлятор считывал путь из этого файла, и уже по этому пути копировал user.ltx?

Заранее спасибо.

*добавлено*

Разобрался сам, все оказалось очень просто. Путь надо прописать как {commondocs}\STALKER-SHOC.

Но в общем виде вопрос ещё в силе-может ли инсталлятор считать путь прописанный в каком-то файле на машине юзера, а потом по этому адресу вставить какой-либо файл из дистрибутива?
Автор: Forslay
Дата сообщения: 11.09.2008 06:58
народ нужна помощь, вот есть сайтик http://isskin.codejock.com/, там скины для Inno, но я немогу скачать понравившийся сторонний скин, например Bister. Я перехажу на их сайт и там просто не могу найти его... Пожалуйста нужна помощь, может я не там ищу.
Автор: Artem_Butenko
Дата сообщения: 11.09.2008 09:20
Forslay - ссылки на скины для Inno Setup размещены на форуме сайта codejock.com. К тому же, ранее на нашем форуме размещали линк на 7 скинов. Там, где Вы сейчас ищите, в лучшем случае будут файлы тем WinXP, на основе которых скомпилированы скины!

Добавлено:
Да, вообще это не выход. Скинирование на основе использование сторонней .dll чревато тем, что инсталлятор будет некорректно работать в новых версиях ОС семейства Windows. Наиболее продуктивный вариант - "кодить" подгружаемые ресурсы (битмапы) в паскаль скрипте. Однако, на данный момент полное скинирование инсталлятора (чек-боксы, радиобаттоны и др. элементы) не удалось осуществить еще никому. Несколькими страницами ранее, я просил помощи в решении данного вопроса. Однако он до сих пор не решен...
Автор: Forslay
Дата сообщения: 11.09.2008 09:44
Спасибо, но я так нечего и не нашёл. Возможно Вы бы могли дать прямые ссылки на скачку... У меня просто трафик дорогой, искать что либо дорогое удовольствие. Или дайте ссылку на страницу, откуда можно загрузить скины. Заранее большое спасибо.
Автор: Artem_Butenko
Дата сообщения: 11.09.2008 10:11
Forslay - сейчас никаких ссылок дать не могу, у самого проблемы с интернетом, в моем "захолустье" нормальная связь появится не скоро (даже это сообщение пишу на мобилке). Но, попробуйте поискать прямые ссылки на их форуме Download Master'om или просканировать форум Teleport Ultra (на наличие архивов).
Автор: ReeV
Дата сообщения: 11.09.2008 12:40
Все привет, вопрос у меня может кто делал?
К примеру у нас есть папка дистрибьютива.
Так есть папки
data\
music\
sounds\
gamedata\
saves\
buffer\

Так вот как мне сделать что бы во время сборки "билда", не добавлялись файлы в билд
из buffer\*.tmp (а другие кроме tmp добавлялись и сам папка).
Перелопатил точно пол форума.. но ни фига не нашёл ...
Плиз жду вариантов. думаю у кого то была подобная ситуация.
Автор: SotM
Дата сообщения: 11.09.2008 15:58
ReeV
А чо, на время сборки разве нельзя переместить эту папку во временное место?
Просто странная какая-то проблема.
Автор: stouker
Дата сообщения: 11.09.2008 18:12
Как сделать такой инсталлер, чтобы при запуске появилось только окно со статус баром и по завершении установки, окно с благополучным завершением инсталла ?
Автор: serg_aka_lain
Дата сообщения: 11.09.2008 19:20
ReeV


Цитата:
Так вот как мне сделать что бы во время сборки "билда", не добавлялись файлы в билд
из buffer\*.tmp (а другие кроме tmp добавлялись и сам папка).


Source: "buffer\*"; DestDir: "{app}\buffer"; Excludes: "*.tmp*"; Flags: ignoreversion recursesubdirs createallsubdirs;

Автор: SotM
Дата сообщения: 11.09.2008 22:45
stouker
А зачем тебе тогда Inno? Воспользуйся WinRAR'ом и всё.
Автор: ReeV
Дата сообщения: 12.09.2008 10:24
SotM
Нет, там есть нужные файлы.
serg_aka_lain
Спасибо, все получилось.
Автор: An4eus
Дата сообщения: 13.09.2008 12:29
Народ,
помогите пожалуйста с постом. Очень актуально!
Автор: serg_aka_lain
Дата сообщения: 13.09.2008 18:37
An4eus


Цитата:
в истале выводите ещё низпопающее меню, а именно: полная, компактная, выборочная установка!
Как это убрать?


[more=Косметически примерно так …]

[Components]
Name: "N1"; Description: "Рабочая база"; Flags: exclusive;
Name: "N2"; Description: "Демо база"; Flags: exclusive;


[Code]

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + MemoDirInfo + NewLine + NewLine;
S := S + MemoGroupInfo + NewLine + NewLine;
S := S + MemoComponentsInfo + NewLine + NewLine;
S := S + NewLine + NewLine;
Result := S;
end;


procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible := False;
WizardForm.ComponentsList.Color := clBtnFace;
WizardForm.ComponentsList.BorderStyle := ecLowerCase;
end;

[/more]
Автор: Diawer
Дата сообщения: 13.09.2008 18:47
Как сделать (ДОБАВИТЬ), в
if DirExists(ExpandConstant('{userappdata}\My Program 1')) then

проверка на присутствие папки была My Program 1 ИЛИ My Program 2 ИЛИ My Program 3,
то есть сообщение на удаление появлялось если КАКАЯ-НИБУТЬ из My Program 1,2,3 найдена.

[Code_]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usPostUninstall then
begin
if DirExists(ExpandConstant('{userappdata}\My Program 1')) then
begin
if MsgBox('Удалить все настройки и сохраненные?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{userappdata}\My Program 1'), True, True, True);
end;
end;
end;
end;
Автор: Chanka
Дата сообщения: 13.09.2008 19:06
Diawer,

[more][Code_]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usPostUninstall then
begin
if DirExists(ExpandConstant('{userappdata}\My Program 1')) or DirExists (ExpandConstant('{userappdata}\My Program 2')) or DirExists (ExpandConstant('{userappdata}\My Program 3')) then
begin
if MsgBox('Удалить все настройки и сохраненные?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{userappdata}\My Program 1'), True, True, True);
end;
end;
end;
end;[/more]
Автор: Diawer
Дата сообщения: 13.09.2008 19:14
Chanka, спасибо сейчас попробую.
Автор: An4eus
Дата сообщения: 13.09.2008 19:53
serg_aka_lain
зачем вообще нужна функция function UpdateReadyMemo(...) ???
у меня и без неё заработало!

А что по поводу других вопросов?
P.s. как в ф-ии NextButtonClick(...) обратиться к выбранным компонентам?
Автор: serg_aka_lain
Дата сообщения: 13.09.2008 20:47
An4eus

Цитата:
зачем вообще нужна функция function UpdateReadyMemo(...) ???


- Нужна, если в секции Setup (DisableReadyPage=False или DisableReadyMemo=False),
если ReadyPage отключена, то ненужна.


Цитата:
как в ф-ии NextButtonClick(...) обратиться к выбранным компонентам?


- function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpSelectComponents then
begin
if IsComponentSelected('N1') then
.............
Автор: Diawer
Дата сообщения: 13.09.2008 21:11
Подскажите пожалуйста, как вынести "Name: usa" из секции "[Tasks]" на отдельну страницу и что бы осталась связь с "[Registry]"?

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: usa; Description: Ассоциация файлов; GroupDescription: Связать файлы с My Program; Flags: unchecked

[Registry]
Root: HKLM; Subkey: SOFTWARE\Classes\.usa; ValueType: string; ValueName: ; ValueData: My Program; Flags: uninsdeletevalue; Tasks: usa
Root: HKLM; Subkey: SOFTWARE\Classes\My Program\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\My Program.exe,0; Flags: uninsdeletevalue; Tasks: usa
Root: HKLM; Subkey: SOFTWARE\Classes\My Program\shell\open\command; ValueType: string; ValueName: ; ValueData: {app}\My Program.exe %1; Flags: uninsdeletevalue; Tasks: usa
Автор: stNeko
Дата сообщения: 14.09.2008 07:09
Подскажите, как реализовать показ Splash-заставки в формате jpeg через isxbb.dll?
Я блондинка (:
Автор: adamov3
Дата сообщения: 14.09.2008 13:53
Люди, подскажите как из MainForm убрать все надписи?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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