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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • 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.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

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


Отправлено: 22:06, 23-08-2009

 

Аватара для A1EXXX

Старожил


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

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


МИШАНЧИК, можно! Немного повозился и вот, что получилось
читать дальше »

Цитата:
; Первоисточник - скрипт ComponentsDescriptions by Victor Dobrov
; изменён и переделан под TaskPage by A1EXXX

[Setup]
AppName=Tasks Descriptions
AppVerName=Tasks Descriptions 1.0
DefaultDirName=Tasks Descriptions
OutputDir=.

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

[Files]
; скачать библиотеку descctrl.dll (6 кб) можно здесь: http://victor-dobrov.narod.ru/inno_descctrl.7z
Source: descctrl.dll; Flags: dontcopy;
Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs

[CustomMessages]
Russian.xxx=Установка компонента Gamedata

[Tasks]
Name: "gamedata"; Description: "{cm:xxx}";

[code]
var Point: TPoint; CompDesc: TEdit; MessageForm: TForm; MessagePanel: TPanel; MessageLabel: TLabel; n, frame: integer;

function EnableDesc(TasksListHandle, DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
procedure GetCursorPos(var Point: TPoint); external 'GetCursorPos@user32 stdcall delayload';
function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall';

Procedure DrawIcon(Form: TWinControl; File: String; nIcon, Left, Top, Size, BColor: Integer); var Panel: TPanel; Rect: TRect; Begin
Panel:= TPanel.Create(Form); Panel.SetBounds(Left, Top, Size, Size); Panel.Parent:= Form
with TBitmapImage.Create(Panel) do begin Parent:= Panel; with Bitmap do begin
Width:= Size; Height:= Size; Rect.Right:= Size; Rect.Bottom:= Size; Canvas.Brush.Color:= BColor; Canvas.FillRect(Rect); end; end;
End;

Procedure ResizeLabel(Obj: TLabel; Text: String; MaxWidth: Integer); var k, w, h: integer; Begin {размер формы подгоняется под текст}
Obj.AutoSize:= true; Obj.WordWrap:= false; Obj.Caption:= Text; {авторазмер}
w:= Obj.Width; h:= Obj.Height; n:= (w + frame*2)/MaxWidth + 1
Repeat
Obj.Width:= w/n + frame*2*n + k
Obj.Height:= h * n
Obj.WordWrap:= true; k:= k + 4
Until Obj.Height/h = n
End;

Procedure ShowHint(String: string; AIndex: Integer; Center: Bool); Begin {размер формы подгоняется под текст, если AIndex = 0, значок не рисуется}
frame:= 10; if AIndex <> 0 then String:= ' '+ String;
GetCursorPos(Point); MessageLabel.Left:= frame; MessageLabel.Top:= frame
ResizeLabel(MessageLabel, String, WizardForm.ClientWidth)
if Center then n:= WizardForm.Left + WizardForm.Width/2 - (MessageLabel.Width + frame*2 -2)/2 else n:= Point.X + 12
MessageForm.SetBounds(n, Point.Y + 12, MessageLabel.Width + frame*2 -2, MessageLabel.Height + frame*2 -2)
MessageForm.Show; SetWindowPos(MessageForm.Handle, -1, 0, 0, 0, 0, 3);
End;

Procedure DeinitializeSetup();
Begin
disabledesc();
End;

Procedure CurStepChanged(CurStep: TSetupStep);
Begin
if CurStep = ssInstall then disabledesc();
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID = wpSelectTasks then enableDesc(WizardForm.TasksList.Handle,CompDesc.Handle,
'Демонстрационный режим (описание компонента)'); // текст описания
End;

Procedure ObjectOnClick(Sender: TObject);
Begin
Case TObject(Sender) of {событие объекта}
CompDesc:
if CompDesc.Text > '' then ShowHint(CompDesc.Text, 0, true) else MessageForm.Hide;
MessageForm:
WizardForm.BringToFront;
end;
End;

Procedure InitializeWizard;
Begin
CompDesc:= TEdit.Create(WizardForm)
CompDesc.Parent:= WizardForm
CompDesc.Visible:= false
CompDesc.OnChange:= @ObjectOnClick
MessageForm:= CreateCustomForm;
MessageForm.BorderStyle:= bsNone
MessageForm.OnActivate:= @ObjectOnClick
MessagePanel:= TPanel.Create(MessageForm)
MessagePanel.BevelInner:= bvLowered;
MessagePanel.Align:= alClient;
MessagePanel.Color:= $E1FFFF; // цвет панели
MessagePanel.Parent:= MessageForm
MessageLabel:= TLabel.Create(MessagePanel)
MessageLabel.Transparent:= true
MessageLabel.Font.Name:= 'Tahoma' // шрифт описания
MessageLabel.Font.Size:= WizardForm.Font.Size
MessageLabel.Parent:= MessagePanel
End;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:06, 05-11-2009 | #371



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

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


Ветеран


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

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


A1EXXX, большое Вам спасибо! Буду пробовать.

Отправлено: 07:35, 06-11-2009 | #372


Аватара для A1EXXX

Старожил


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

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


Подобный вопрос звучал уже неоднократно, но ответа на него так и не увидел... В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? Запаковка arc'ов в инсталл не подходит. Или может можно записать в [Files] архив, который будет находиться на другом носителе (хотя бы для SFX, но чтобы по окончании распаковки основных, выводился запрос для следующего архива....)
А ещё лучше бы сделать так (если возможно): допустим, на 1-ом диске находится 4 архива. Распаковавшись, инсталлятор делает паузу и выводит сообщение (окошко) - мол, хотите продолжить, вставьте диск 2, и по нажатии "Да" инсталл не замечая подвоха распаковывает ещё один архив (вот только как сообщить ему заранее, что архивов 5, чтобы прогресс-бар не заполнился до конца ), а если "Нет" - завершение установки... А может есть решение куда проще? Жду ваших предложений

Отправлено: 15:07, 06-11-2009 | #373


Ветеран


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

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


Цитата A1EXXX:
В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? »
Можно, но об этом спросите автора...
P.S.
Обычно я игнорирую вопросы на данную тему... извините, но просто уже устал разбираться в чужих дебрях...

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


Отправлено: 21:16, 06-11-2009 | #374


Аватара для S.E.K.T.O.R.

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


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

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


Уже задавал этот вопрос но ответа не увидел. Мож кто-нибудь догадался как изменить сообщение "Недостаточно места на диске" или вовсе отключить его, а вместо него заставить инсалл выдавать другое

Отправлено: 22:19, 06-11-2009 | #375


Аватара для S.E.K.T.O.R.

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


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

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


Цитата A1EXXX:
1) Как сделать, чтобы когда игру уже установлена, при запуске инсталла выскакивало такое вот окошко? »
По-моему никто не ответил, а делается это
так
Код: Выделить весь код
[Setup]
AppId={{B9B31282-6F8D-4D74-A8F2-24AE59608A9D}
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[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

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Registry]
Root: HKLM; Subkey: Software\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey

[_Code]
function InitializeSetup: Boolean;
var
  path: string;
  res: Integer;
begin
  Result:= True;
  if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
    if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
      if FileExists(path + '\MyProg.exe') then
  if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
    begin
      Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
      Result:= False;
    end
  else Result:= False;
end;

Отправлено: 23:15, 06-11-2009 | #376


Аватара для S.E.K.T.O.R.

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


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

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


Serega, Вы не знаете как инсталл Сталкера определяет версию Windows XP т.е. Professional или Home Edition, а в висте розрядность (32 или 64)

Последний раз редактировалось S.E.K.T.O.R., 07-11-2009 в 01:17.


Отправлено: 00:12, 07-11-2009 | #377


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


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

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


Цитата S.E.K.T.O.R.:
Professional или Home Edition »
Присмотритесь к Help'у, к функции GetWindowsVersionEx(Version);
Код: Выделить весь код
  // Disallow installation on Home edition of Windows
  if Version.SuiteMask and VER_SUITE_PERSONAL <> 0 then
  begin
    SuppressibleMsgBox('This program cannot be installed on a Home edition of Windows.',
      mbCriticalError, MB_OK, MB_OK);
    Result := False;
    Exit;
  end;

  // On Windows XP, check for SP2
  if Version.NTPlatform and
     (Version.Major = 5) and
     (Version.Minor = 1) and
     (Version.ServicePackMajor < 2) then
  begin
    SuppressibleMsgBox('When running on Windows XP, Service Pack 2 is required.',
      mbCriticalError, MB_OK, MB_OK);
    Result := False;
    Exit;
  end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:22, 07-11-2009 | #378


Аватара для S.E.K.T.O.R.

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


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

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


Я хочу чтобы в проверке сист. требований кроме " Microsoft Windows XP Service Pack 2" еще было "Microsoft Windows XP Professional Edition Service Pack 2, а в Висте "Windows Vista Ultimate, 32 bits, Service Pack 1"

Последний раз редактировалось S.E.K.T.O.R., 07-11-2009 в 17:44.


Отправлено: 01:33, 07-11-2009 | #379


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


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

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


Inno Setup Form Designer (ISFD).

У кого-нибудь остались старые версии сабжа? 2.0.5, 2.0.6с, 2.0.7?
У меня есть 2.0.4.

А вот 2.0.8 почему-то падает с ошибкой: Runtime error 216 at 00404036 (У меня Win7)

И было бы совсем неплохо какой нибудь русский хелп к нему...

Спасибо.

[Добавлено]

Мануалы к ISFD похоже "умерли" вместе с официальным сайтом программы.
Прогуглил все что мог - ничего не нашел
В веб-архиве упоминалось даже о видео-мануале:
(2006/08/20 Added Video-Tutorials for ISFD http://web.archive.org/web/200610230...isfd.kaju74.de)

Может у кого завалялось что-нибудь по теме?

Отправлено: 03:12, 07-11-2009 | #380



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход