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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • 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.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

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


Отправлено: 22:06, 23-08-2009

 

Ветеран


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

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


Цитата R.i.m.s.k.y.:
чтобы при выборе к установке плеера MPC нельзя было зарегить файлы на GOM и KMP??? »
Не понял суть вопроса, у вас сейчас и так стоят флаги exclusive, уточните что вы хотите сделать...
Цитата R.i.m.s.k.y.:
Можно ли как то поставить условие в скрипте на облегченный дистр - IsLite=1 и все Components: pl не включались в итоговый лайт-дистр? »
Так и сделайте в скрипте проверку, т.е. добавьте условие к тем компонентам, которые отображать не нужно, пример:
читать дальше »
Код: Выделить весь код
[Components]
Name: pl; Description: Плееры; Types: full
Name: pl\kmp; Description: The KMPlayer 2.9.4.1437; Types: full recom; Check: IsLite
Name: pl\gom; Description: GOM Player 2.1.23.5007 Rus; Types: full; Check: IsLite
Name: pl\mpc; Description: Media Player Classic Home Cinema 1.3.1249.0; Types: full; Check: IsLite
Name: pl\mpc\mpcdxva; Description: Аппаратное ускорение воспроизведения h264 и VC-1; Flags: checkablealone dontinheritcheck
Name: pl\fl; Description: Зарегестрировать файлы на:; Types: full recom
Name: pl\fl\kmp; Description: The KMPlayer; Flags: exclusive; Types: full recom
Name: pl\fl\gom; Description: GOM Player; Flags: exclusive
Name: pl\fl\mpc; Description: Media Player Classic Home Cinema; Flags: exclusive

[Code]
const
  sLite = False;

function IsLite: Boolean;
begin
  Result := sLite;
end;

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


Последний раз редактировалось Serega, 17-08-2010 в 00:03. Причина: спрятал код в тег


Отправлено: 14:33, 16-08-2010 | #2191



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

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


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

Ветеран


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

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


Цитата Serega:
Так и сделайте в скрипте проверку, т.е. добавьте условие к тем компонентам, которые отображать не нужно, пример: »
Сделал, в лайт версии IsLite возвращает True, в полной - False (не легкая сборка)
Робит, в списке компонентов не появляется, но лайт-сборка весит как полная, резать по скрипту не хочется - можно че-нить пропустить или приотрезать лишнего.

Про выбор плееров: выбираю для установки KMP и MPC - надо чтобы можно было зарегить файлы либо на KMP или MPC (это сделано флагом exclusive) но нельзя было выбрать GOM. В текущей реализации можно для установки выбрать KMP и MPC и зарегить видеофайлы на GOM, что неправильно. Как сделать так, чтобы регистрация видеофайлов становилась активной при выборе соответствующего плеера?

Это я RimPack дотачиваю.

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


Отправлено: 15:53, 16-08-2010 | #2192


Ветеран


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

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


Цитата R.i.m.s.k.y.:
можно че-нить пропустить или приотрезать лишнего. »
при большом желании, можно хоть что, пример:
читать дальше »
Код: Выделить весь код
; здесь указываем какая версия, т.е. облегчённая или нет...
# define IsLite = False

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

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

[Types]
Name: full; Description: Полная установка
Name: recom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: pl; Description: Плееры; Types: full
#if IsLite == True
  Name: pl\kmp; Description: The KMPlayer 2.9.4.1437; Types: full recom 
  Name: pl\gom; Description: GOM Player 2.1.23.5007 Rus; Types: full
#endif
Name: pl\mpc; Description: Media Player Classic Home Cinema 1.3.1249.0; Types: full
Name: pl\mpc\mpcdxva; Description: Аппаратное ускорение воспроизведения h264 и VC-1; Flags: checkablealone dontinheritcheck
Name: pl\fl; Description: Зарегестрировать файлы на:; Types: full recom
Name: pl\fl\kmp; Description: The KMPlayer; Flags: exclusive; Types: full recom
Name: pl\fl\gom; Description: GOM Player; Flags: exclusive
Name: pl\fl\mpc; Description: Media Player Classic Home Cinema; Flags: exclusive

[Files]
#if IsLite == True
  Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: pl\kmp; Flags: ignoreversion
  Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: pl\gom; Flags: ignoreversion
#endif
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: pl\mpc; Flags: ignoreversion


Цитата R.i.m.s.k.y.:
Как сделать так, чтобы регистрация видеофайлов становилась активной при выборе соответствующего плеера? »
т.е. если мы снимаем отметку с чебокса какого-то плеера, то и соответствующий радиобатон был не доступен?
Если да, то нужно просто добавить функцию обработки кликов.
Если надо, чуть позже накидаю пример...

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

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

Отправлено: 17:33, 16-08-2010 | #2193


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


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

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


как сделать так,что на протяжении всего процесса установки в инсталле стояла моя картинка,а не белый фон,скрипт могу написать


ПОМОГИТЕЕЕЕЕЕ!!!!!!!!!!!!!!!!

Последний раз редактировалось medved_orbitel, 16-08-2010 в 18:51.


Отправлено: 18:22, 16-08-2010 | #2194


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


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

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


Не могу токлом найти информацию: как использовать два раза функцию InitializeSetup? Вот два скрипта:


читать дальше »

Function InitializeSetup: Boolean; Begin
If Uppercase(ExpandConstant('1.6.02')) = Uppercase(ExpandConstant('{reg:HKLM\Software\GSC Game World\STALKER-COP,installvers}')) then Result:= True else
Begin; Result:= True; MsgBox('Тут текст какой-то ', mbInformation, mb_Ok); end;
End;
procedure BevelLabelClick(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://tfile.ru','', '', SW_SHOW, ewNoWait, ErrorCode)
end;


procedure InitializeWizard();
begin
with WizardForm do begin
with BeveledLabel do begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;

function InitializeSetup :Boolean;
begin
if DirExists({reg:HKLM\Software\GSC Game World\STALKER-COP,installvers}\gamedata) then
DelTree({reg:HKLM\Software\GSC Game World\STALKER-COP,installvers}\gamedata, True, True, True);
end;


И еще: где-то видел скрипт, который сворачивает окно распаковки в маленькое в углу типа Installshield. Где можно найти пример того скрипта, а то я у себя его найти не могу...

Отправлено: 23:12, 16-08-2010 | #2195


Ветеран


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

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


R.i.m.s.k.y., накидал вам пример, как это делается:
читать дальше »
Код: Выделить весь код
; здесь указываем какая версия
# define IsLite = True
; задаём описания компонентов
# define kmpDesc "The KMPlayer 2.9.4.1437"
# define gomDesc "GOM Player 2.1.23.5007 Rus"
# define mpcDesc "Media Player Classic Home Cinema 1.3.1249.0"
# define aDesc "Зарегестрировать файлы на:"
# define kDesc "The KMPlayer"
# define gDesc "GOM Player"
# define mDesc "Media Player Classic Home Cinema"

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

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

[Types]
Name: full; Description: Полная установка
Name: recom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: pl; Description: Плееры; Types: full
#if IsLite == True
  Name: pl\kmp; Description: {#kmpDesc}; Types: full recom
  Name: pl\gom; Description: {#gomDesc}; Types: full
#endif
Name: pl\mpc; Description: {#mpcDesc}; Types: full
Name: pl\mpc\mpcdxva; Description: Аппаратное ускорение воспроизведения h264 и VC-1; Flags: checkablealone dontinheritcheck
Name: pl\fl; Description: {#aDesc}; Types: full
#if IsLite == True
  Name: pl\fl\kmp; Description: {#kDesc}; Flags: exclusive; Types: full recom
  Name: pl\fl\gom; Description: {#gDesc}; Flags: exclusive
#endif
Name: pl\fl\mpc; Description: {#mDesc}; Flags: exclusive

[Files]
#if IsLite == True
  Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: pl\kmp; Flags: ignoreversion
  Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: pl\gom; Flags: ignoreversion
#endif
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: pl\mpc; Flags: ignoreversion

[Code]
var
  kmp, gom, mpc, aReg, kReg, gReg, mReg: Integer;

procedure CorCheck;
{ корректируем отмеченность радиобатонов }
var
  i: Integer;
begin
  for i := kReg to mReg do
    if WizardForm.ComponentsList.ItemEnabled[i] then
      begin
        WizardForm.ComponentsList.Checked[i] := True;
        Break;
      end;
end;

procedure ComponentsListClick(Sender: TObject);
var
  Correct: Boolean;
begin
  Correct := True;
  { сразу проверим, все ли интиресующие компоненты доступны... }
  if not WizardForm.ComponentsList.Checked[kmp] and
    not WizardForm.ComponentsList.Checked[gom] and
    not WizardForm.ComponentsList.Checked[mpc] then
  { если нет, снимем отметку с aDesc }
    WizardForm.ComponentsList.Checked[aReg] := False;
  { в зависимости от того на кого кликнули, производим действия }
  case WizardForm.ComponentsList.ItemIndex of
    kmp: WizardForm.ComponentsList.ItemEnabled[kReg] := WizardForm.ComponentsList.Checked[kmp];
    gom: WizardForm.ComponentsList.ItemEnabled[gReg] := WizardForm.ComponentsList.Checked[gom];
    mpc: WizardForm.ComponentsList.ItemEnabled[mReg] := WizardForm.ComponentsList.Checked[mpc];
    else Correct := False;
  end;
  if Correct then
    CorCheck;
  { перерисуем лист компонентов }
  WizardForm.ComponentsList.Repaint;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectComponents then
    begin
{ выполняем в случае если IsLite := True }
#if IsLite == True
      { узнаем порядковые номера наших компонентов... }
      kmp := WizardForm.ComponentsList.Items.IndexOf('{#kmpDesc}');
      gom := WizardForm.ComponentsList.Items.IndexOf('{#gomDesc}');
      mpc := WizardForm.ComponentsList.Items.IndexOf('{#mpcDesc}');
      aReg := WizardForm.ComponentsList.Items.IndexOf('{#aDesc}');
      kReg := WizardForm.ComponentsList.Items.IndexOf('{#kDesc}');
      gReg := WizardForm.ComponentsList.Items.IndexOf('{#gDesc}');
      mReg := WizardForm.ComponentsList.Items.IndexOf('{#mDesc}');
      WizardForm.ComponentsList.OnClick := @ComponentsListClick;
#endif
    end;
end;


Цитата medved_orbitel:
на протяжении всего процесса установки в инсталле стояла моя картинка »
в шапке темы есть ссылка на пример, "Ссылки на примеры скриптов:" > "Картинка на страницах инсталлятора"

Цитата SkarM:
как использовать два раза функцию InitializeSetup? »
никак, одинаковых процедур быть не может, делается путём объединения кода, либо руками, либо InnoSetup Script Joiner из шапки темы.
Вы откуда брали код? просто первая function InitializeSetup, там всегда результат True. т.е. будет запускаться инстал всегда, а вторая function InitializeSetup не рабочая.

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

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

Отправлено: 23:56, 16-08-2010 | #2196


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

Ветеран


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

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


Serega,
СПАСИБИЩЕ!!!

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


Отправлено: 08:22, 17-08-2010 | #2197


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


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

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


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

Отправлено: 09:03, 17-08-2010 | #2198


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


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

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


парни, привет. Нуждаюсь в вашей помощи) Комплияция проходит успешно. Но подскажите пожалуйста, как можно сменить значки? (см. ниже)

http://rghost.ru/2364155

Отправлено: 10:19, 17-08-2010 | #2199


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

Ветеран


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

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


Вот такой инно-код для тихой установки без вопросов

Код: Выделить весь код
[Setup]
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
DisableStartupPrompt=true
DisableReadyMemo=true
[_Code]
procedure CurPageChanged(CurPageID: Integer);

begin

  If CurPageID=wpWelcome then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpReady then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpPreparing then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpInstalling then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpInfoAfter then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpLicense then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpPassword then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpInfoBefore then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpUserInfo then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpSelectDir then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpSelectComponents then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpSelectProgramGroup then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpSelectTasks then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpReady then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpPreparing then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpInstalling then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpInfoAfter then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

  If CurPageID=wpFinished then
  begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
  end;

end;
При запуске инсталлера все равно появляется одно окно "Все готово к установке. Нажмите установить чтобы продолжить". Как его убрать, как сделать так бы при запуске экзешника все ставилось без нажатий далее/установить?
Про параметры /silent знаю, но сейчас не подходят

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


Отправлено: 14:40, 17-08-2010 | #2200



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход