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

Компьютерный форум 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

 

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


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

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


kotyarko@fb, Чтобы не быть голословным решил скинуть пример (пришлось всё слепить в одну папку для удобства)

Выкладываю архив Скрипт.zip с набором файлов для примера (для компиляции использую расширенную версию Ansi от restools с препроцессором)

17 и 18 строки:

//#include "Soft\ISS\Code\5_Слайдшоу_IW4_DS3_CPC2.iss" ;;;; IW4 DS3 CPC2 --> изначальный вариант (работает, но приходится вручную править список файлов в зависимости от их количества)
#include "Soft\ISS\Code\6_Слайдшоу_IW4_DS3_CPC2.iss" ;;;; IW4 DS3 CPC2 --> вариант, предложенный El Sanchez (тут я не могу разобраться с параметром i - отсюда, видимо, и возникают ошибки).

Последний раз редактировалось palsn2000, 29-10-2015 в 22:26.


Отправлено: 16:01, 29-10-2015 | #1021



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

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


Аватара для kotyarko@fb

Старожил


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

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


Изображения
Тип файла: png 29.10.png
(70.1 Kb, 13 просмотров)

palsn2000, "Soft\ISS\Code\6_Слайдшоу_IW4_DS3_CPC2.iss": в процедуре CurStepChanged не закрыты операторные скобки (не хватает одного end).

Работоспособность скрипта проверить не удалось, скрин прикреплён.

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

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Последний раз редактировалось kotyarko@fb, 29-10-2015 в 21:15.

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

Отправлено: 21:10, 29-10-2015 | #1022


Аватара для nik1967

Старожил


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

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


palsn2000, end; пропустил в 6_Слайдшоу_IW4_DS3_CPC2.iss.
читать дальше »
Код: Выделить весь код
[Files]                                       
  ; Файлы заставки
Source: SlideShou\*; DestDir: {tmp}; Flags: dontcopy deleteafterinstall noencryption nocompression;
Source: Soft\ISS\Resource\isgsg_0.6.0.69.dll; DestDir: {tmp}; DestName: isgsg.dll; Flags: dontcopy deleteafterinstall noencryption nocompression overwritereadonly

[Code]
//Слайд шоу
var
I : Integer;

const
  Indent=25;

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 ssAddImage(FileName:PAnsiChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

procedure InitializeWizard4();
begin
  ssInitialize(GetWindowLong(MainForm.Handle,-8),8,False,1,$FF000000);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep=ssInstall then begin
try
  while True do
  begin
    ExtractTemporaryFile(Format('Screen (%d).jpg', [i + 1]));
    ssAddImage(ExpandConstant(Format('{tmp}\Screen (%d).jpg', [i + 1])));
    i := i + 1;
  end;
except {no exception}
finally
  if i > 0 then
    ssStartShow;
end;
  if CurStep=ssPostInstall then ssStopShow;
end;
end;

procedure CurPageChanged2(CurPageID: Integer);
begin
  if CurPageID=wpInstalling then begin
    WizardForm.MainPanel.Visible:=False;
    WizardForm.Bevel1.Visible:=False;
    WizardForm.Width:=ScaleX(395);
    WizardForm.Height:=ScaleY(142);
    WizardForm.Left:=ScaleX(GetSystemMetrics(0)-WizardForm.Width-Indent);
    WizardForm.Top:=ScaleY(GetSystemMetrics(1)-WizardForm.Height-Indent);
    WizardForm.InnerNotebook.Left:=ScaleX(10);
    WizardForm.InnerNotebook.Top:=ScaleY(10);
    WizardForm.InnerNotebook.Width:=ScaleX(370);
    WizardForm.StatusLabel.Left:=ScaleX(0);
    WizardForm.StatusLabel.Top:=ScaleY(0);
    WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.FileNameLabel.Left:=ScaleX(0);
    WizardForm.FileNameLabel.Top:=ScaleY(20);
    WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.ProgressGauge.Top:=ScaleY(40);
    WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.CancelButton.Left:=ScaleX(154);
    WizardForm.CancelButton.Top:=ScaleY(80);
  end;
  if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then begin
    if WizardForm.Width<>502 then begin
      WizardForm.Visible:=False;
      WizardForm.Width:=ScaleX(502);
      WizardForm.Height:=ScaleY(392);
      WizardForm.Left:=(GetSystemMetrics(0)-WizardForm.Width) div 2;
      WizardForm.Top:=(GetSystemMetrics(1)-WizardForm.Height) div 2;
      WizardForm.MainPanel.Visible:=True;
      WizardForm.Bevel1.Visible:=True;
      WizardForm.InnerNotebook.Left:=ScaleX(40);
      WizardForm.InnerNotebook.Top:=ScaleY(72);
      WizardForm.InnerNotebook.Width:=ScaleX(417);
      WizardForm.Visible:=True;
    end;
  end;
end;

procedure DeinitializeSetup3();
begin
  ssDeInitialize;
end;

С помощью какого тэга сделать код inno разноцветным?
Хе, опоздал. Ну и ладно, пусть будет. Я кстати тоже замаялся J:\ отрезать. Кстати, папка в temp не удаляется - остаётся Screen (3).jpg

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 29-10-2015 в 22:47.

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

Отправлено: 21:19, 29-10-2015 | #1023


Аватара для kotyarko@fb

Старожил


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

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


Цитата nik1967:
С помощью какого тэга сделать код inno разноцветным? »
Глобальный переключатель находится в меню Tools>Editor Options...>Options>Use syntax highlighting.
Конкретно цвета в: Tools>Editor Options...>Script colors \ [code] colors.

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 21:34, 29-10-2015 | #1024


Аватара для kotyarko@fb

Старожил


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

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


Цитата nik1967:
да я про местный форум интересовался. Как здесь это сделать. »
Как и везде, только форматом bb-кодов: [*code][/code] (без "*").

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 22:08, 29-10-2015 | #1025


Аватара для Dodakaedr

Ветеран


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

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


nik1967,
Скрытый текст
;#define Video
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
WizardImageFile=Fon.bmp
OutputBaseFilename=2

[Files]
Source: compiler:Dll Pack\IsPicture_for_all.dll; Flags: dontcopy
Source: Fon.bmp; Flags: dontcopy
#ifdef Video
Source: XVID\fon.avi; Flags: dontcopy
#endif


[code]
//-----------------------------------------
procedure Initialize(AhWnd,BhWnd:hWnd);external 'Initialize@{tmp}\IsPicture_for_all.dll stdcall delayload';
// Здесь указываем хендлы окон, на данный момент, лучше пока указывать
// WizardForm.Handle - первым и MainForm.Handle вторым.
//-----------------------------------------
procedure XvidVideo(fn:String;Seth:string);external 'XvidVideo@{tmp}\IsPicture_for_all.dll stdcall delayload';
// Эта процедура загружает фоновое avi-видео.
// Seth - задаем координаты через пробел в одинарных кавычках
// пример: XvidVideo(ExpandConstant('{tmp}\fon.avi'), '351 201 236 132');
//-----------------------------------------
procedure Deinitialize;external 'Deinitialize@{tmp}\IsPicture_for_all.dll stdcall delayload';
// отменяет свзывание форм между собой, выгружает видео.

//-----------------------------------------
function NewFont(Height:Integer;thickness,italic,underline,strikeout:DWORD;name:String):hWnd;external 'NewFont@{tmp}\IsPicture_for_all.dll stdcall delayload';
// Создает шрифты для замены стандартных. Необходима для борьбя с артефактами сглаживания.
// Height, // высота шрифта
// thickness, // насыщенность шрифта
// italic, // курсив
// underline, // Подчеркнутый
// strikeout, // Зачеркнутый
// name // имя шрифта
//-----------------------------------------
procedure SplashWnd(FileName:PAnsiChar;Time,width,height:Integer);external 'SplashWnd@{tmp}\IsPicture_for_all.dll stdcall delayload';
// Создает Splash-заставку
// Прозрачность, пока, не поддерживается
// FileName, // имя файла
// Time, // скорость появления в миллисекундах
// width, // ширина
// height, // высота
procedure EndSplash(Time1,Time2:Integer);external 'EndSplash@{tmp}\IsPicture_for_all.dll stdcall delayload';
// Закрываем Splash-заставку
// Time1, // выжидание до закрытия в миллисекундах
// Time, // скорость закрытия в миллисекундах
//-----------------------------------------
//-----------------------------------------


Скрытый текст

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 22:20, 29-10-2015 | #1026


Аватара для Dodakaedr

Ветеран


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

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


nik1967, расширенная от restools или вручную "все делать"
Цитата nik1967:
Но здесь на форуме явно какой-то свой тэг есть. »
Ссылочка Теги форума над полем комментария (быстрый ответ)

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 29-10-2015 в 22:31.


Отправлено: 22:25, 29-10-2015 | #1027


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


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

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


Вложения
Тип файла: zip Скрипт.zip
(806.2 Kb, 5 просмотров)

kotyarko@fb, извините, за пути к файлам с буквой диска - основной скрипт исправил, а про блоки кода, подхватываемые препроцессором забыл.
J:\Soft\ISS\Resource\btnimage.bmp -- > это в данном случае должно было быть Soft\ISS\Resource\btnimage.bmp

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

Отправлено: 22:27, 29-10-2015 | #1028


SHVtYW4=


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

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


nik1967, "Правая кнопка мыши » Копировать как UBB код."
Данный пункт доступен на уровне расширенной версии Inno.

Цитата Dodakaedr:
»
Только для начала нужно сделать следующее:
"Инструменты » Настройки редактора » Копирование текста"
Поставьте флажок напротив "Использовать тег [code]"
Для того, чтоб вместо тега цитаты [quote][/quote]
Цитата:
[Setup]
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: C:\Program Files\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
был задействован тег [code][/code]
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: C:\Program Files\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
Далее снимите флажки с "Вставлять имя файла" и "Вставлять время создания"

Для того, чтоб исключить из заголовка "Имя_скрипта.iss, Дата и время".
Цитата Имя_скрипта.iss, Дата и время:
[Setup]
AppName=My Program
т.е
Цитата:
[Setup]
AppName=My Program

"имя.iss, дата и время" допустимо для тега [quote][/quote]
Цитата Inno Setup Script.iss,29.10.2015 23:15:35 :
[Setup]
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
но не для тега [code][/code] т.к получится нелепая обработка.
При добавлении в сообщение вы сами заметите:
[code= Inno Setup Script.iss,29.10.2015 23:15:35 ][Setup]
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[/code]




Далее:
В одном случае по желанию: Т.е дополнительная обработка, а именно:
В начале удаление [font=Courier New][color=#000000], в конце удаление [/color][/font].
В первом случае шрифт в теге [code][/code] ненужен: По-умолчанию используется шрифт HTML тега <pre></pre>
Во втором случае цвет (чёрный), цвет без тега чёрный.
В другом случае [Сode] не жирный как в редакторе Inno, либо вовсе повторяет код форума.
В лучшем случае если в тег [Сode] будет добавлен дополнительный тег [color=none][/color], т.е: [color=none][[/color]Code], иначе самостоятельное указание [Co[u][/u]de] чтоб не сливался тег [code][/code] c секцией [code] из скрипта.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:27, 30-10-2015 | #1029


Аватара для habib2302

Ветеран


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

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


Доброе время суток. Как сделать, если отсутствует файл с импортируемыми настройками инсталлятор не выполнял команду в разделе Run.
Код: Выделить весь код
[Run]
Filename: {app}\USBSRService.exe; Parameters: "/loadsettings {src}\Settings.opt"; Flags: RunHidden;

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 10:07, 01-11-2015 | #1030



Компьютерный форум 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




 
Переход