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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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.2.0 [23.09.2014] - Скачать;



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

Скрипты Inno Setup. Помощь и советы [часть 6]
Скрипты Inno Setup. Помощь и советы [часть 7]

Отправлено: 08:52, 02-02-2015

 

Аватара для R.i.m.s.k.y.

Ветеран


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

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


vk_k14m@vk, под if'ом должна быть логическая переменная

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 22:05, 30-09-2017 | #2141



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

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


Аватара для vk_k14m@vk

Старожил


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

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


Цитата R.i.m.s.k.y.:
под if'ом должна быть логическая переменная »
Наверно мне нужно было сразу сказать что я в Inno Setup чуть больше недели, а про Pascal вообще ничего не знаю. К слову как и про программирование в целом. Так что твой ответ мне ничего не говорит...

-------
Взялся отвечать, отвечай до конца!


Последний раз редактировалось vk_k14m@vk, 30-09-2017 в 23:14.


Отправлено: 22:20, 30-09-2017 | #2142


SHVtYW4=


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

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


Цитата pollipen:
что бы одновременно шла установка и показывался splash »
Splash:
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

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

[Files]
Source: "splash.bmp"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "Files\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Code]
procedure ShowSplashScreen(p1:HWND;p2:Ansistring;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard;
begin
  ExtractTemporaryFile('back.bmp');
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\back.bmp',1000,3000,1000,0,255,False,$FFFFFF,10);
end;

//                                                                         1    2    3    4 5   6      7
//  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\back.bmp',1000,3000,1000,0,255,False,$FFFFFF,10);
//1 Время появления в мсек
//2 Время показа в мсек
//3 Время затухания
//4 Минимальная прозрачность  (0-255)
//5 Максимальная прозрачность (0-255)
//6 Вырезать цвет (считать вырезанный цвет прозрачным)
//7 Цвет прозрачности - Указание цвета для прозрачности. По умолчанию "Белый цвет (FFFFFF)". Значения считать справа налево, например красный не FF0000 а 0000FF.
Код: Выделить весь код
                                                                         1    2    3    4 5   6      7
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\back.bmp',1000,3000,1000,0,255,False,$FFFFFF,10);
1 Время появления в мсек
2 Время показа в мсек
3 Время затухания
4 Минимальная прозрачность  (0-255)
5 Максимальная прозрачность (0-255)
6 Вырезать цвет (считать вырезанный цвет прозрачным)
7 Цвет прозрачности - Указание цвета для прозрачности. По умолчанию "Белый цвет (FFFFFF)". Значения считать справа налево, например красный не FF0000 а 0000FF.
Background:
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Files]
Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: back.bmp; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: Files\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Code]
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boolean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';

procedure InitializeWizard;
begin                                                         
  ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,1,$000000ff);
  ExtractTemporaryFile('back.bmp');
  ssSetBkgImage(ExpandConstant('{tmp}')+'\back.bmp');
end;

//                                                 1 2    3  4 5
//  ssInitialize(GetWindowLong(MainForm.Handle,-8),8,True,0,$FF000000);
// 1 Время показа в секундах
// 2 Использование эффекта "Растворение". False - Выкл/True - Вкл
// 3 Метод масштабирования 0 - Не растягивать 1 - Пропорционально 2 - Во весь экран
// 4 Прозрачность полотна
// 5 Цвет полотна
Код: Выделить весь код
                                                  1 2    3  4 5
   ssInitialize(GetWindowLong(MainForm.Handle,-8),8,True,0,$FF000000);
1  Время показа в секундах
2  Использование эффекта "Растворение". False - Выкл/True - Вкл
3  Метод масштабирования 0 - Не растягивать 1 - Пропорционально 2 - Во весь экран
4  Прозрачность полотна
5  Цвет полотна

Последний раз редактировалось Nordek, 01-10-2017 в 02:10.

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

Отправлено: 22:59, 30-09-2017 | #2143


Аватара для vk_k14m@vk

Старожил


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

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


Ответьте кто нибудь, как работает этот код?
Код: Выделить весь код
[Files]
Check: Уже_установленное_приложение; Source: сразу_извлекается_и_запускается_этот_файл.exe; DestDir: {tmp}; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs; 
...
Source: Твои файлы...


[Сode]

procedure install_this_file();
var res:integer; file, path : string;
begin
  file := ExpandConstant('{tmp}\сразу_извлекается_и_запускается_этот_файл.exe'); path := ExpandConstant('{tmp}');
  if FileExists(file) then Exec(file, ' параметры',path,SW_SHOW,ewWaitUntilTerminated,res) else MsgBox('Файл' + ' ' + file + #13#10 + 'не найден', mbInformation, MB_OK);
end;

Function Уже_установленное_приложение():boolean;
begin
 if это_приложение_уже_установлено then Result := True else Result := False;
end;
Что на что там заменять?
AppName=Artificial Academy 2
Приложение которое должно запускаться перед началом установки:
D:\Inno Setup\Installer\0 Delete after install\AA2Decrypt_unpack.bat

-------
Взялся отвечать, отвечай до конца!


Отправлено: 17:13, 02-10-2017 | #2144


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата vk_k14m@vk:
как работает этот код »
замурчательно работает

тебе понятно как работают секции Инно, в частности Files?
если да - продолжаем, если нет - читай справку в частности по ключевым словам что я тебе давал про порядок установки
В ней дисительно расписано нормально

если функция Уже_установленное_приложение возвращает True то строчка с Check: Уже_установленное_приложение;
Код: Выделить весь код
Check: Уже_установленное_приложение; Source: сразу_извлекается_и_запускается_этот_файл.exe; DestDir: {tmp}; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs;
выполняется, если если функция Уже_установленное_приложение возвращает False то строчка пропускается

В строке присутствуют процедуры BeforeInstall и AfterInstall
Первая работает перед копированием Source: сразу_извлекается_и_запускается_этот_файл.exe, вторая - после.
После копирования файла Source: сразу_извлекается_и_запускается_этот_файл.exe запускается процедура AfterInstall: install_this_file, которая содержит запуск файла сразу_извлекается_и_запускается_этот_файл.exe из папки DestDir: {tmp}
Отсюда побочный вывод: если копируется не один файл а папка с набором файлов то AfterInstall: нечто будет запускаться после копирования каждого файла из папки что может как минимум затормозить установку и вызвать непредвиденные последствия

____________

Всё что я расписал есть в справке, легко находится по словам Check, BeforeInstall и AfterInstall

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 21:32, 02-10-2017 | #2145


Аватара для vk_k14m@vk

Старожил


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

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


Цитата R.i.m.s.k.y.:
если функция Уже_установленное_приложение возвращает True »
А если функция возвращает ошибку??? У меня ошибка в этой строчке. По этому я и спрашиваю как она работает. Как она понимает True или не True? Что они проверяет? К тому же Check: Уже_установленное_приложение не компилируется, похоже он не понимает русские символы.

Так что я переименовал Check: Already_Installed_Application;
Потом, инстеллер компилируется. Но потом когда пытаюсь установить свое приложение, выскакивает ошибка в этой строчке

Function Already_Installed_Application():boolean;
begin
if это_приложение_уже_установлено then Result := True else Result := False;
end;

Приложение вообще не устанавливается.

Значение это_приложение_уже_установлено нужно изменять на свое? Там нужно вписывать название приложение которое устанавливает инсталлер? Когда пишу ExpandConstant('{#MyAppName}') тоже ошибка. Как же заставить его работать...

Цитата R.i.m.s.k.y.:
BeforeInstall »
Все что тут делает BeforeInstal так это меняет сообщение при установке
BeforeInstall: ChangeCaption('Установка этого файла')
Так что он в этом случае бесполезен.

-------
Взялся отвечать, отвечай до конца!


Последний раз редактировалось vk_k14m@vk, 02-10-2017 в 22:31.


Отправлено: 22:12, 02-10-2017 | #2146


Ветеран


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

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


Цитата R.i.m.s.k.y.:
тебе понятно как работают секции Инно, в частности Files? »
R.i.m.s.k.y., конечно, не понимает. В принципе не понимает, что нужно делать. Коллега vk_k14m@vk банально пытается компилировать представленную ему ранее болванку скрипта и кода как есть. Изучать справку и язык не хочет/не может.


vk_k14m@vk, загрузите себе перевод, поблагодарите коллегу mig73 за выложенное и читайте, читайте, читайте.

Отправлено: 00:05, 03-10-2017 | #2147


Аватара для vk_k14m@vk

Старожил


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

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


Все работает, просто убрал проблемные строчки

Function Already_Installed_Application():boolean;
begin
if это_приложение_уже_установлено then Result := True else Result := False;
end;

и пошло как по маслу. Правда теперь то приложение при любой установке запускается. Зато лишней мороки с кодом нет...

-------
Взялся отвечать, отвечай до конца!


Отправлено: 01:07, 03-10-2017 | #2148


Аватара для R.i.m.s.k.y.

Ветеран


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

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


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

Цитата vk_k14m@vk:
Все работает, просто убрал проблемные строчки »
и проверки теперь нет

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 07:42, 03-10-2017 | #2149


Аватара для ZVSRus

Старожил


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

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


Цитата vk_k14m@vk:
Правда теперь то приложение при любой установке запускается. Зато лишней мороки с кодом нет...
А какие приложения подразумеваются, и какая требуется проверка, на запуск или на установку, или на то и другое?

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


Последний раз редактировалось ZVSRus, 03-10-2017 в 14:29.


Отправлено: 13:58, 03-10-2017 | #2150



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход