Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

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

Share this post


Link to post

Short link
Share on other sites

Иннот, поиск параметра->замена значения реализуется. Я так у себя в паке конфиг XVM и XML-ки настроек модов меняю.

 

Иннот, вернусь к вопросу по логу установки. Самый просто способ - выудить лог установки самого Inno Setup:

 

 

 

[Setup]
SetupLogging=yes
 
[**********************Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
logfilepathname, logfilename, newfilepathname: string;
begin
    logfilepathname:=expandconstant('{log}');
    logfilename:=ExtractFileName(logfilepathname);
    newfilepathname:=expandconstant('{app}\') + logfilename;
If CurStep=ssDone then
  begin
     filecopy(logfilepathname, newfilepathname, false);
  end;
end;
Вид конечно малоприятный, но всё же. Попробую завтра написать кастомный код записи выбираемых компонентов.

 


Простенькая проверка времени запуска инсталлятора. Проверяет системную дату и сверяет её с заданной в коде. Если дата больше указанной, то выдаётся предложение о проверке обновлений (по ссылке переходит). Если юзер отвечает "Нет", то установка продолжается.

 

#define DownloadUrl "Моя_ссылка";
#define ExpiryDate "20140402"; //Дата в формате год-месяц-день

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.

[****************Code]
function InitializeSetup(): Boolean;
var
  ResultCode: Integer;
begin
  Result:=CompareStr(GetDateTimeString('yyyymmdd', #0,#0), '{#ExpiryDate}') <= 0;
If not Result then
  begin
    If MsgBox('Внимание!' #13#13 'С момента создания данной версии прошло больше 2-х недель.' #10#10 'Желаете проверить наличие обновлений?', mbError, MB_YESNO)=IDYES then
    begin
      ShellExec('', '{#DownloadUrl}', '' , '', SW_SHOW, ewNoWait, ResultCode);
      Exit;
    end
    else
      Result:=True;
  end;
end;
Edited by AtotIK
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

А кто нить работал в программе Advanced Installer 11.0?

Если такие есть поделитесь хорошим скриптом для инсталятора.

Share this post


Link to post

Short link
Share on other sites

inno setup менять json конфиг умеет?

:) А я то думаю... чего это Андрей так это фичей заинтересовался :)

Share this post


Link to post

Short link
Share on other sites

А поддерживает ли Inno работу с динамическими (.dll) и не очень (.lib) библиотеками?

 

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

readme уже есть в архиве, поэтому не буду переписывать его, а просто приведу особенности dll:

 

 - Дата со временем добавляется автоматически. ( в формате dd/mm/yy hh:mm:ss)

 - Если пути и/или файла не существует, будет создан новый путь/файл (нужное подчеркнуть)

 - Если файл уже существует, то он не будет перезаписан, а будет продолжен.

 

Как это подключить к inno я не знаю, поэтому жду помощи от других.

 

logwriter.7z

Edited by Azbuka_slovensko

Share this post


Link to post

Short link
Share on other sites

Сделал лог установки. Пока только для компонентов. Выглядит в итоге всё вот так:

Modpack by Amway921 for v0.9.0 - Update 26 Install Log - 07-04-2014 21-56-05
Component: XVM (eXtended Visualization Mod)
Component: Бой:
Component: Панель повреждений:
Component: Standart Damage Panel
Component: Прицелы:
Component: Минималистичный прицел с расширенной информацией
Component: Zoom / NoScroll:
Component: Zoom: командирская камера
Component: Отключить эффекты динамической камеры
Component: Отключить плавное изменение высоты камеры над танком
Component: Углы горизонтальной наводки для Арт-САУ и Пт-САУ
Component: Удалить затемнение в снайперском прицеле
Component: Улучшенный индикатор количества снарядов
Component: Отключить дрожание изображения при получении урона
Component: Время перезарядки орудия в чат по нажатию ''С''
Component: Ангар:
Component: Часы в ангаре
Component: Цветные сообщения об итогах боя
Component: Подробная статистика за сессию на сервере
Component: Запоминание последнего сервера при перезапуске клиента
Component: Разное:
Component: Удалить дым из выхлопной трубы
Component: Удалить дым от уничтоженных танков
Component: Удалить дым и пламя от выстрела
Component: Удалить эффект движения деревьев

Подшаманю ещё, нужно добавить функционал.

Share this post


Link to post

Short link
Share on other sites

Azbuka_slovensko, работать с dll'кими Inno Setup может, подключается всё в секции [ Code ].

Смори в примере: Inno DescCtrl v1.0.zip

 

Для компонентов делается в общем-то не так уж и сложно, а вот выудить имена файлов мне пока не удалось, голову уже сломал.

 

[*************Code]
function CreateLog(): Boolean;
var
  I: Integer;
  FileName, DateTime: String;
begin
  Result:=True;
  DateTime:=GetDateTimeString('dd/mm/yyyy hh:nn:ss', '-', '-');
  FileName:=ExpandConstant('{app}\Install Log (' + DateTime + ').log');
  SaveStringToFile(FileName, '"Modpack от AtotIK для v0.9.0 - Update 68" - Install Log - ' + DateTime + #13#10 + #13#10 + 'Выбранные компоненты:' + #13#10, True);
    For I:=0 to WizardForm.ComponentsList.Items.Count - 1 do
      If WizardForm.ComponentsList.Checked[I] then
      begin
         SaveStringToFile(FileName, '... ' + WizardForm.ComponentsList.ItemCaption[I] + #13#10, True);
      end;
end;
 
procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssInstall then
begin
      CreateLog();
end;
end;
Ещё можно получить номер устанавливаемого компонента, для этого необходимо перевести I (число) в строку (SaveStringToFile сохраняет только текст), но толку от этого мало, т.к. номера компонентов начинаются с 0, заносятся в лог не в виде '0 1 2 3', а по номеру компонента в инсталляторе '0 4 6 10'. Edited by AtotIK
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Вроде все странички перечитал,или не нашел,или видел но не понял.Я в этом деле новичок,решил для себя попробовать вот только не могу понять как избежать такой ситуации как на скрине,чтоб выбиралась только одна позиция3IHW9nfW.png

Share this post


Link to post

Short link
Share on other sites

@Justa_Causa, для трёх компонентов, которые идут после "Прицелы:" нужно дописать флаги.

Например:

Name: P; Description: Прицелы:;
Name: P\PDM; Description: Прицел Дамоклов меч.; Flags: exclusive
Name: P\MM; Description: Прицел MeltpyMaps.; Flags: exclusive
Name: P\KO; Description: Прицел как у Кирилла Орешкина.; Flags: exclusive
Edited by Kotyarko_O
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

@Justa_Causa, для трёх компонентов, которые идут после "Прицелы:" нужно дописать флаги.

Например:

Name: P; Description: Прицелы:;
Name: P\PDM; Description: Прицел Дамоклов меч.; Flags: exclusive
Name: P\MM; Description: Прицел MeltpyMaps.; Flags: exclusive
Name: P\KO; Description: Прицел как у Кирилла Орешкина.; Flags: exclusive

Спасибо за помощь,плюсик Вам)))

DirExistsWarning=no  

не понял куда вот это вставить чтоб он не писал что папка уже имеется,и как отключить окошко выбора языка перед установкой?

Share this post


Link to post

Short link
Share on other sites
DirExistsWarning=no

не понял куда вот это вставить чтоб он не писал что папка уже имеется

Куда угодно в секции [setup]

 

как отключить окошко выбора языка перед установкой?

Удали секцию [Language] и всё, что есть в ней.

Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Justa_Causa удаление целой секции слишком радикально. попробуйте просто закомментировать ненужный язык знаком ";"

;Name: "eng"; MessagesFile: "compiler:Default.isl"
 
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Justa_Causa удаление целой секции слишком радикально. попробуйте просто закомментировать ненужный язык знаком ";"

;Name: "eng"; MessagesFile: "compiler:Default.isl"
 

И Вам большое спасибо,сегодня поэкспериментирую с картинками,куча вопросов будет)

Share this post


Link to post

Short link
Share on other sites

Прошу помощи в тестировании. Нужны мнения и предложения по дизайну. Супер-пупер-перделки не предлагать, всё и так в максимально выдержанном стиле сделано. На описки не обращайте внимания, описание набросал за 5 минут.

http://rghost.ru/53991062

Share this post


Link to post

Short link
Share on other sites

 

 

Прошу помощи в тестировании. Нужны мнения и предложения по дизайну. Супер-пупер-перделки не предлагать, всё и так в максимально выдержанном стиле сделано. На описки не обращайте внимания, описание набросал за 5 минут.
Классно. Не плохо и со вкусом. Разве что я бы на WizardSmallImage тоже добавил бы лого амвея, с правой стороны; и сделал чуток выше (это имхо. мелочь и не критично).

Share this post


Link to post

Short link
Share on other sites

Прошу помощи в тестировании. Нужны мнения и предложения по дизайну. Супер-пупер-перделки не предлагать, всё и так в максимально выдержанном стиле сделано. На описки не обращайте внимания, описание набросал за 5 минут.

http://rghost.ru/53991062

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

видео записать не получилось, так-как захватчик мой не поддерживает нужного количества кадров в секунду.

а в общем и целом, на мой взгляд довольно годно. ничего лишнего.

Edited by evil_rrock

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...