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

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

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

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

Ветеран


Contributor


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


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

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

 

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


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

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


Ivan_009,
какой я не внимательный)) спс

Отправлено: 18:34, 25-08-2012 | #701



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

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


Аватара для Ivan_009

Ветеран


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

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


Извиняюсь за тупой вопрос но если у меня компилятор ANSI в этой строке, что нужно поставить, чтобы не использовать...
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

Последний раз редактировалось Ivan_009, 28-08-2012 в 15:19.


Отправлено: 20:42, 26-08-2012 | #702


Аватара для Johny777

Ветеран


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

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


Ivan_009,
если юникод то А - W
в противном случае (только ANSI) A - A
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:45, 26-08-2012 | #703


Аватара для Raf-9600

Старожил


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

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


Ктонить может написать простенький скриптик, который в случае если выбран компонент "Game\Lokal" и нажата кнопка «Далее», проверял, существует ли ключ реестра "InstallPath" в ветке "HKLM\SOFTWARE\Blizzard Entertainment\Diablo II\" если ключ найден, то проверял по указанному в этом ключе реестра пути, существование файлов "Game.exe" и "d2data.mpq". Если всё найдено, то молча переходить на следующую страницу, если же файлы или ключ в реестре не найден, то выводить сообщение с кнопками «Да» и «Нет», на которые невозможно нажать в течение 10 секунд. По умолчанию выбрана кнопка «Да», и при нажатии на неё автоматически выбирался компонент "Game\Full" и осуществлялся автоматический переход на следующую страницу, если же нажать на «Нет» то осуществлялся переход на следующую страницу без дополнительных действий.

Последний раз редактировалось Raf-9600, 27-08-2012 в 13:58.


Отправлено: 13:41, 27-08-2012 | #704


Аватара для Johny777

Ветеран


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

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


Raf-9600,

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

[Components]
Name: Game; Description: Game_Component;
Name: Game\Lokal; Description: Game_Local_Component; Flags: exclusive
Name: Game\Full; Description: Game_Full_Component; Flags: exclusive


[Files]
Source: Game.exe; DestDir: {app}
Source: d2data.mpq; DestDir: {app}


[code]
var
  Error_Form: TSetupForm;
  No_Clicked: boolean;

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 Error_Form_Button_OnClick(Sender: TObject);
begin
  case TButton(Sender).Caption of

    SetupMessage(msgButtonYes):
    begin
      with WizardForm do
      begin
        ComponentsList.Checked[2] := True;  /// где 2 - индекс компонета - 3-й по списку (отсчёт от 0)
        Enabled := True;
        NextButton.OnClick(nil);
      end;
    end;
    
    SetupMessage(msgButtonNo):
    begin
      with WizardForm do
      begin
        Enabled := True;
        No_Clicked := True;
        NextButton.OnClick(nil);
      end;
    end;
  end;
  
  Error_Form.Hide;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
  AppPath: String;
  Cycle: Integer;
  NO_Button, YES_Button: TButton;
begin
  Result := True;
  AppPath := RemoveQuotes(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|}'));

  if (CurPageID = wpSelectComponents) and  IsComponentSelected('Game\Lokal') then
  begin
    if not FileExists(AppPath + 'Game.exe') and not FileExists(AppPath + 'd2data.mpq') and not No_Clicked then
    begin
      Result := False;
      WizardForm.Enabled := False;
      
      Error_Form := CreateCustomForm;
      with Error_Form do
      begin
        Position := poScreenCenter;
        BorderStyle := bsDialog;
        ClientWidth := ScaleX(250);
        ClientHeight := ScaleY(100);
        Caption := SetupMessage(msgErrorTitle);
        Color := clBtnFace;
        DeleteMenu(GetSystemMenu(Error_Form.Handle,False), $F060,0); /// сделать кнопку "закрыть" неактивной
        SetClassLong(Error_Form.Handle, -26, GetClassLong(Error_Form.Handle, -26) or $200); /// блокировка комбинации alt + f4

        with TLabel.Create(nil) do
        begin
          SetBounds(ScaleX(15), ScaleY(10), ScaleX(290), ScaleY(30));
          AutoSize := False;
          Caption := 'будет выбран компнент Game_Full';
          WordWrap := True;
          Parent := Error_Form;
          Font.Size := 9;
        end;

        YES_Button := TButton.Create(nil)
        with YES_Button do
        begin
          Caption := SetupMessage(msgButtonYes);
          Parent := Error_Form;
          SetBounds(Error_Form.Width - ScaleX(90), ScaleY(65), ScaleX(71), ScaleY(25));
          Cursor := crHand;
          Enabled := False;
          OnClick := @Error_Form_Button_OnClick;
        end;

        NO_Button := TButton.Create(nil)
        with NO_Button do
        begin
          Caption := SetupMessage(msgButtonNo);
          Parent := Error_Form;
          SetBounds(Error_Form.Width - ScaleX(175), ScaleY(65), ScaleX(71), ScaleY(25));
          Cursor := crHand;
          Enabled := False;
          OnClick := @Error_Form_Button_OnClick;
        end;

        Application.Title := ' ' + SetupMessage(msgErrorTitle);

        Show;
        Repaint;
        
        Cycle := 10;
        
        repeat
          begin
            Sleep(1000);
            Cycle := Cycle - 1;
            Error_Form.Caption := IntToStr(Cycle) + ' Секунд';
          end;
        until (Cycle = 0)
        

        YES_Button.Enabled := True;
        NO_Button.Enabled := True;
      end;
        
    end;
  end;
end;

procedure InitializeWizard();
begin
  No_Clicked := False;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:00, 27-08-2012 | #705


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


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

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


Друзья помогите, кто нибудь прикрутите пожалуйста ISDone и если не сложно то сделайте кликабельное лого без фона.

Вот скрипт: http://rghost.ru/40017592

Отправлено: 16:00, 27-08-2012 | #706


Аватара для nik1967

Старожил


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

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


Raf-9600, Johny777,
А так не проще?
Код: Выделить весь код
[Setup]
AppName=My program
AppVerName=My program 1.5
DefaultDirName={pf}\My program

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

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: Game; Description: Game_Component;
Name: Game\Lokal; Description: Game_Local_Component; Flags: exclusive; Types: full;
Name: Game\Full; Description: Game_Full_Component; Flags: exclusive; 

[Files]
Source: Game.exe; DestDir: {app};
Source: d2data.mpq; DestDir: {app};

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Blizzard Entertainment"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Blizzard Entertainment\Diablo II"; ValueName: "InstallPath"; ValueType: String; ValueData: "{app}\"; Flags: uninsdeletekey 

[_Code]
function NextButtonClick(CurPageID: Integer): Boolean;
var
  AppPath: String;
begin
  Result:= true;
  AppPath:= RemoveQuotes(ExpandConstant('{reg:HKLM\SOFTWARE\Blizzard Entertainment\Diablo II\,InstallPath|}'));
if (CurPageID = wpSelectComponents) and  IsComponentSelected('Game\Lokal') then
if not FileExists(AppPath + 'Game.exe') and not FileExists(AppPath + 'd2data.mpq') then
if MsgBoxEx(0, 'Не найдены Game.exe и d2data.mpq'+#13#10+'Установить Game_Full_Component?', 'Проблема', MB_YESNO or MB_ICONQUESTION, 0, 10) = IDYES then 
  WizardForm.ComponentsList.Checked[2]:= True  /// где 2 - индекс компонета - 3-й по списку (отсчёт от 0)
else
  WizardForm.ComponentsList.Checked[1]:= True; /// где 1 - индекс компонета - 2-й по списку (отсчёт от 0)
end;

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 27-08-2012 в 18:06.

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

Отправлено: 17:10, 27-08-2012 | #707


Аватара для Raf-9600

Старожил


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

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


nik1967, Если бы можно было сделать чтобы возможность нажать на Да\Нет появлялась только через 10 секунд, тогда было бы в самом деле лучше.

Johny777, Благодарю

Последний раз редактировалось Raf-9600, 27-08-2012 в 18:56.


Отправлено: 17:21, 27-08-2012 | #708


Аватара для alert30

Ветеран


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

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


Twoface, не умеешь сам?

Отправлено: 17:24, 27-08-2012 | #709


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


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

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


Цитата alert30:
alert30 »
Пытался, подключил, но выходила ошибка, музыку и сплаш сам подключил, а вот ISDone не получается без ошибки и лого получается с фоном, уже голову сломал, если сможешь помочь, помоги пожалуйста, в любом случае спасибо что откликнулся.

Отправлено: 17:28, 27-08-2012 | #710



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




 
Переход