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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

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

Ветеран


Contributor


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

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


Цитата Лександер:
El Sanchez, одна беда - шрифт остается во временной папке »
Лександер, мерси, поправил. Не удалялся, потому что форма, его использующая, еще существовала.

Цитата Лександер:
Причина, как объяснили, какая-то программа ловит это сообщение и не пересылает его дальше »
Попахивает грязным хуком. Антивирь как всегда спит при работе таких "обслуживающих утилиток"?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:19, 10-03-2012 | #1011



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата El Sanchez:
Антивирь как всегда спит при работе таких "обслуживающих утилиток"? »
В том-то и дело, что ничего не говорит. Стоит лицензионный доктор веб на параноидальных настройках. Лично ничего такого не ставил, софт стараюсь с официальных сайтов качать. Но есть товарищь, у которого на чистой лицензионной семерке такая-же беда была. Что говорит о косяке мелких. видимо срабатывает комплекс железо+ос+драйвера.

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

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

Отправлено: 13:41, 10-03-2012 | #1012


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


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

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


Люди да помогите чайнику исправить хоть и тупой но скрипт, нодо что бы он распаковывал arc архив, и всё что внём. Я сделал что бы он расспаковывал сам .arc архив но он не распаковывает всё что внём,помогите поправить
Вот скриншот

Код: Выделить весь код
[Setup]
AppName=Sigerous Mod для COP
AppVerName=Sigerous Mod v2.2
DefaultDirName=stalker
InfoBeforeFile=embedded\InfoBefore.rtf
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp


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

[Files]
Source: *.arc; DestDir: {app}; Flags: ignoreversion
Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: {group}\Uninstall; IconFilename: {app}\unins000.exe; Filename: {app}\unins000.exe

[_Code]


const
  PM_REMOVE      = 1;

function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';

procedure AppProcessMessage;
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, WizardForm.Handle, 0, 0, PM_REMOVE) do begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end;



type
  
  TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;

function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword;
  external 'wrapcallback@files:innocallback.dll stdcall';

function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl';



var
 ProgressBar: TNewProgressBar;
 ExtractFile: TNewStaticText;
 Button1:     TButton;
 Cancel:      Integer;

procedure InitializeWizard();
begin
  ProgressBar := TNewProgressBar.Create(WizardForm);
  ExtractFile:=TNewStaticText.Create(WizardForm);
  with WizardForm.ProgressGauge do
    begin
      ProgressBar.Left := Left;
      ProgressBar.Top := Top + ScaleX(55);
      ProgressBar.Width := Width;
      ProgressBar.Height := Height;
      ProgressBar.Parent := WizardForm.InstallingPage;
      ProgressBar.max := 1000;
      ProgressBar.Position := 0;
      ExtractFile.parent:=WizardForm.InstallingPage;
      ExtractFile.autosize:=false;
      ExtractFile.Width := Width;
      ExtractFile.top:=Top + ScaleX(35);
      ExtractFile.caption:='Распаковка архива FreeArc';
    end;
end;

procedure Button1OnClick(Sender: TObject);
begin
  Cancel := -1;
end;

function FreeArcCallback (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;
var percents: Integer;
begin
  if string(what)='filename' then
      //ExtractFile.Caption:=str
  else if (string(what)='progress') and (int2>0) then begin
      percents := (int1*1000) div int2;
      ProgressBar.Position := percents;
      ExtractFile.Caption:='Распаковано '+IntToStr(int1)+' из '+IntToStr(int2)+' мб ('+FloatToStr(percents/10)+'%)';
  end;
  AppProcessMessage;
  Result := Cancel;
end;

procedure ExtractFreeArcArchive(arcname: String; destpath: String);
var callback: longword;
    res: Integer;
begin
  AppProcessMessage;
  callback:=WrapFreeArcCallback(@FreeArcCallback,4);   //FreeArcCallback has 4 arguments
  Cancel := 0;
  try
   res := FreeArcExtract (callback, 'x', '-o+', '-dp'+destpath, '--', arcname, '', '', '', '', '');
   if cancel<0 then
     MsgBox('Installation cancelled', mbInformation, MB_OK);
   if res<0 then
     MsgBox('Decompression failed with error code '+IntToStr(res)+'!', mbError, MB_OK);
   Button1.visible:=false;
  except
   MsgBox('Decompression failed!', mbError, MB_OK);
   Button1.visible:=false;
  end;
  DeleteFile(arcname);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var app: String;
begin
  If CurStep=ssPostInstall then
   begin
    Button1:=TButton.create(WizardForm);
    Button1.parent:=WizardForm;
    Button1.width:=135;
    Button1.caption:='Cancel installation';
    Button1.left:=260;
    Button1.top:=WizardForm.cancelbutton.top;
    Button1.OnClick:=@Button1OnClick;

    app := ExpandConstant('{app}');
    ExtractFreeArcArchive(app+'\data.arc', app);
   end;
end;

Отправлено: 13:44, 10-03-2012 | #1013


Аватара для Johny777

Ветеран


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

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


R.i.m.s.k.y.,
вот как это реализовано Inno Setup GameScript Generator от South http://forum.csmania.ru/viewtopic.php?t=4688
читать дальше »
Код: Выделить весь код
procedure RunListClickCheck(Sender: TObject);
var
  i:integer;
begin
  if WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex] then begin
    for i:=0 to WizardForm.RunList.Items.Count-1 do
      WizardForm.RunList.Checked[i]:=False;
    WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex]:=True;
  end;
end;

procedure InitializeWizard;
begin
  WizardForm.RunList.OnClickCheck:=@RunListClickCheck;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then
    WizardForm.RunList.Checked[0]:=True;
end;

Последний раз редактировалось Johny777, 10-03-2012 в 14:34.

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

Отправлено: 14:11, 10-03-2012 | #1014


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Johny777, спасибо, но я уже сделал как выше привел пример

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 14:38, 10-03-2012 | #1015


Забанен


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

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


alert30, Просто рекламма

Отправлено: 15:36, 10-03-2012 | #1016


Аватара для alert30

Ветеран


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

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


Цитата repacksman:
alert30, Просто рекламма »
Ясно. ОК.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:00, 10-03-2012 | #1017


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


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

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


Archives = '{#ArcLocation}'; как сдесь указывать расположение архивов arc ???

Отправлено: 22:14, 10-03-2012 | #1018


Аватара для Johny777

Ветеран


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

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


by_gangster,
ты прости, но это уже не в какие ворота
кажись я писал вот это
Цитата Johny777:
я специально тебе вынес настройку расположения архивов в начало скрипта, чтобы даже в код заглядывать не нужно было »
Цитата Johny777:
#define ArcLocation "{src}\*.arc" красного цвета определяет расположение архивов по отношению к инсталлятору »
а что в скрипте?


будь немного внимательнее!

Последний раз редактировалось Johny777, 11-03-2012 в 00:43.

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

Отправлено: 23:38, 10-03-2012 | #1019


Аватара для valyok666

Старожил


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

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


by_gangster, используй исдоне проще в обращении))

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"

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

Отправлено: 00:42, 11-03-2012 | #1020



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход