Имя пользователя:
Пароль:
 | Правила  

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

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

Аватара для 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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



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

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

Отправлено: 11:48, 10-03-2014

 

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


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

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


habib2302, ну как первый прогрессбар сделать? ну думаю знаешь. загвоздка во втором.
1. второй активируется после первого. (думаю понятно)
2. проверка папки установки flash player (если там указывается папка установки,то способ не прокатит)
3. какой размер папки куда ставится и сколько займет устанавливаемое.
4. двигать прогрессбар второй проверяя размер папки куда ставится.
5. не парится. поставить скрыто установку а потом прогрессбар на 100 сразу двинуть и все. (ставится то недолго)
я только не знаю как скрыто установить флеш. надо параметр смотреть.

Отправлено: 11:23, 06-05-2014 | #551



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

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


Аватара для habib2302

Ветеран


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

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


sergey3695, мой репак сделан на подобии от diakov.
вот как устроен мой скрипт

и вот команда для тихой установки
Код: Выделить весь код
[Run]
Filename: {tmp}\activex.exe; Flags: RunHidden; Components: AFP\A; Parameters: "/install /force";
Filename: {tmp}\plugin.exe; Flags: RunHidden; Components: AFP\P; Parameters: "/install /force";
т.е у меня идет распаковка во временную папку и дальше идет тихая установка самого flash player'а

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


Отправлено: 12:22, 06-05-2014 | #552


Аватара для Shift85

Старожил


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

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


Цитата habib2302:
т.е у меня идет распаковка во временную папку и дальше идет тихая установка самого flash player'а »
habib2302, Зачем изобретать велосипед а не проще все напрямую ставить как репаки игр например.

Отправлено: 13:58, 06-05-2014 | #553


Аватара для habib2302

Ветеран


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

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


Shift85, в каком смысле напрямую?

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


Отправлено: 14:10, 06-05-2014 | #554


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


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

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


habib2302, т.к. файлов нету,скрипта нету,то пример.
Сделал так
читать дальше »
Код: Выделить весь код
////////////////////// Начало ExecAndWait //////////////////

var
  lastproc: cardinal;
const
  NORMAL_PRIORITY_CLASS           = $00000020;
  REALTIME_PRIORITY_CLASS         = $00000100;
type
  _TStartupInfo = record
  cb: DWORD;
  lpReserved, lpDesktop: Longint;
  lpTitle: PAnsiChar;
  dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags: DWORD;
  wShowWindow, cbReserved2: Word;
  lpReserved2: Byte;
  hStdInput, hStdOutput, hStdError: Longint;
end;
  _TProcessInformation = record
  hProcess, hThread: Longint;
  dwProcessId, dwThreadId: DWORD;
end;
  _TMsg = record
  hWnd: HWND;
  msg, wParam: Word;
  lParam: LongWord;
  Time: TFileTime;
  pt: TPoint;
end;

function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; external 'OpenProcess@kernel32.dll stdcall';
procedure GetStartupInfo(var lpStartupInfo: _TStartupInfo); external 'GetStartupInfoA@kernel32.dll stdcall';
function CreateProcess(lpApplicationName: PAnsiChar; lpCommandLine: PAnsiChar; lpProcessAttributes, lpThreadAttributes: DWORD; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: PAnsiChar; lpCurrentDirectory: PAnsiChar; const lpStartupInfo: _TStartupInfo; var lpProcessInformation: _TProcessInformation): BOOL; external 'CreateProcessA@kernel32.dll stdcall';
function WaitForSingleObject(hHandle: Longint; dwMilliseconds: DWORD): DWORD; external 'WaitForSingleObject@kernel32.dll stdcall';
function TerminateProcess(hProcess: Longint; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall';
function PeekMessage(var lpMsg: _TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: _TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: _TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';

procedure Application_ProcessMessages;
var
  Msg: _TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
end;
end;

function ExecAndWait(filename, params: pansichar; showcmd: integer; Priority: Smallint; zav: DWord): Boolean;
var
  SI : _TStartupInfo;
  PI : _TProcessInformation;
  CMD: string;
  prt: DWORD;
begin
  Result:=false;
  CMD:='"' + filename + '" ' + params;
  GetStartupInfo(SI);
  SI.wShowWindow := showcmd;
  SI.dwFlags := 1;
if Priority = 0  then prt:= NORMAL_PRIORITY_CLASS else
if Priority = 1  then prt:= REALTIME_PRIORITY_CLASS;
  Result:=CreateProcess('', PansiChar(CMD), 0, 0, false, prt,'', pansichar(ExtractFilePath(filename)), SI, PI);
  lastproc:=PI.dwProcessId;
if zav=1 then
begin
while WaitforSingleObject(PI.hProcess, 50) = $00000102 do
  Application_ProcessMessages;
end;
  CloseHandle(PI.hProcess)
end;

////////////////////// Конец ExecAndWait ///////////////////

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

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

[Code ]
var
  Timer: TTimer;
  Labelpr: TLabel;
  NewProgressBar1: TNewProgressBar;

// ExecAndWait
#include "ExecAndWait.iss"

procedure RedesignWizardForm;
begin
  Labelpr := TLabel.Create(WizardForm);
  with Labelpr do
  begin
    Parent := WizardForm;
    Left := ScaleX(96);
    Top := ScaleY(120);
    Width := ScaleX(289);
    Caption:= 'Установка флеша';
  end;
  { NewProgressBar1 }
  NewProgressBar1 := TNewProgressBar.Create(WizardForm);
  with NewProgressBar1 do
  begin
    Parent := WizardForm;
    Left := ScaleX(96);
    Top := ScaleY(144);
    Width := ScaleX(289);
    Height := ScaleY(25);
    Max:= 100;
  end;
end;

procedure FlRun(Sender: TObject);
begin
  ExecAndWait(ExpandConstant('{src}\activex.exe'), '/install /force', SW_HIDE, 0,1);
  WizardForm.Close;
end;

procedure Timepr(Sender: TObject);
begin
  NewProgressBar1.Position:=NewProgressBar1.Position+9;
if NewProgressBar1.Position= 100 then
begin
  Labelpr.Caption:= 'Завершение установки';
  Timer.Enabled:= False;
end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
  WizardForm.InnerNotebook.Hide;
  WizardForm.OuterNotebook.Hide;
  Timer:=TTimer.Create(nil);
with Timer do begin
  Interval:= 300;
  OnTimer:=@Timepr;
end;
  WizardForm.OnActivate:= @FlRun;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm:=False;
  Cancel:=True;
end;

Время таймера должно быть меньше времени установки флеша. Прогрессбар тупо двигается по таймеру,а в это время происходит установка, потом прогресс доходит до максимума и лейбл меняется на завершение установки,в то время как флеш еще ставится. хотел сделать ожидание установщика (если флеш установится), но тогда процесс зависает. Можно конечно создать еще процесс,но это извращенство. Вообщем так. Или файлы со скиптом и я по изгаляюсь )

Последний раз редактировалось sergey3695, 06-05-2014 в 19:14.

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

Отправлено: 19:00, 06-05-2014 | #555


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


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

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


Shift85, Благодарю!!!

Ребят, вот скрипт Инсталлятора http://sendfile.su/976358 не могу найти в скрипте код на кнопки далее, отмена, установка. Хочу кнопки передвинуть в другое место. Может кто посмотрит и подскажет в каком месте в скрипте это поменять положения этих кнопок. Заранее благодарю

Отправлено: 20:09, 06-05-2014 | #556


Аватара для habib2302

Ветеран


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

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


Цитата sergey3695:
скрипта нету »
скрипт я не дам. т.к кто-то у меня скрипт украл и за меня делал репаки

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


Отправлено: 20:27, 06-05-2014 | #557


Аватара для Shift85

Старожил


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

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


Цитата Антон_Мураткин@vk:
в каком месте в скрипте это поменять положения этих кнопок »
Антон_Мураткин@vk, В модуле Button.iss

Код: Выделить весь код
with WizardForm.BackButton do begin
    hBackBtn:=BtnCreate(WizardForm.Handle,203,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
    BtnSetEvent(hBackBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
    BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
    BtnSetFont(hBackBtn,WFButtonFont.Handle);
    BtnSetFontColor(hBackBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
    BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
    Width:=0;
    Height:=0;
end;

with WizardForm.NextButton do begin
    hNextBtn:=BtnCreate(WizardForm.Handle,298,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
    BtnSetEvent(hNextBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
    BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
    BtnSetFont(hNextBtn,WFButtonFont.Handle);
    BtnSetFontColor(hNextBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
    BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
    Width:=0;
    Height:=0;
end;

with WizardForm.CancelButton do begin
    hCancelBtn:=BtnCreate(WizardForm.Handle,203,277,77,23,ExpandConstant('{tmp}\button.png'),18,False);
    BtnSetEvent(hCancelBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
    BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
    BtnSetFont(hCancelBtn,WFButtonFont.Handle);
    BtnSetFontColor(hCancelBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
    BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
    Width:=0;
    Height:=0;
end;
Код: Выделить весь код
298,277,77,23
298,277,77,23
203,277,77,23
Эти параметры.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:29, 06-05-2014 | #558


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


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

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


Shift85, Благодарю! А я искал в главном скрипте

Отправлено: 20:35, 06-05-2014 | #559


Аватара для Dodakaedr

Ветеран


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

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


Цитата Shift85:
мультиязычный вариант »
Как сделать чтобы полностью инсталлятор менялся, а то оно меняется только на одной странице?

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


Отправлено: 21:43, 06-05-2014 | #560



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

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

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




 
Переход