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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-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] - Скачать;


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

Отправлено: 03:49, 21-05-2012

 

Аватара для MogilShik2007

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


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

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


Johny777
Спасибо.

А что по поводу ключей реестра?

Вот кстати скрипт двойного прогресс бара:
Скрипт
#define SrcPath "Files\"
#define Mask "*.*"

#define FindHandle
#define FindResult
#define SearchPath SrcPath + Mask
#define AllFilesSize 0
#define CurFileSize 0

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: compiler:InnoCallback.dll; Flags: dontcopy
#sub ProcessFoundFile
#define FileName FindGetFileName(FindHandle)
Source: {#SrcPath}{#FileName}; DestDir: {tmp}; Flags: ignoreversion; BeforeInstall: ProgressInit(); AfterInstall: ProgressReset()
#expr CurFileSize = FileSize(SrcPath + FileName)
#expr AllFilesSize = AllFilesSize + CurFileSize
#expr WriteIni( SourcePath + "\\SizeInfo.ini","Name", FileName, CurFileSize )
#expr WriteIni( SourcePath + "\\SizeInfo.ini","Size", "AllSize", AllFilesSize )
#endsub

#for {FindHandle = FindResult = FindFirst(SearchPath, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile

Source: SizeInfo.ini; Flags: dontcopy

[code]
type
TMsg = record
hwnd: HWnd;
msg: Word;
wParam: Word;
lParam: Word;
time: Longint;
pt: TPoint;
end;

TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
Msg: TMsg;
TimerID: LongWord;
ProgressBar: TNewProgressBar;
CurrentFileSize: LongInt;
OneStepSize: LongInt;
OldPosition: LongInt;
ReadyFlag: Boolean;
lbl, lbl1: TLabel;

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
function WrapTimerProc(callback: TProc; paramcount: Integer): Longword; external 'wrapcallback@files:innocallback.dll stdcall';

procedure ProgressInit();
begin
ProgressBar.Min:= 0;
ProgressBar.Position:= 0;
OldPosition:= WizardForm.ProgressGauge.Position;

ProgressBar.Max:= GetIniInt('Name', ExtractFileName(ExpandConstant(CurrentFileName)), 0, 0, 0, ExpandConstant('{tmp}\SizeInfo.ini'));

ReadyFlag:= True;
end;

procedure ProgressReset();
begin
ReadyFlag:= False;
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
res: LongWord;
begin
if ReadyFlag then
begin
ProgressBar.Position:= ProgressBar.Position + (WizardForm.ProgressGauge.Position - OldPosition) ;
OldPosition:= WizardForm.ProgressGauge.Position;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
pfunc: LongWord;
begin
if CurStep = ssInstall then
begin
pfunc:= WrapTimerProc(@OnTimer, 4);
TimerID:= SetTimer(0, 0, 20, pfunc);
end;
end;

procedure InitializeWizard();
begin
ReadyFlag:= False;
ExtractTemporaryFile('SizeInfo.ini');

ProgressBar := TNewProgressBar.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressBar.Left := Left;
ProgressBar.Top := Top + ScaleX(30);
ProgressBar.Width := Width;
ProgressBar.Height := Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.Position := 0;
end;
end;

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


Что за SizeInfo.ini и с чем его едят? )))

Последний раз редактировалось MogilShik2007, 20-08-2012 в 19:31.


Отправлено: 18:47, 20-08-2012 | #671



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

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


Аватара для Ivan_009

Ветеран


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

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


Как добавить в инсталлятор свой шрифт можно пример....

Отправлено: 20:51, 20-08-2012 | #672


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

Ветеран


Contributor


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

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


Цитата Ivan_009:
Как добавить в инсталлятор свой шрифт можно пример.... »
Ivan_009, пример есть в шапке. В нем файл шрифта распаковывается во временную папку и подгружается оттуда. Для тех, кто использует расширенную версию Inno, возможен вариант с распаковкой шрифта в память, а не на диск. Вот пример:
Код: Выделить весь код
#define Font "Rurintania.ttf"
#define FontName "Rurintania"

[Setup]
RawDataResource=font:{#Font}

[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

function FindResource(hModule: THandle; lpName: String; lpType: Integer): THandle; external 'FindResource{#A}@kernel32.dll stdcall';
function LoadResource(hModule, hResInfo: THandle): THandle; external 'LoadResource@kernel32.dll stdcall';
function LockResource(hResData: THandle): Longint; external 'LockResource@kernel32.dll stdcall';
function SizeofResource(hModule, hResInfo: THandle): DWORD; external 'SizeofResource@kernel32.dll stdcall';
function AddFontMemResourceEx(pbFont: Longint; cbFont: DWORD; pdv: Longint; var pcFonts: DWORD): THandle; external 'AddFontMemResourceEx@gdi32.dll stdcall';
function RemoveFontMemResourceEx(fh: THandle): BOOL; external 'RemoveFontMemResourceEx@gdi32.dll stdcall';

const
    RT_RCDATA = 10;

var
    fh, hResInfo, hResAddr: THandle;
    pcFonts, iResSize: DWORD;

procedure InitializeWizard();
begin
    if not FontExists('{#FontName}') then
    begin
        hResInfo := FindResource(HInstance, '_IS_FONT', RT_RCDATA);
        iResSize := SizeofResource(HInstance, hResInfo);
        hResAddr := LockResource(LoadResource(HInstance, hResInfo));
        pcFonts := 1;
        fh := AddFontMemResourceEx(hResAddr, iResSize, 0, pcFonts);
    end;
    //отсюда начинаем указывать наш шрифт
    WizardForm.Font.Name := '{#FontName}';
end;

procedure DeinitializeSetup();
begin
    RemoveFontMemResourceEx(fh);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:51, 20-08-2012 | #673


Аватара для Ivan_009

Ветеран


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

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


El Sanchez, а в деинсталлятор как?

Отправлено: 22:14, 20-08-2012 | #674


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

Ветеран


Contributor


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

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


Цитата Ivan_009:
El Sanchez, а в деинсталлятор как? »
Ivan_009, аналогично:
Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
    if not FontExists('{#FontName}') then
    begin
        hResInfo := FindResource(HInstance, '_IS_FONT', RT_RCDATA);
        iResSize := SizeofResource(HInstance, hResInfo);
        hResAddr := LockResource(LoadResource(HInstance, hResInfo));
        pcFonts := 1;
        fh := AddFontMemResourceEx(hResAddr, iResSize, 0, pcFonts);
    end;
    //
    UninstallProgressForm.Font.Name := '{#FontName}';
end;

procedure DeinitializeUninstall();
begin
    RemoveFontMemResourceEx(fh);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:08, 21-08-2012 | #675


Аватара для Ivan_009

Ветеран


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

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


При наложении текстур на кнопки эти процедуры нужны в IsDone скрипте или нет
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
Подскажите заранее благодарю...

Отправлено: 16:53, 21-08-2012 | #676


Аватара для alert30

Ветеран


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

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


Ivan_009, ну так вроде отвечает на кнопочку "Отмены", потестируй.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:23, 21-08-2012 | #677


Аватара для Ivan_009

Ветеран


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

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


Как добавить проценты удаления на деинсталлятор...Подскажите пожалуйста...

Последний раз редактировалось Ivan_009, 25-08-2012 в 14:17.


Отправлено: 23:05, 21-08-2012 | #678


Аватара для apozlevich

Ветеран


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


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

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


Всем доброго времени {суток}!
Появился вопрос: вот есть три файла с одинаковыми именами, как бы сделать так, что бы можно было выбрать, какой из них устанавливать? (Ооочень желательно еще и с выбором из командной строки).

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!


Отправлено: 15:40, 22-08-2012 | #679


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

Ветеран


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

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


apozlevich,
как-то так

Код: Выделить весь код
[Components]
Name: f1; Description: File #1
Name: f2; Description: File #2
Name: f3; Description: File #3

[Files]
Components: f1; Source: Files\F1\File1, Destination: {app}
Components: f2; Source: Files\F2\File2, Destination: {app}
Components: f3; Source: Files\F3\File3, Destination: {app}
С комстрокой тебе чего именно нужно?

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

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

Отправлено: 15:47, 22-08-2012 | #680



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход