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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 900 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 798 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


R3Pa4eK, Я-ж на руборде написал - искать нужно Вот, на базе этого можно построить то, что тебе нужно. Вот еще.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 20:27, 26-02-2011 | #901



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

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


Аватара для R3Pa4eK

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


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

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


Лександер, угу понял спс!

Отправлено: 20:41, 26-02-2011 | #902


Аватара для Gnom_aka_Lexander

Ветеран


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

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


R3Pa4eK, Единственная беда - идентифицировать инсталлятор - но с этим, я думаю, помогут, у R.i.m.s.k.y. здорово получаются такие вещи.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 20:48, 26-02-2011 | #903


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


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

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


Народ, подскажите есть у кого-нибудь код, который показывает сколько времени прошло при установке и сколько осталось?

-------
Если вам понравился мой совет, то нажмите "Полезное сообщение" :)


Отправлено: 22:12, 26-02-2011 | #904


Аватара для nik1967

Старожил


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

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


actavir,
Не совсем то, но может пригодиться:
Time of installing от Victor_Dobrov
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[_Code]
type TSystemTime = record wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds: Word; end;
var StartTime, Time: TSystemTime; StartFileTime, FileTime: TFileTime; TLabel: TNewStaticText;

function GetLocalTime(var lpSystemTime: TSystemTime): Boolean; external 'GetLocalTime@kernel32.dll stdcall';
function SystemTimeToFileTime(const lpSystemTime: TSystemTime; var lpFileTime: TFileTime): Boolean; external 'SystemTimeToFileTime@kernel32.dll stdcall';
function FileTimeToSystemTime(const lpFileTime: TFileTime; var lpSystemTime: TSystemTime): Boolean; external 'FileTimeToSystemTime@kernel32.dll stdcall';

Function GetWorkTime: String;
Begin
	GetLocalTime(Time)	{время завершения установки}
	SystemTimeToFileTime(Time, FileTime)
	SystemTimeToFileTime(StartTime, StartFileTime)

//	здесь необходимо использовать 64-битовую арифметику ULARGE_INTEGER
	FileTime.dwLowDateTime:= FileTime.dwLowDateTime - StartFileTime.dwLowDateTime
	FileTime.dwHighDateTime:= FileTime.dwHighDateTime - StartFileTime.dwHighDateTime

	FileTimeToSystemTime(FileTime, Time)
    Result:= 'Длительность: ' + IntToStr(Time.wHour) + ' час, ' + IntToStr(Time.wMinute) + ' мин, ' + FloatToStr((Time.wSecond*1000)/1000) + ' сек.'
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
    if CurPageID = wpFinished then TLabel.Caption:= TLabel.Caption + #13#10 + GetWorkTime;
End;

Procedure InitializeWizard;
Begin
    GetLocalTime(StartTime)    {время начала установки}
    TLabel:= TNewStaticText.Create(WizardForm);
    TLabel.Top:= WizardForm.CancelButton.Top;
    TLabel.Left:= WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
    TLabel.Parent:= WizardForm;
    TLabel.Caption:= 'Время старта: ' + IntToStr(StartTime.wHour) + ' час, ' + IntToStr(StartTime.wMinute) + ' мин, ' + FloatToStr((StartTime.wSecond*1000)/1000) + ' сек.' ;
End;

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

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

Отправлено: 22:36, 26-02-2011 | #905


Аватара для Gnom_aka_Lexander

Ветеран


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

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


actavir,
читать дальше »
Код: Выделить весь код
[Setup]
AppName=FreeArc Example
AppVerName=FreeArc Example 3.3 Extreme
DefaultDirName={pf}\FreeArc Example

[Files]
Source: compiler:innocallback.dll; DestDir: {tmp}; Flags: dontcopy;

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

[CustomMessages]
rus.hour= ÷àñîâ
rus.min= ìèí
rus.sec= ñåê

[_code]
type
TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);

var
StartInstall: Integer;
TimeLabel: TLabel;
TimerID: Longword;

function GetTickCount: DWord; external 'GetTickCount@kernel32';
function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';

Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;

Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String;
Begin
    if detail then            {hh: mm:ss format}
        Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2)
    else if Ticks/3600 >= 1000 then    {more than hour}
        Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m
    else if Ticks/60 >= 1000 then    {1..60 minutes}
        Result:= IntToStr(Ticks/60000) +m+' '+ IntToStr(Ticks/1000 - Ticks/1000/60*60) +s
    else Result:= Format('%.1n', [Abs(Ticks/1000)]) +s    {less than one minute}
End;

procedure GetTime(HandleW, Msg, idEvent, TimeSys: LongWord);
var Remaining: Integer;
begin
with WizardForm.ProgressGauge do begin
  if position > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((max - position)/position))
    TimeLabel.Caption:= 'Inoaeinu ' + TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)
    if (Remaining = 0) then TimeLabel.Caption:= 'Çàâåðøåíèå...'
  end;
end;

procedure InitializeWizard();
begin
TimeLabel:= TLabel.Create(WizardForm)
TimeLabel.SetBounds(ScaleX(0), ScaleY(80), ScaleX(457), ScaleY(20));
TimeLabel.AutoSize:= False
TimeLabel.Transparent:= True;
TimeLabel.Parent:= WizardForm.InstallingPage;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep = ssInstall then
  begin
    StartInstall:= GetTickCount
    TimerID:= SetTimer(0,0, 500, WrapTimerProc(@GetTime, 4))
  end;
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;
Вот, можно пользоваться

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 27-02-2011 в 09:50.

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

Отправлено: 22:44, 26-02-2011 | #906


Аватара для nik1967

Старожил


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

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


Лександер,
Только, когда копируешь из Inno, переключай раскладку на русскую, а то вместо русских надписей получаются кракозябрины

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

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

Отправлено: 11:23, 27-02-2011 | #907


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


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

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


Цитата Лександер:
procedure GetTime(HandleW, Msg, idEvent, TimeSys: LongWord);
var Remaining: Integer;
begin
with WizardForm.ProgressGauge do begin
if position > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((max - position)/position))
TimeLabel.Caption:= 'Inoaeinu ' + TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)
if (Remaining = 0) then TimeLabel.Caption:= 'Çàâåðøåíèå...'
end;
end; »
А на месте абракодабры какой текст должен быть?

-------
Если вам понравился мой совет, то нажмите "Полезное сообщение" :)


Отправлено: 15:41, 27-02-2011 | #908


Аватара для Habetdin


Автор проектов


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

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


actavir, без абракадабры:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=FreeArc Example
AppVerName=FreeArc Example 3.3 Extreme
DefaultDirName={pf}\FreeArc Example

[Files]
Source: compiler:innocallback.dll; DestDir: {tmp}; Flags: dontcopy;

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

[CustomMessages]
rus.hour= часов
rus.min= мин
rus.sec= сек

[code]
type
TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);

var
StartInstall: Integer;
TimeLabel: TLabel;
TimerID: Longword;

function GetTickCount: DWord; external 'GetTickCount@kernel32';
function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';

Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;

Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String;
Begin
    if detail then            {hh: mm:ss format}
        Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2)
    else if Ticks/3600 >= 1000 then    {more than hour}
        Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m
    else if Ticks/60 >= 1000 then    {1..60 minutes}
        Result:= IntToStr(Ticks/60000) +m+' '+ IntToStr(Ticks/1000 - Ticks/1000/60*60) +s
    else Result:= Format('%.1n', [Abs(Ticks/1000)]) +s    {less than one minute}
End;

procedure GetTime(HandleW, Msg, idEvent, TimeSys: LongWord);
var Remaining: Integer;
begin
with WizardForm.ProgressGauge do begin
  if position > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((max - position)/position))
    TimeLabel.Caption:= 'Осталось ' + TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)
    if (Remaining = 0) then TimeLabel.Caption:= 'Завершение...'
  end;
end;

procedure InitializeWizard();
begin
TimeLabel:= TLabel.Create(WizardForm)
TimeLabel.SetBounds(ScaleX(0), ScaleY(80), ScaleX(457), ScaleY(20));
TimeLabel.AutoSize:= False
TimeLabel.Transparent:= True;
TimeLabel.Parent:= WizardForm.InstallingPage;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep = ssInstall then
  begin
    StartInstall:= GetTickCount
    TimerID:= SetTimer(0,0, 500, WrapTimerProc(@GetTime, 4))
  end;
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке

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

Отправлено: 15:52, 27-02-2011 | #909


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


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

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


Вложения
Тип файла: rar ISDone_Highspeed Control1.rar
(3.1 Kb, 15 просмотров)

Парни чёто у меня не получается подцепить этот скрипт к моему может кто-нибудь помочь???
Вот мой скрипт .
Заранее благодарен!!!

-------
Если вам понравился мой совет, то нажмите "Полезное сообщение" :)


Отправлено: 16:27, 27-02-2011 | #910



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход