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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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] - Скачать;


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

Отправлено: 19:06, 28-03-2013

 

Ветеран


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

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


Всем привет!
Цитата Johny777:
Взяв за основу функцию El Sanchez-а "Определение рабочей папки процесса" http://forum.oszone.net/post-1945281-380.html и упростив её до получения имени нашего процесса »
У El Sanchez, функция определяет путь к любому процессу, а вы пытаетесь определить путь к своему, поэтому ParamStr вам поможет, одним словом проще будет так:
читать дальше »

Код: Выделить весь код
procedure SelfDelete;
var
  ResultCode: Integer;
begin
  Exec('cmd.exe', '/c del ' + AddQuotes(ParamStr(0)), '', SW_HIDE, ewNoWait, ResultCode);
end;

Цитата El Sanchez:
tmp-файл деинсталлятора удалится при следующей перезагрузке. »
Так то да, но я просто знаю машины, которые перезагружаются раз в месяц, вот там то SelfDelete желателен, но на самом деле это не критично...

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

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

Отправлено: 18:12, 05-04-2013 | #81



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

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


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


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

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


Как переделать простой скрипт, что при движении процесс бара одноврименно ишли плавно проценти ((с 0.0% до 100.0%) а не ривком 0% потом 100%, и в скрипте можна било менять координати розмишчения процентов в окне инсталяции) .
Скрипт из шапки
читать дальше »
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\My Program

[Files]
Source: files\*; DestDir: {app}; AfterInstall: ExtLog(); Flags: recursesubdirs

[code]
var
ProgressLabel: TLabel;

procedure ExtLog();
begin
with WizardForm.ProgressGauge do begin
ProgressLabel.Caption:=IntToStr((Position-Min)/((Max - Min)/100)) + '%'
if (Position-Min)/((Max - Min)/100) > 50 then ProgressLabel.Font.Color:= clWhite
end
end;

procedure InitializeWizard;
begin
ProgressLabel:=TLabel.Create(WizardForm)
ProgressLabel.Top:= 4
ProgressLabel.Left:= 200
ProgressLabel.Caption:= '0%'
ProgressLabel.AutoSize:= True
ProgressLabel.Font.Color:= clBlue
ProgressLabel.Font.Style:= [fsBold]
ProgressLabel.Transparent:= True
ProgressLabel.Parent:= WizardForm.ProgressGauge
end;

Последний раз редактировалось neorom, 05-04-2013 в 19:51.


Отправлено: 18:22, 05-04-2013 | #82


Ветеран


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

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


neorom

Конкретно в данном примере:

читать дальше »
Код: Выделить весь код
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\My Program

[Files]
Source: files\*; DestDir: {app}; AfterInstall: ExtLog(); Flags: recursesubdirs

[code]
var
ProgressLabel: TLabel;

procedure ExtLog();
begin
with WizardForm.ProgressGauge do begin
ProgressLabel.Caption:=IntToStr((Position-Min)/((Max - Min)/100)) + '%'
if (Position-Min)/((Max - Min)/100) > 50 then ProgressLabel.Font.Color:= clWhite
end
end;

procedure InitializeWizard;
begin
ProgressLabel:=TLabel.Create(WizardForm)
ProgressLabel.Top:= 4
ProgressLabel.Left:= 200
ProgressLabel.Caption:= '0%'
ProgressLabel.AutoSize:= True
ProgressLabel.Font.Color:= clBlue
ProgressLabel.Font.Style:= [fsBold]
ProgressLabel.Transparent:= True
ProgressLabel.Parent:= WizardForm.ProgressGauge
end;


Более - менее плавное отображение процентов будет возможном только, если инсталятор содержит файлы небольшого размера, так как здесь проценты обновляются после того, как файл уже скопирован на диск(о чем ясно говорит процедура AfterInstall, то есть После установки). Иными словами, если у вас в инсталяторе, к примеру, пара файлов весом по несколько гигабайт, то проценты будут делать большие скачки. Лучше использовать другие способы отображения процентов, на форуме много различных примеров, пользуйтесь поиском. Например вот Пост .Так же, пару страниц назад уважаемый Johny777 выкладывал прекрасный пример отображения процентов установки и удаления.

Насчет изменения координат контрола, за это отвечают параметры Left(положение по горизонтали), Top(положение по вертикали). За размеры контрола отвечают Width(ширина), Height(высота) Можете так же создать свой лейбл и делать с ним, что угодно.
Координаты указываются так:
Код: Выделить весь код
Left := ScaleX(24); //Положение по горизонтали от левого края клиента
Top := ScaleY(64); //Положение по вертикали от верхнего края клиента
Width := ScaleX(450);  //Ширина
Height := ScaleY(235); //Высота
А лучше в одну строчку:

Код: Выделить весь код
SetBounds(ScaleX(24), ScaleY(64), ScaleX(450), ScaleY(235)); //procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 05-04-2013 | #83


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


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

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


Товарищи! Нужна ваша помощь! Хочу вот этот скрипт отучить от ISDone и не получается Пытался удалить все функции, но после компиляции, при запуске, пишет, что при Extract Temporary File не найден ISDone.dll . Поэтому прошу помощи. Самому не хватает знаний

Последний раз редактировалось LagunaFAN, 06-04-2013 в 12:08.


Отправлено: 12:01, 06-04-2013 | #84


Ветеран


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

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


LagunaFAN походу скрипт заточен под исдон

Отправлено: 13:01, 06-04-2013 | #85


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Вложения
Тип файла: 7z LagunaFAN.7z
(11.2 Kb, 10 просмотров)

insombia, нет скриптов заточеных под исдон. там тупо выпилить все функции, для которых он нужен и все.

В аттаче 2 файла, которые нужно заменить. и соответственно в модулях удалить модуль исдона.

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


Последний раз редактировалось Gnom_aka_Lexander, 06-04-2013 в 13:37.

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

Отправлено: 13:28, 06-04-2013 | #86


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


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

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


Gnom_aka_Lexander, огромное спасибо за помощь!

Отправлено: 13:39, 06-04-2013 | #87


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


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

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


Цитата saurn:
Johny777 выкладывал прекрасный пример отображения процентов установки и удаления. »
А может кто то удалить все лишнее из того скрипта от Johny777 и оставить только проценти при установки, бо у меня не получаэться.

Отправлено: 10:02, 07-04-2013 | #88


Ветеран


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

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


neorom

Убрать или закомментировать всё, что ниже строчки //////////////////////////////Uninstall/////////////////////////////

читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

[Files]
Source: {fonts}\*; DestDir: {app}; Flags: external

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

const
    WM_USER = $0400;
    PBM_SETPOS = WM_USER+2;
    GWL_WNDPROC = -4;


type
    LPARAM = Integer;
    WPARAM = Integer;
    LRESULT = Integer;
    TFNWndProc = Integer;


function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';
function SetWindowText(hWnd: HWND; lpString: String): BOOL; external 'SetWindowText{#A}@user32.dll stdcall';

var
    OldProgressBarProc: Longint;

function ProgressBarProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
    if Msg = PBM_SETPOS then with WizardForm do SetWindowText( StatusLabel.Handle, Format('%s'#32'%s', [SetupMessage(msgStatusExtractFiles), FormatFloat('0.#0 %', (ProgressGauge.Position*100)/ProgressGauge.Max)]) );

    Result := CallWindowProc(OldProgressBarProc, hWnd, Msg, wParam, lParam);
end;

procedure InitializeWizard();
begin
    OldProgressBarProc := SetWindowLong(WizardForm.ProgressGauge.Handle, GWL_WNDPROC, CallbackAddr('ProgressBarProc'));
end;

procedure DeinitializeSetup();
begin
    SetWindowlong(WizardForm.ProgressGauge.Handle, GWL_WNDPROC, OldProgressBarProc);
end;

/////////////////////////////// Uninstall //////////////////////////////////


//function UninstallProgressBarProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
//begin
//    if Msg = PBM_SETPOS then with UninstallProgressForm do SetWindowText( StatusLabel.Handle, Format('%s'#32'%s', [FmtMessage(SetupMessage(msgStatusUninstalling), ['{#SetupSetting("AppName")}']), FormatFloat('0.#0 %', (ProgressBar.Position*100)/ProgressBar.Max)]) );
//
//    Result := CallWindowProc(OldProgressBarProc, hWnd, Msg, wParam, lParam);
//end;
//
//procedure UninstallFormOnHide(Sender: TObject);
//begin
//    SetWindowlong(TUninstallProgressForm(Sender).ProgressBar.Handle, GWL_WNDPROC, OldProgressBarProc);
//end;
//
//procedure InitializeUninstallProgressForm();
//begin
//    OldProgressBarProc := SetWindowLong(UninstallProgressForm.ProgressBar.Handle, GWL_WNDPROC, CallbackAddr('UninstallProgressBarProc'));
//    UninstallProgressForm.OnHide := @UninstallFormOnHide;
//end;


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

Отправлено: 11:21, 07-04-2013 | #89


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


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

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


А можно ли зделать чтоби процедура которая отвечаэт за проценти, брала информацию из отображения процес бара(двигаэтся процес бар и идут процети). Эсли да то дайте пример.

Отправлено: 14:39, 07-04-2013 | #90



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход