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

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

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

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

Ветеран


Contributor


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


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

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

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


FrozenProtector, Вы на правильном пути. Но, не стоит чистить компонент-лист - инсталл на него рассчитывает, и не найдя того, что ожидал там увидеть - естественно, расстроится. Можно создать свой чеклистбокс и там уже делать все, что душе угодно.

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


Отправлено: 09:48, 29-05-2012 | #81



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

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


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


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

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


Цитата Gnom_aka_Lexander:
bear!, ты все правильно делаешь, в принцыпе.
Идеальный вариант - ищешь в разделе реестра Uninstall путь к папке с программой, которую хочешь русифицировать. Наиболее вероятно, что в пути будет подпапка с большим количеством букво-цифер, заключенная в фигурные скобки - это будет AppID программы - все официальные пачи на нем и базируются обычно. далее указываешь именно этот ключ и параметр, в котором находится путь к программе - все должно получиться »
Ничего не получается, установку предлагает в C:\Program Files\CivilizationV

Последний раз редактировалось bear!, 29-05-2012 в 11:45.


Отправлено: 11:34, 29-05-2012 | #82


Аватара для GoshaPolo

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


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

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


Подскажите как решить три ниже перечисленных вопроса:

1. Как поменять заголовок окна Windows? Желательно для каждой страницы установки свой индивидуальный заголовок.
2. Как поменять сообщение, которое вылазит при закрытии программы установки с уведомлением о подтверждении закрытия, на свое?
3. Как убрать определенную страницу программы установки, если я не хочу, чтобы она вылазила?

Заранее спасибо за ответы или ссылки на ответы

Отправлено: 11:40, 29-05-2012 | #83


Аватара для Johny777

Ветеран


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

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


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

[  Code]
procedure CurPageChanged(CurPageID: Integer); 
begin
  if CurPageID=wpWelcome then
  begin
    WizardForm.Caption := 'Я страница приветствия';
  end;
    ////////////////////////////////////////
  if CurPageID=wpSelectDir then
  begin
    WizardForm.Caption := 'Я страница выбоа директории установки';
  end;
    //////////////////////////////////////////////////
  if CurPageID=wpInstalling then  /// страница установки
  begin
    WizardForm.Caption := 'Я страница установки';
  end;
    ///////////////////////////////////////////////////////
  if CurPageID=wpFinished then /// завершающая страница
  begin
      WizardForm.Caption := 'Я страница завершения';
  end;
end;

2.
а) форма (выдрал у себя из скрипта, только без картинки ):
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.



[  Code]
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord; external 'GetSystemMenu@user32.dll stdcall';
function DeleteMenu(hMenu: LongWord; uPosition, uFlags: UINT): BOOL; external 'DeleteMenu@user32.dll stdcall';
function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLongA@user32.dll stdcall';
function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLongA@user32.dll stdcall';

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
var
  NoButton, YesButton: TButton;
  MyExit: TSetupForm;
  
begin
  Confirm := False;

  begin
    MyExit := CreateCustomForm();
    with MyExit do
    begin
      Position := poScreenCenter;
      ClientWidth := ScaleX(154);
      ClientHeight := ScaleY(65);
      Caption := 'Уверен*(а)?';
      Color := clBtnFace;
      DeleteMenu(GetSystemMenu(MyExit.Handle,False), $F060,0); /// сделать кнопку "закрыть" неактивной
      SetClassLong(MyExit.Handle, -26, GetClassLong(Wizardform.Handle, -26) or $200);
    end;

    NoButton := TButton.Create(MyExit);
    with NoButton do
    begin
      Parent := MyExit;
      Caption := ExpandConstant(SetupMessage(msgButtonNo));
      SetBounds(ScaleX(3), ScaleY(20), ScaleX(71), ScaleY(25));
      ModalResult:= mrNo;
    end;

    YesButton := TButton.Create(MyExit);
    with YesButton do
    begin
      Caption := ExpandConstant(SetupMessage(msgButtonYes));
      Parent := MyExit;
      SetBounds(NoButton.Left + ScaleX(77), NoButton.Top, NoButton.Width, NoButton.Height);
      ModalResult := mrYes;
    end;
  end;

  if MyExit.ShowModal() = mrNo then Cancel := False;
end;

б) месседжбокс:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppverName=MyApp
DefaultDirName={pf}\MyApp
 
[  code]
 
procedure WizardClose(Sender: TObject; var Action: TCloseAction);
Begin
  Action:= caNone;
  If MsgBox('Вы хотите закрыть мастер установки?', mbInformation, MB_YESNO) = IDYES then
    MainForm.Close;
End;
 
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Cancel:= True;
  Confirm:= False;
end;
 
procedure InitializeWizard();
begin
WizardForm.OnClose:= @WizardClose
end;

в) другой пример:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppverName=MyApp
DefaultDirName={pf}\MyApp

[  code]
procedure WizardFormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MsgBox('Ты опух?',mbConfirmation,MB_YESNO)=IDNO then CanClose:=False;
end;

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

procedure InitializeWizard;
begin
  WizardForm.OnCloseQuery:=@WizardFormCloseQuery;
end;


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

//можно так:
//подробнее в справке
DisableWelcomePage=yes

[  code]
//или так
function  ShouldSkipPage(PageID: Integer): Boolean;  /// встроенная функция пропуска страниц
begin
  case /// в случае айди страницы "wpWelcome", то результат true, те пропустить
      PageID of wpWelcome: Result := True;
  end;
end;


ай ди страниц:
читать дальше »

wpWelcome = 1;
wpLicense = 2;
wpPassword = 3;
wpInfoBefore = 4;
wpUserInfo = 5;
wpSelectDir = 6;
wpSelectComponents = 7;
wpSelectProgramGroup = 8;
wpSelectTasks = 9;
wpReady = 10;
wpPreparing = 11;
wpInstalling = 12;
wpInfoAfter = 13;
wpFinished = 14;
YourCustomPageName.ID /// твоя страница с .ID на конце

Последний раз редактировалось Johny777, 29-05-2012 в 12:59.

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

Отправлено: 12:16, 29-05-2012 | #84


Аватара для GoshaPolo

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


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

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


Johny777, спасибо за ответы

Если не сложно еще три, я так думаю для знающих людей простых, вопроса:

1. Как можно задать свое названия ярлыка для деинсталляции в меню Пуск?
2. Как задать координаты окна установки при появлении? Например я хочу, чтобы окно вылазило в правом нижнем углу, или строго по центру экрана например.
3. Как задать на свой, а не стандартный, чекбокс функцию создания ярлыка на рабочем столе и функцию запуска программы после окончания установки?

Отправлено: 12:35, 29-05-2012 | #85


Аватара для Johny777

Ветеран


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

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


GoshaPolo,
прочитай ка ты дружочек сначала справочку по 1-му вопросу!
(вот тебе русская справка http://sendfile.su/570136)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,
по второму вопросу для ярлыка:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=Моя программа
AppVersion=1.5
DefaultDirName={pf}\Моя программа
OutputDir=.


[Icons]
Name: "{commondesktop}\Моя программа"; Filename: "{app}\MyProg.exe"; Check: Make_Icon

[  Code]
var
  IconCheckBox: TNewCheckBox;
  
function Make_Icon: Boolean;
begin
  Result:=IconCheckBox.Checked;
end;

procedure InitializeWizard();
begin

  IconCheckBox := TNewCheckBox.Create(WizardForm);
  with IconCheckBox do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(48), ScaleY(328), ScaleX(97), ScaleY(17))
    Caption := 'Создать ярлык';
  end;
  
end;

для запуска (секция RUN) таким же макаром через Check
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
по третьему:
через GetSystemMetrics,
здесь http://innoultra.ru/?page_id=18 под 43-м номером 2 варианта

Последний раз редактировалось Johny777, 29-05-2012 в 12:54.

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

Отправлено: 12:39, 29-05-2012 | #86


Аватара для GoshaPolo

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


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

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


Johny777, спасибо еще раз!

По поводу чекбоксов еще вопросик маленький. Как их поместить на определенной странице, а не на всех?

Отправлено: 13:09, 29-05-2012 | #87


Аватара для Johny777

Ветеран


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

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


Цитата GoshaPolo:
Как их поместить на определенной странице, а не на всех? »
Parent := WizardForm.SelectDirPage; например
можно на панели или на форме разместить (если на форме, то TNewCheckBox.Create(название формы);
или другая страница
только вверх сдвинь, тк он низко находится

alert30
Цитата alert30:
чтобы маскировать установщик в NSIS »
впервые слышу
можно поинтересоваться зачем тебе это?
в ...\Inno Setup 5\Scripts\NSIS_SkinCrafter\ не оно?

Последний раз редактировалось Johny777, 29-05-2012 в 13:27.

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

Отправлено: 13:12, 29-05-2012 | #88


Аватара для GoshaPolo

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


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

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


Johny777, спасибо еще раз! Очень выручил

Johny777, что-то не могу разобраться. Прописал чекбокс на запуск программы в секцию RUN и он запускается сразу после странички с прогрессбаром. А как сделать, чтобы он запускался только после нажатия завершения установки на последней странице?

Отправлено: 13:17, 29-05-2012 | #89


Аватара для Johny777

Ветеран


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

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


GoshaPolo,
есть этапы
пример (в порядке выполнения) :

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

[  Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
   ResultCode: Integer;
  
begin
    /////

    if CurStep = ssInstall then /// перед устанновкой
    begin
      
    end;

    ///////
    
    if CurStep = ssPostInstall then /// после установки
    begin
      
    end;
    
    //////

    if CurStep = ssDone then /// то что тебе надо
    begin
        Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);   ///  запустим калькулятор
        // другой пример Exec(ExpandConstant('{src}\outer\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\outer\DirectX'), SW_SHOW, ewWaitUntilTerminated, ResultCode); 
        //////////////////////////////// расположение файла ///////////////////// параметры //////////  рабочая папка ///////////////////// флаги ////// (другие -  SW_HIDE, ewNoWait)
    end;
    
    ///////
end;

и в справке в поиск вбей "Exec" и "ShellExec" без кавычек

поправил свою опечатку в коде

и обрати внимание на флаг "postinstall" для секции RUN

Последний раз редактировалось Johny777, 29-05-2012 в 14:06.

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

Отправлено: 13:51, 29-05-2012 | #90



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




 
Переход