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

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

 

Аватара для Johny777

Ветеран


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

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


Yury_Prizrak,
вот такой пример есть:
читать дальше »

Код: Выделить весь код
[Setup]
AppName=Quake Live
AppVerName="Quake Live"
AppPublisher=Mio Dark Project
CreateAppDir=no

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

[Types]
Name: "full"; Description: "Все компоненты";
Name: "custom"; Description: "Выбрать компоненты"; Flags:  iscustom

[Components]
Name: "main"; Description: "Cтандартные файлы Quake Live"; Types: full custom; Flags: fixed
Name: "main2"; Description: "Премиум файлы Quake Live"; Types: full custom;
Name: "plug"; Description: "Плагин Quake Live"; Types: full custom;
Name: "browser"; Description: "Портативный Firefox под Quake Live"; Types: full custom;
Name: "manual"; Description: "Руководство и Награды"; Types: full custom;
Name: "anti"; Description: "Античит PunkBuster"; Types: full custom;

[CustomMessages]
HeaderLabelPage=Выберите тип вашего аккаунта
MyRadioCaption_1=Standart
MyRadioCaption_2=Premium / Pro
PageTextHeader=На этой странице Вы можете выбрать тип вашего аккаунта, который вы используете в игре.
MyText_1=Будут установлены файлы которые доступны для игроков без подписки.
MyText_2=Будут установлены файлы которые доступны для игроков с Premium/Pro подпиской.


[code]
var
  MyNewPage: TWizardPage;
  MyRadioBtn:ArraY[0..1]of TNewRadioButton;

procedure GetInstType;
begin
  WizardForm.ComponentsList.ItemEnabled[1]:= MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
  WizardForm.ComponentsList.Checked[1]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
  WizardForm.ComponentsList.Checked[4]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
end;

procedure GetInstTypePage;
var
  i:integer;
begin
  MyNewPage := CreateCustomPage(wpWelcome,
  ExpandConstant('{cm:HeaderLabelPage}'), '');

  with TNewStaticText.Create(WizardForm) do
  begin
    Width := WizardForm.InnerNotebook.Width;
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:PageTextHeader}');
    Parent := MyNewPage.Surface;
  end;

  for i:=0 to 1 do
  begin
    MyRadioBtn[i] := TNewRadioButton.Create(WizardForm);
    with MyRadioBtn[i] do
    begin
      Parent := MyNewPage.Surface;
      Top := ScaleY(50+i*70);
      Width := ScaleX(150);
      case i of
        0: begin
          Caption := ExpandConstant('{cm:MyRadioCaption_1}');
          Checked := True;
        end;
        1:Caption := ExpandConstant('{cm:MyRadioCaption_2}');
      end;
    end;

    with TNewStaticText.Create(WizardForm) do
    begin
      Parent := MyNewPage.Surface;
      SetBounds(ScaleX(16),ScaleY(68+i*70),WizardForm.InnerNotebook.Width - ScaleX(60),ScaleY(26));
      WordWrap := True;
      case i of
        0:Caption := ExpandConstant('{cm:MyText_1}');
        1:Caption := ExpandConstant('{cm:MyText_2}');
      end;
    end;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID <= wpSelectDir)
    and (PageID = wpReady)
      and (MyRadioBtn[1].Checked)
        then Result := True;
end;

procedure InitializeWizard();
begin
  GetInstTypePage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectComponents then GetInstType;
end;

или на основе предыдущего, но попроще и как ты хотел
читать дальше »

Код: Выделить весь код
#define MyAppName "test"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
UsePreviousAppDir=false


[Components]
Name: a; Description: 1;
Name: b; Description: 2;
Name: c; Description: 3;
Name: d; Description: 4;
Name: e; Description: 5;


[code]
var
  Page: TInputOptionWizardPage;

procedure InitializeWizard();
begin
  Page:= CreateInputOptionPage(wpSelectDir, 'тип установки', '', '', false, false);
	Page.Add('полная версия');
	WizardForm.TypesCombo.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectComponents then 
  begin
    WizardForm.ComponentsList.ItemEnabled[1]:= Page.Values[0];
    WizardForm.ComponentsList.ItemEnabled[4]:= Page.Values[0];
  end;
end;


detiedyatosla,
никак
родные лейблы не поддерживают прозрачность
пересоздавай и используй прозрачность
http://forum.oszone.net/post-1937887-305.html

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

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

Отправлено: 11:29, 27-06-2012 | #321



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

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


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


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

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


Цитата Yury_Prizrak:
Всем привет! Вопрос следующий(искал, чесно, чет не нашел - если было - плиз, дайте линку на ответ) - мне в инсталяции надо сделать чекбокс "полная версия" - его я сделал, а как "объяснить" инсталу, что если он не нажат - некоторые файлы устанавливать не надо? Т.е. есть например 5 файлов - 1 2 3 4 5, если чекбокс нажат - устанавливаем все, если нет - устанавливаем 1, 3, 4 а 2 и 5 нет. Заранее спасибо »
Все, с этим разобрался, извините. Возник другой вопрос - мне надо проверять была ли предустановлена эта программа(а точнее есть ли конфиг файл этой программы) и если нет - завершать установку. Думал сделать через function InitializeSetup() но есть одно но - ExpandConstant('{app}\Configuration\Config.xml') - в этот момент {app} еще не определен. Может что подскажете? Заранее спасибо

Johny777, я сделал все еще проще:
[code][Files]
Source: {#AppSrcPathAdmin}\1; DestDir: {app}; Flags: ignoreversion
Source: {#AppSrcPathAdmin}\2; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck
Source: {#AppSrcPathAdmin}\3; DestDir: {app}; Flags: ignoreversion
Source: {#AppSrcPathAdmin}\4; DestDir: {app}; Flags: ignoreversion
Source: {#AppSrcPathAdmin}\5; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck

Код: Выделить весь код
//Функция проверки чекбокса сервиса
	function ServiceCheck: Boolean;
begin
  Result := ServiceCheckBox.Checked;
end;

Отправлено: 13:24, 27-06-2012 | #322


Аватара для Johny777

Ветеран


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

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


Yury_Prizrak,

читать дальше »
Код: Выделить весь код
#define MyAppName "test"

[Setup]
AppID=The_Best_AppID_Ever_Made
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|{pf}\{#MyAppName}}

[Files]
Source: "config.xml"; DestDir: {app}\Configuration;

[Dirs]
Name: "{app}\Configuration"

[code]
function InitializeSetup:boolean;
var
  AppPath: string;

begin
    Result := True;
    AppPath := RemoveQuotes(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|}'));
    if FileExists(AppPath + '\Configuration\config.xml') then
    begin
      case MsgBox('Программа установлена и Файл config.xml там лежит. Продолжить?', mbError, MB_YESNO) of

        IDYES: Result := True;
      
        IDNO: Result := False;

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

Отправлено: 13:43, 27-06-2012 | #323


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


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

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


Johny777, а нельзя без прописи в реестр? Т.е. у меня
DefaultDirName={pf}\test\test - и он все равно как то выковыривает значение папки при новой инсталляции...

Отправлено: 14:07, 27-06-2012 | #324


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


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

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


Вроде не потеме: делаю репак игры. Обязательно доставать ключи реестра от игры? Нельзя добавить свои ключи?

Отправлено: 16:24, 27-06-2012 | #325


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

Ветеран


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

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


Цитата bond07:
Парни, большая просьба.
Путь установки: "C:\Program Files\Games\Selena6000
В реестре это выглядит так:
[HKEY_LOCAL_MACHINE\SOFTWARE\BaseGame\FileSystem]
"DataPath"="C:\Program Files\Games\Selena6000"
После установки программы нужно заменить "\Selena6000" на "\SELENA~1/>;"
То есть поменять название конечной папки, прога иначе не работает. Выручайте! »
Только нюанс, насколько я знаю ДОСовские проги надо сокращать всё: c:\progra~1\Games\Selena~1
Выручаю:

Код: Выделить весь код
Root: HKLM; SubKey: SOFTWARE\BaseGame\FileSystem; ValueType: string; ValueName: DataPath; ValueData: {code:GetShortName|{app}\Selena6000}; Flags: uninsdeletekeyifempty uninsdeletevalue deletevalue noerror


Цитата rasim933:
Вроде не потеме: »
да, не по теме
Цитата rasim933:
Обязательно доставать ключи реестра от игры? »
да, обязательно
Цитата rasim933:
Нельзя добавить свои ключи? »
можно, добавляй

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

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

Отправлено: 19:26, 27-06-2012 | #326


Аватара для Johny777

Ветеран


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

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


Yury_Prizrak,
извини, но я не совсем врубаю чего тебе хочется
Цитата Yury_Prizrak:
и он все равно как то выковыривает значение папки при новой инсталляции... »
так и будет
ставь хоть куда
Цитата Yury_Prizrak:
а нельзя без прописи в реестр? »
можно конечно
вот так:
CreateUninstallRegKey=no
или так
Uninstallable=no
во втором случае деинсталятор не будет создаваться

в примере который я тебе дал при первой установке создаётся ключ реестра (ну и файл копируется соответственно)
по нему при повторном запуске находит путь инсталл
это выражается в эдите пути на странице выбора директории установки, те там будет путь туда, куда ты в прошлый раз установил (это можно и убрать, но смысл?. Тогда ставишь по новому в другую папку, а ищет в предыдущей в выдаёт сообщение)
и этот же путь считывается в процедуре инициализации, по этому пути ищет файл и выдаёт месседж бокс, если файл найден
ты хотел
Цитата Yury_Prizrak:
проверять была ли предустановлена эта программа »
эта проверка есть
Цитата Yury_Prizrak:
а точнее есть ли конфиг файл этой программы »
через ключ реестра сначала находим программу и там ищем файл. Реализовано
Цитата Yury_Prizrak:
и если нет - завершать установку »
если файла нет и завершать, то это бред. Как же тогда его ставить?

Короче без ключа никак. Он всего один

или скажи поподробнее (на основе примера) как тебе нужно . Скорее всего я тебя недопонял
там видно будет!

Последний раз редактировалось Johny777, 28-06-2012 в 00:04.

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

Отправлено: 23:57, 27-06-2012 | #327


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


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

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


Цитата R.i.m.s.k.y.:
R.i.m.s.k.y. »
Спасибо, получилось:
ValueData: {code:GetShortName|{app}}/>

Последний раз редактировалось bond07, 28-06-2012 в 07:24.


Отправлено: 05:03, 28-06-2012 | #328


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

Старожил


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

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


Можно ли сделать так, чтобы если выбран компонент Game\Pottable то в меню Пуск вообще не создавались ни ярлыки ни папки?

Отправлено: 16:25, 28-06-2012 | #329


Аватара для Johny777

Ветеран


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

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


Raf-9600,

читать дальше »
Код: Выделить весь код
[Setup]
AppName=DisksInfo
VersionInfoVersion=5.0
AppVerName=DisksInfo
DefaultDirName={pf}\My program
DefaultGroupName=The_Most_Beautiful_Group_Name_Ever
EnableDirDoesntExistWarning=false

[Components]
Name: a; Description: portable;

[Icons]
Name: {group}\new\Notepad; Filename: notepad.exe; Check: not IsComponentSelected('a')
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:38, 28-06-2012 | #330



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




 
Переход