Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Ответить
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 9]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для boss911

Alien


Сообщения: 4262
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата pzadrotov@vk:
Все установочные файлы находятся в папках, рядом с инсталятором. »
Все установочные файлы с папками, что рядом с инсталлятором, которые нужно упаковать, положите, например, в одну папку "AOE_Distr".

Цитата pzadrotov@vk:
Чтобы при запуске, он распаковывал их во временную папку, а после окончания работы инсталятора, удалял их. »
Код: Выделить весь код
[Setup]
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

[Files]
Source: AOE_Distr\*; DestDir: {tmp}; Flags: recursesubdirs createallsubdirs
И везде в своем скрипте замените {src} на {tmp}.

Только учтите, в вашем скрипте отключен прогресс распаковки файлов, если на их распаковку (во временную папку) нужно время (большой объем), то визуально это будет смотреться, как будто ничего не происходит.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:55, 12-09-2020 | #661



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата boss911:
в вашем скрипте отключен прогресс распаковки файлов »
файлы не большие, но прогресс распаковки все же включил, спасибо. Но отключил полностью сжатие, так как на выходе получается практически одинаковый размер инсталлятора. А время на распаковку существенное, по сравнению с копированием.
Спасибо за подсказку, все получилось, все устанавливается. Но есть маленькое НО. Код, который должен запускать в самом начале главный сетап, почему то не срабатывает. Пришлось его закомментировать и добавить запуск в секцию [run]. В общем вот такой скрипт получился:
Скрытый текст
Код: Выделить весь код
#define MyAppName "AOE"
#define MyAppVersion "AOE"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVersion}
CreateAppDir=no
OutputDir=C:\Users\AspireM3400\Desktop
OutputBaseFilename=AOE Setup
Compression=none
;SolidCompression=yes
WizardStyle=modern
Uninstallable=no

[code]
procedure InitializeWizard(); 
begin 
//WizardForm.FilenameLabel.Hide //Прячем извлекаемые файлы 
WizardForm.ProgressGauge.Hide //Прячем прогресс-бар 
end; 

//function InitializeSetup(): boolean;
//var
//   ResultCode: integer;
//begin
//    if Exec(ExpandConstant('{tmp}\RU\setup.exe'), '', '', SW_SHOW,
//      ewWaitUntilTerminated, ResultCode) then
//   begin
//   end
//   else begin
//   end;
//   Result := True;
//end;

[Files]
Source: "C:\Users\AspireM3400\Desktop\AOE1\*"; DestDir: "{tmp}"; Flags: ignoreversion recursesubdirs createallsubdirs;

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

[Run]
Filename: "{tmp}\RU\setup.exe";
Filename: "{tmp}\RUROR\setup.exe"; Tasks: "AOE_ROR";
Filename: "{tmp}\UPatch HD Setup.exe"; Tasks: "AOE_UP";

[Tasks]
Name: "AOE_ROR"; Description: "AOE ROR(RU)";
 Name: "AOE_UP"; Description: "UPatch";

Слегка сбита последовательность установки, то есть сначала выбираются доп.компоненты, а потом начинает установка главной программы, затем установка допов.

Последний раз редактировалось pzadrotov@vk, 12-09-2020 в 13:45.


Отправлено: 12:54, 12-09-2020 | #662


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Можно ли делать DiskSpanning для отдельных файлов, т.е. паковать в .bin не обязательные для скачивания конкретные файлы типа озвучки?

Отправлено: 15:30, 12-09-2020 | #663


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


решил копнуть глубже и новая заморочка с удалением:
По умолчанию при установке создается унинстал, который удаляет приложение, но не удаляет "мусор", который оставляет приложение в процессе работы и саму папку. Как сделать, чтоб при удалении был запрос типа: удалять все полностью, или оставить папку с мусором?

Отправлено: 22:09, 12-09-2020 | #664


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


pzadrotov@vk
Цитата:
Слегка сбита последовательность установки, то есть сначала выбираются доп.компоненты, а потом начинает установка главной программы, затем установка допов.
Скрипт, во время компиляции читается сверху вниз, и устанавливается в каком порядке находятся папки или файлы в секции [Files]. Размести папки или файлы в той последовательности в секции [Files] в какой они должны устанавливаться.

Цитата:
По умолчанию при установке создается унинстал, который удаляет приложение, но не удаляет "мусор", который оставляет приложение в процессе работы и саму папку.
Деинсталлятор удаляет только то что прописано в скрипте. Но так-как почти каждая программа при первом запуске создает в разных директориях свои папки для работы, то для таких целей (удаление мусора как вы выразились) в Inno Setup есть секция [UninstallDelete],
в которой прописываются все "мусорные" папки с адресами к ним.

Как то так:

[UninstallDelete]

Type: files; Name: "{win}\MYPROG.INI" = Параметр Name указывает имя отдельного файла или маску
Type: filesandordirs; Name: ""{pf}\4KDownload\4kvideodownloader"; = Функции те же, что и у files за исключением, что также может задавать имя папки, в этом случае удаляются все ее файлы и подпапки.
Type: dirifempty; Name: "{localappdata}\4kdownload.com" = При использовании этого типа параметр Name должен задавать папку, но не содержать масок. Папка будет удалена только если она пустая.

Цитата:
Как сделать, чтоб при удалении был запрос типа: удалять все полностью, или оставить папку с мусором?
В этом случае вам придется создать свою страницу перед страницей с прогресс баром деинсталлятора, и разместить на ней свои компоненты (чекбоксы, радиобатоны, лейблы), чтобы у пользователя был выбор что делать.
И второй вариант разместить свои компоненты непосредственно на странице с прогресс баром деинсталлятора, в данном случае удалятся будет в реальном времени, то есть только чекбокс отметили сразу все удалилось. При нажатии "Далее" начнется удаление основной папки программы.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:27, 14-09-2020 | #665


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


ZVSRus, boss911, спасибо, очень помогли, все работает и удаляется правильно.
Возможно ли еще как то убрать последнее окно оповещения "Завершение установки" с кнопочкой <Завершить>? Потому что последний файл инсталятора, после установки автоматически запускает приложение, которое порой(не всегда), закрывает окно "Завершение установки". В итоге это окно продолжает висеть, на заднем фоне.
Постарался расписать подробно.


Да, еще вот что. Я сделал запись в реестр, чтоб инсталятор делал проверку на наличие установленной программы и в успешном случае, не устанавливал повторно.
Писал по стандарту Root: HKLM.... и далеее, но посмотрел в реестр, почему то запись идетне в HKEY_LOCAL_MACHINE, а в HKEY_CURRENT_USER. Можете сказать почему так?

Последний раз редактировалось pzadrotov@vk, 15-09-2020 в 12:46.


Отправлено: 12:34, 15-09-2020 | #666


Аватара для Flix

Пользователь


Сообщения: 87
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата pzadrotov@vk:
Возможно ли еще как то убрать последнее окно оповещения "Завершение установки" с кнопочкой <Завершить>? »
Код: Выделить весь код
[Setup]
DisableFinishedPage=yes
Цитата:
Я сделал запись в реестр, чтоб инсталятор делал проверку на наличие установленной программы и в успешном случае, не устанавливал повторно.
Писал по стандарту Root: HKLM.... и далеее, но посмотрел в реестр, почему то запись идетне в HKEY_LOCAL_MACHINE, а в HKEY_CURRENT_USER. Можете сказать почему так?
Проверьте внимательно свой сценарий ещё раз, что и куда вы пишете. Сам инсталлятор не занимается самодеятельностью.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:28, 15-09-2020 | #667


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


За "завершение установки", спасибо, не показывается больше.
Цитата Flix:
Проверьте внимательно свой сценарий ещё раз, что и куда вы пишете. Сам инсталлятор не занимается самодеятельностью. »
Но это совсем не мой сценарий, я в него даже не лез, просто декомпилировал установочный файл, чтоб посмотреть как идет запись в реестр, чтоб сделать проверку на наличие установки.

Более того, я сделал проверку на наличие установки
Код: Выделить весь код
[code]
function InitializeSetup(): Boolean;
begin
  Result:= True;
  if RegValueExists(HKLM, 'SOFTWARE\Microsoft\Games\Age of Empires\1.00', 'CDPath') then begin
    MsgBox('Age of Empires уже установлена! Установка будет прекращена', mbConfirmation, MB_OK);
    Result:= False;
  end;
end;
И что интересно, проверка работает правильно, но в реестре по данной ветке нет записей, зато есть в HKEY_CURRENT_USER по этому же пути.

Отправлено: 14:27, 15-09-2020 | #668


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


pzadrotov@vk
Цитата:
Я сделал запись в реестр, чтоб инсталятор делал проверку на наличие установленной программы и в успешном случае, не устанавливал повторно.
Ну чтобы вам что-то подсказать, нужно видеть что вы пишете и где, хотя бы кусок скрипта.
Второе, может сделали запись не в реестр, а в скрипт прописали какой то код чтобы шла проверка на наличие записей в реестре, и далее устанавливать программу или нет.
И еще, если вы доводите до ума тот скрипт что выкладывали выше (пост #676) где у вас в секции [RUN] идет запуск 3 отдельных сетапников, а сам ваш инстал пустой, как вы описывали ранее, тогда просто нужно смотреть скрипт, что, куда и как.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Отправлено: 15:08, 15-09-2020 | #669


Аватара для boss911

Alien


Сообщения: 4262
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата pzadrotov@vk:
Писал по стандарту Root: HKLM.... и далеее »
Покажите эту строку из [Registry] полностью. Если установка проводится на x64 OS, реестр смотрите и в \SOFTWARE\Wow6432Node.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:11, 15-09-2020 | #670



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход