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

Компьютерный форум 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

 

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


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

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


Serega,
я запускал установщик с редактора без запуска setup.exe, нету ошибок. В скрипт добавляю только эту строку
Код: Выделить весь код
Exec(ExpandConstant('{tmp}\setup.exe'), '', '', SW_HIDE, ewWaitUntilTerminated, n)
(получается как в посту 423 )

если запустить setup.exe во время CurStep=ssDone, ошибок нет

можно я потом выложу весь скрипт, если будет время посмотришь ?

Последний раз редактировалось vahe-91, 09-01-2011 в 19:59.


Отправлено: 19:52, 09-01-2011 | #431



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

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


Ветеран


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

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


vahe-91, вы сами приводите скриншот, какая там ошибка и на какой строке?
Цитата vahe-91:
я запускал установщик с редактора без запуска setup.exe, нету ошибок. »
Я прекрасно вас понимаю, но чудес не бывает...
Попробуйте сейчас, просто закоментировать только эту строку больше ничего не меняя и запустить через редактор.

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


Отправлено: 20:02, 09-01-2011 | #432


Аватара для Gnom_aka_Lexander

Ветеран


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

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


e2e44, Во вложении мой пример по твоему вопросу, если непонятно чтото - подскажу (сам полгода решал подобный вопрос ). Только ник вводится на второй странице, а на последней вводится куча данных о пользователе, если ник был введен, но это не принципиально, создаются *.ini все равно после установки.

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


Последний раз редактировалось Gnom_aka_Lexander, 10-05-2011 в 14:36.


Отправлено: 21:15, 09-01-2011 | #433


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


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

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


как сделать свой заголовок во всплывающем MsgBox ?
типа как "информация"

Отправлено: 22:18, 09-01-2011 | #434


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


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

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


Serega, Лександер
спасибо большое за оказанную помощь

если не трудно подскажите алгоритм проверки установлено приложение или нет если установлено авто запуск эксешника

Sotonisto )))) L4d собираю первый

Последний раз редактировалось e2e44, 09-01-2011 в 23:11.


Отправлено: 22:18, 09-01-2011 | #435


Аватара для Sotonisto

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


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

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


Все решили помочь e2e44
Пример создания диалогового окна и создания *.ini файла (еще с Скрипты Inno Setup. Помощь и советы [часть 2])

читать дальше »
Код: Выделить весь код
[_Code]
var
Page: TInputQueryWizardPage;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
SaveStringToFile(ExpandConstant('{app}\rev.ini'),

'[Emulator]' + #13#10
'CacheEnabled=False' + #13#10
'Language=Russian' + #13#10
'Logging=False' + #13#10
'SteamDll=bin\steam\Steam.dll' + #13#10
'SteamClient=True' + #13#10
'SteamUser=RG PKS USER' + #13#10
'' + #13#10
'[steamclient]' + #13#10
'PlayerName=' + '"' + Page.Values[0] + '"' + #13#10
'Logging=False' + #13#10
'ClientDll=bin\steam\steamclient.dll' + #13#10, False);
end;

Procedure InitializeWizard();
begin
Page := CreateInputQueryPage(wpWelcome, 'Настройка компонентов', 'Введите ник, под которым Вы будете играть в Left 4 Dead 2 (только англ. буквы, пробелы разрешены)', 'Введите желаемый ник');
Page.Add('', False);
end;

Если кому-то необходимо - вот сам скрипт.

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Последний раз редактировалось Sotonisto, 11-06-2011 в 10:26.

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

Отправлено: 22:20, 09-01-2011 | #436


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Sotonisto, Спасибо, появилась сразу мысль, как мой пример оптимизировать

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

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

Отправлено: 22:27, 09-01-2011 | #437


Ветеран


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

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


Цитата Imitri7:
свой заголовок во всплывающем MsgBox ? »
Есть несколько вариантов, самый простой, это использовать системный MessageBox:
Пример

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

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

[Code]
function MessageBox(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: LongWord): Integer;  external 'MessageBoxA@user32.dll stdcall';

procedure ButtonClick(Sender: TObject);
begin
  MessageBox(WizardForm.Handle, 'Текст сообщения', 'Заголовок', MB_ICONINFORMATION);
end;

procedure InitializeWizard();
begin
  with TButton.Create(WizardForm) do
    begin
      Parent := WizardForm;
      SetBounds(ScaleX(30), WizardForm.NextButton.Top, WizardForm.NextButton.Width, WizardForm.NextButton.Height);
      Caption := 'Сообщение';
      OnClick := @ButtonClick;
    end;
end;

Более сложный, это создавать отдельную форму и уже на ней создавать все контролы, пример создания формы можете взглянуть в этом сообщении

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

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

Отправлено: 09:45, 10-01-2011 | #438


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


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

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


находил похожие примеры, но они почему то не работали
Serega, спс

2all и еще подскажите плыз как решит проблему
такую

если не заметно в чем разница, то тут косяк с кнопками с английским языком - они друг на друга налазят
скрипт

Код: Выделить весь код
  const
  ButtonWidth = 80;    //Указываем размер кнопок
  ButtonHeight = 23;

  bidBack = 0;
  bidNext = 1;
  bidCancel = 2;
  bidDirBrowse = 3;
  bidGroupBrowse = 4;

var
  ButtonPanel: array [0..4] of TPanel;
  ButtonImage: array [0..4] of TBitmapImage;
  ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
  Button: TButton;
begin
  ButtonImage[TLabel(Sender).Tag].Left:=0
  case TLabel(Sender).Tag of
    bidBack: Button:=WizardForm.BackButton
    bidNext: Button:=WizardForm.NextButton
    bidCancel: Button:=WizardForm.CancelButton
    bidDirBrowse: Button:=WizardForm.DirBrowseButton
    bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
  else
    Exit
  end
  Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if ButtonLabel[TLabel(Sender).Tag].Enabled then
     ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
  Image: TBitmapImage;
  Panel: TPanel;
  Labl: TLabel;

begin
  Panel:=TPanel.Create(WizardForm)
  Panel.Left:=AButton.Left
  Panel.Top:=AButton.Top
  Panel.Width:=AButton.Width
  Panel.Height:=AButton.Height
  Panel.Tag:=AButtonIndex
  Panel.Parent:=AButton.Parent
  ButtonPanel[AButtonIndex]:=Panel

  Image:=TBitmapImage.Create(WizardForm)    //Рисунок который ложится на кнопку
  Image.Width:=160                          //Обязательно прописать оригинальный размер рисунка
  Image.Height:=23
  Image.Enabled:=False
  Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
  Image.Parent:=Panel
  ButtonImage[AButtonIndex]:=Image

  with TLabel.Create(WizardForm) do begin
    Tag:=AButtonIndex
    Parent:=Panel
    Width:=Panel.Width
    Height:=Panel.Height
    Transparent:=True
    OnClick:=@ButtonLabelClick
    OnDblClick:=@ButtonLabelClick
    OnMouseDown:=@ButtonLabelMouseDown
    OnMouseUp:=@ButtonLabelMouseUp
  end

  Labl:=TLabel.Create(WizardForm)        //Текст кнопок
  Labl.Left:=23                          //Указываем положение текста
  Labl.Top:=5
  Labl.Autosize:=True
  Labl.Alignment:=taCenter
  Labl.Tag:=AButtonIndex
  Labl.Transparent:=True
  Labl.Font.Color:=clFont               //Цвет текста
  Labl.Caption:=AButton.Caption
  Labl.OnClick:=@ButtonLabelClick
  Labl.OnDblClick:=@ButtonLabelClick
  Labl.OnMouseDown:=@ButtonLabelMouseDown
  Labl.OnMouseUp:=@ButtonLabelMouseUp
  Labl.Parent:=Panel
  ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
  ButtonLabel[AButtonIndex].Caption:=AButton.Caption
  ButtonPanel[AButtonIndex].Visible:=AButton.Visible
  ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
  ButtonLabel[bidNext].Enabled:=True
  ButtonPanel[bidNext].Enabled := True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
  ButtonLabel[bidNext].Enabled:=False
  ButtonPanel[bidNext].Enabled := False
end;

procedure CurPageChanged0(CurPageID: Integer);
begin
  UpdateButton(WizardForm.BackButton,bidBack)
  UpdateButton(WizardForm.NextButton,bidNext)
  UpdateButton(WizardForm.CancelButton,bidCancel)
  ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2);
  ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2);
  ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2);
  ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2);
  ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2);
end;

procedure InitializeWizard0();
begin
  WizardForm.BackButton.Width:=ButtonWidth
  WizardForm.BackButton.Height:=ButtonHeight

  WizardForm.NextButton.Width:=ButtonWidth
  WizardForm.NextButton.Height:=ButtonHeight

  WizardForm.CancelButton.Width:=ButtonWidth
  WizardForm.CancelButton.Height:=ButtonHeight

  WizardForm.DirBrowseButton.Left:=337
  WizardForm.DirBrowseButton.Width:=ButtonWidth
  WizardForm.DirBrowseButton.Height:=ButtonHeight

  WizardForm.GroupBrowseButton.Left:=337
  WizardForm.GroupBrowseButton.Width:=ButtonWidth
  WizardForm.GroupBrowseButton.Height:=ButtonHeight

  WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

  WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

  ExtractTemporaryFile('button.bmp')
  LoadButtonImage(WizardForm.BackButton,bidBack)
  LoadButtonImage(WizardForm.NextButton,bidNext)
  LoadButtonImage(WizardForm.CancelButton,bidCancel)
  LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
  LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

+ как наложит текстуру с помошью этого скрипта на
такую кнопку
Код: Выделить весь код
var
 SystemButton: TNewButton;
 
procedure InitializeWizard();
begin
SystemButton := TNewButton.Create(WizardForm);
    with SystemButton do begin
    Parent := WizardForm;
    Caption := '?';
    Left:= 190
    Top:=WizardForm.BackButton.Top
    Width:=WizardForm.DirBrowseButton.Height
    Height:=WizardForm.DirBrowseButton.Height
    OnClick:=@SystemButtonOnClick
    ShowHint := True;
    Hint:= 'Показать/Cкрыть "Системные требования"'
    end;
end;


Последний раз редактировалось Imitri7, 10-01-2011 в 11:01.


Отправлено: 10:21, 10-01-2011 | #439


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Imitri7, нужно скрипт смотреть, там чтото связаное с авторазмером кнопок или текста.
Попробуй добавить туда, где накладываеш текстуры, строчку
Код: Выделить весь код
    AutoSize := True;
и поиграться со значениями True и False

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


Последний раз редактировалось Gnom_aka_Lexander, 10-01-2011 в 14:23.


Отправлено: 14:06, 10-01-2011 | #440



Компьютерный форум 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




 
Переход