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

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

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

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


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Batistas:
Может быть я что не так установил... »
именно. обновлен у китайцев только препроцессор с дополнительным функционалом. компилятор обновлен не был и он не совместим с версией 5.5.*. ставишь инно заново, накатываешь сверху Inno ISCmplr Setup build 120726 и ни в коем случае не добавляешь туда Inno Setup Compiler build 120112, поскольку, как уже говорилось, он совершенно несовместим с версией 5.5.*. Все должно заработать.

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


Отправлено: 09:13, 07-08-2012 | #541



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

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


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


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

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


Цитата Gnom_aka_Lexander:
»
Ничего не выходит...Удалил старую версию, отчистил реестр. Скачал с официального сайта isetup-5.5.1-unicode.exe (SHA-1: 9E1E4F37F50E58E182F929A88E391AFF9C10A8E7), установил. Далее скачал архив Inno_ISCmplr_Setup120726(7zip).zip (SHA-1: 5CE7A5318245E3DF691FE4734DF1D87158481F52), разархивировал. Скопировал содержимое папки .\Inno_ISCmplr_Setup120726(7zip)\InnoSetup_Unicode\FullVCL в папку с Inno Setup. Попробовавл скопилировать скрипт - выдает ошибку - http://s017.radikal.ru/i404/1208/c6/56ad36538d84.png Вот сама Inno - http://narod.ru/disk/59001053001.d3c...p%205.rar.html

Отправлено: 10:20, 07-08-2012 | #542


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Batistas, залей на обменник проект целиком со всеми файлами. у меня все великолепно компилится, на 5.4.3 расширенной. Подозреваю, что ошибка после внесения тобой каких-либо изменений в скрипт.

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


Отправлено: 10:33, 07-08-2012 | #543


Аватара для nik1967

Старожил


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

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


Batistas, и кстати, да, ошибка возможна из-за файлов. Попробуй закомментировать секцию [Files] (все файлы) и у меня ещё закомментирована строка ";SetupIconFile=Icon.ico" - всё прекрасно компилируется и на Compil32.exe и на Compil32Ex.exe.

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


Отправлено: 12:25, 07-08-2012 | #544


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

Ветеран


Contributor


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

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


Batistas, определимся с понятиями. Файлы ISCmplr.dll, Setup.e32, SetupLdr.e32, ISCC.exe, ISPP.dll - это файлы компилятора и препроцессора, Compil32(Ex).exe - редактор (среда разработки, IDE). Скрипт компилируется на обоих видах компилятора (ANSI и Unicode), но отработал только в ANSI, на Unicode ругань на несоответствие типов, крах при создании аттрибутов, ваша ошибка тоже всплыла. Оказалось, что юникоду не понравились метод createElement при создании нод и метод setAttribute при создании аттрибутов. Процедуру CreateDCPlusPlus в своем предыдущем посте исправил.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:04, 07-08-2012 | #545


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


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

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


nik1967, Gnom_aka_Lexander помог мне потестить - у него все работает. У меня же выдает ошибку:
читать дальше »
"[17:57:04,339] *** Установка started
[17:57:07,052] Setup version: Inno Setup version 5.4.3.ee1 (u)
[17:57:07,053] Original Setup EXE: C:\Users\Batista\Desktop\Сборка DC++\ApexDC-s16_4.exe\ApexDC-s16_4.exe\Output\Synergetic & MaxiRu DC-P2P Pack 1.0.0.exe
[17:57:07,054] Setup command line: /SL5="$160888,2072628,140800,C:\Users\Batista\Desktop\Сборка DC++\ApexDC-s16_4.exe\ApexDC-s16_4.exe\Output\Synergetic & MaxiRu DC-P2P Pack 1.0.0.exe" /DEBUGWND=$230120
[17:57:07,055] Windows version: 6.1.7601 SP1 (NT platform: Yes)
[17:57:07,056] 64-bit Windows: Yes
[17:57:07,057] Processor architecture: x64
[17:57:07,058] User privileges: Administrative
[17:57:07,065] 64-bit install mode: No
[17:57:07,067] Created temporary directory: C:\Users\Batista\AppData\Local\Temp\is-ELRD4.tmp
[17:57:07,365] InitializeWizard raised an exception (fatal).
[17:57:07,367] Exception message:
[17:57:07,368] Message box (OK):
Runtime Error (at 0:0):

Variant is null, cannot invoke.
[17:57:09,104] User chose OK.
[17:57:09,106] Deinitializing Setup.
[17:57:09,251] *** Установка exit code: 1

El Sanchez, спасибо, я с версиями уже разобрался. Компилировал при помощи Inno Ultra. И вообще, у меня такое ощущение складывается, что дело в системе. Ведь экзэшник скомпилированный появляется в папке аутпат, но не запускается. Сегодня попробую через LiveCD все это дело проделать

Разобрался. Запустилось только с переменной "ArchitecturesInstallIn64BitMode=x64", сейчас буду тестить.
Собсно результат тестирования: запустился два раза, один раз с рантайм ерор и зависла, второй раз тоже с рантайм ерор, до конца дошла, но ни ник, ни звук не прописались.
Все-таки придется с лайв сиди возиться

Последний раз редактировалось Batistas, 07-08-2012 в 15:14.


Отправлено: 15:01, 07-08-2012 | #546


Аватара для Ivan_009

Ветеран


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

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


Как сделать свою форму запроса выхода из установки примерно как тут и чтобы работала с IsDone

Последний раз редактировалось Ivan_009, 11-08-2012 в 07:16.


Отправлено: 16:12, 07-08-2012 | #547


Аватара для Johny777

Ветеран


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

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


Ivan_009,
я раньше уже выкладывал этот код (ты воспользовался бы поиском)
ну да ладно
выдрал у себя из скрипта без отсылки на тот код тк этот лучше:

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


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


[CustomMessages]
Russian.Close=Выход
English.Close=Exit

Russian.Exit_Install=Выйти из инсталлятора?
English.Exit_Install=Exit Installer?

Russian.Exit_Install_2=Отменить установку?
English.Exit_Install_2=Cancel Installation?


[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
  MyExit: TSetupForm;

begin
  Confirm := False;
  
  MyExit := CreateCustomForm();
  with MyExit do
  begin
    Position := poScreenCenter;
    ClientWidth := ScaleX(200);
    ClientHeight := ScaleY(87);
    Caption := ExpandConstant('{cm:Close}');
    Color := clBtnFace;
    DeleteMenu(GetSystemMenu(MyExit.Handle,False), $F060,0); /// сделать кнопку "закрыть" неактивной
    SetClassLong(MyExit.Handle, -26, GetClassLong(MyExit.Handle, -26) or $200); /// блокировка комбинации alt + f4

    with TLabel.Create(nil) do
    begin
      AutoSize := False;
      if WizardForm.CurPageID = wpInstalling then
      begin
        if ActiveLanguage = 'Russian' then SetBounds(ScaleX(37), ScaleY(16), ScaleX(140), ScaleY(30)) else SetBounds(ScaleX(47), ScaleY(16), ScaleX(140), ScaleY(30));
        Caption := ExpandConstant('{cm:Exit_Install_2}');
      end else
      begin
        if ActiveLanguage = 'Russian' then SetBounds(ScaleX(30), ScaleY(16), ScaleX(140), ScaleY(30)) else SetBounds(ScaleX(65), ScaleY(16), ScaleX(140), ScaleY(30));
        Caption := ExpandConstant('{cm:Exit_Install}');
      end;
      Parent := MyExit;
      Font.Size := 9;
    end;

    with TButton.Create(nil) do
    begin
      Parent := MyExit;
      Caption := ExpandConstant(SetupMessage(msgButtonNo));
      SetBounds(ScaleX(18), ScaleY(47), ScaleX(71), ScaleY(25));
      Cursor := crHand;
      ModalResult:= mrNo;
    end;

    with TButton.Create(nil) do
    begin
      Caption := ExpandConstant(SetupMessage(msgButtonYes));
      Parent := MyExit;
      SetBounds(ScaleX(110), ScaleY(47), ScaleX(71), ScaleY(25));
      Cursor := crHand;
      ModalResult := mrYes;
    end;

    case ShowModal() of
    
      mrNo : Cancel := False;         

      mrYes :
      begin
        case
          WizardForm.CurPageID of
          wpInstalling : Application.Title := ExpandConstant(' ' + SetupMessage(msgButtonCancel) + '...');
        end;
      end;
      
    end;
    
    Free;
  end;
end;

Цитата Ivan_009:
и чтобы работала с IsDone »
пример выше с ним не работает
IsDone не знаю

Последний раз редактировалось Johny777, 07-08-2012 в 21:22.

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

Отправлено: 21:14, 07-08-2012 | #548


Аватара для Mailchik

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


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

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


Цитата:
и чтобы работала с IsDone
Код: Выделить весь код
procedure CancelButtonOnClick(Sender: TObject); 
begin   
SuspendProc;   
MyExitMessage();   
if MyExit.ShowModal() = mryes then  ISDoneCancel:=1;   
ResumeProc; 
end; 
MyCancelButton.OnClick := @CancelButtonOnClick;
Для кода, который выложил товарищ Johny777 выше.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:22, 07-08-2012 | #549


Ветеран


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

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


Цитата Gnom_aka_Lexander:
элементарно добавить условие и все. »
Зачем перебирать все имена в папке, когда можно просто указать маску?
Так будет быстрей работать:
читать дальше »

Код: Выделить весь код
function GetFileCount(dir, mask: string): Integer;
var
  FindFiles: TFindRec;
begin
  Result := 0;
  if dir[Length(dir)] <> '\' then
    Insert('\', dir, Length(dir)+1);
  if FindFirst(dir + mask, FindFiles) then
    begin
      repeat
        if FindFiles.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          case FindFiles.Name of
            {#FNames}: Result := Result + 1;
          end;
      until not FindNext(FindFiles);
      FindClose(FindFiles);
    end;
end;

procedure InitializeWizard();
begin
  WizardForm.WelcomeLabel1.Caption :=  IntToStr(GetFileCount(ExpandConstant('{pf}\Inno Setup 5'), '*_update.exe'));
end;

Цитата Gnom_aka_Lexander:
тоесть функция полностью на асме, без паскалевских логических скобок. »
Ассеблер не поддерживается в Инно.

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

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

Отправлено: 21:58, 07-08-2012 | #550



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




 
Переход