|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1269 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать vk_k14m@vk, под if'ом должна быть логическая переменная
|
------- Отправлено: 22:05, 30-09-2017 | #2141 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
|
|
------- Последний раз редактировалось vk_k14m@vk, 30-09-2017 в 23:14. Отправлено: 22:20, 30-09-2017 | #2142 |
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата pollipen:
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 Цвет полотна |
|
Последний раз редактировалось Nordek, 01-10-2017 в 02:10. Отправлено: 22:59, 30-09-2017 | #2143 |
Старожил Сообщения: 342
|
Профиль | Отправить 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 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата vk_k14m@vk:
тебе понятно как работают секции Инно, в частности Files? если да - продолжаем, если нет - читай справку в частности по ключевым словам что я тебе давал про порядок установки В ней дисительно расписано нормально если функция Уже_установленное_приложение возвращает True то строчка с Check: Уже_установленное_приложение; Check: Уже_установленное_приложение; Source: сразу_извлекается_и_запускается_этот_файл.exe; DestDir: {tmp}; BeforeInstall: ChangeCaption('Установка этого файла'); AfterInstall: install_this_file; Flags: ignoreversion recursesubdirs createallsubdirs; В строке присутствуют процедуры BeforeInstall и AfterInstall Первая работает перед копированием Source: сразу_извлекается_и_запускается_этот_файл.exe, вторая - после. После копирования файла Source: сразу_извлекается_и_запускается_этот_файл.exe запускается процедура AfterInstall: install_this_file, которая содержит запуск файла сразу_извлекается_и_запускается_этот_файл.exe из папки DestDir: {tmp} Отсюда побочный вывод: если копируется не один файл а папка с набором файлов то AfterInstall: нечто будет запускаться после копирования каждого файла из папки что может как минимум затормозить установку и вызвать непредвиденные последствия ____________ Всё что я расписал есть в справке, легко находится по словам Check, BeforeInstall и AfterInstall |
|
------- Отправлено: 21:32, 02-10-2017 | #2145 |
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
Так что я переименовал 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: ChangeCaption('Установка этого файла') Так что он в этом случае бесполезен. |
||
------- Последний раз редактировалось vk_k14m@vk, 02-10-2017 в 22:31. Отправлено: 22:12, 02-10-2017 | #2146 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
vk_k14m@vk, загрузите себе перевод, поблагодарите коллегу mig73 за выложенное и читайте, читайте, читайте. |
|
Отправлено: 00:05, 03-10-2017 | #2147 |
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Все работает, просто убрал проблемные строчки
Function Already_Installed_Application():boolean; begin if это_приложение_уже_установлено then Result := True else Result := False; end; и пошло как по маслу. Правда теперь то приложение при любой установке запускается. Зато лишней мороки с кодом нет... |
------- Отправлено: 01:07, 03-10-2017 | #2148 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать я то конечно для наглядности сделал русские идентификаторы и по наивности подумал что будет всё ясно, в т.ч что идентификаторы нужно поменять на английские
Цитата vk_k14m@vk:
|
|
------- Отправлено: 07:42, 03-10-2017 | #2149 |
Старожил Сообщения: 291
|
Профиль | Отправить PM | Цитировать Цитата vk_k14m@vk:
|
|
------- Последний раз редактировалось ZVSRus, 03-10-2017 в 14:29. Отправлено: 13:58, 03-10-2017 | #2150 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|