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

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

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

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

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

Аватара для Dodakaedr

Ветеран


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

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


Цитата:
тогда у меня пойдет, а у других людей будет писать World of Tanks не найден
Тогда сделайте так:
Скрытый текст
Код: Выделить весь код
[Setup]
DefaultDirName={code:SetInstDir}

[Code]
function SetInstDir(const lpResult: String): String;
begin
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1\', 'InstallLocation',  lpResult);
    if lpResult <> '' then Result := RemoveBackslash(lpResult) else Result := ExpandConstant('{pf}\');
end;

function InitializeSetup(): Boolean;
begin
if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
MsgBox('Игра World_of_Tanks не найдена! Укажите путь к папке с игрой вручную!', mbinformation, mb_ok);
Result:=True;
end;


Цитата Painkiller:
создает дополнительную страницу с чебоксами и радиобутанами »
Кастомная страница с кнопками
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
var
r1, r2: TNewRadioButton;
Page: TWizardPage;
But1, But2: TNewCheckBox;

procedure InitializeWizard();
begin
 Page := CreateCustomPage(wpSelectTasks, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');

r1 := TNewRadioButton.Create(WizardForm);
  with r1 do
  begin
    Parent := Page.Surface;
    SetBounds(ScaleX(20), ScaleY(20), ScaleX(100), ScaleY(15));
    Caption := 'Радиокнопка 1';
    Checked := True;
  end;

r2 := TNewRadioButton.Create(WizardForm);
  with r2 do
  begin
    Parent := Page.Surface;
    SetBounds(ScaleX(20), ScaleY(50), ScaleX(100), ScaleY(15));
    Caption := 'Радиокнопка 2';
  end;

But1 := TNewCheckBox.Create(WizardForm);
  with But1 do
  begin
    Parent := Page.Surface;
    SetBounds(ScaleX(20), ScaleY(80), ScaleX(100), ScaleY(15));
    Caption := 'Кнопка 1';
  end;

But1 := TNewCheckBox.Create(WizardForm);
  with But1 do
  begin
    Parent := Page.Surface;
    SetBounds(ScaleX(20), ScaleY(110), ScaleX(100), ScaleY(15));
    Caption := 'Кнопка 2';
    Checked := True;
  end;

end;


P.S. Larkod, если игра официальная, то не будет.

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 22:58, 23-11-2014 | #1981



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

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


Ветеран


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

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


Цитата Larkod:
тогда у меня пойдет, а у других людей будет писать World of Tanks не найден »
AppId игры будет одинаковым на любой машине.

-----------------------------------------------------------------------------------------------------------------
Цитата Painkiller:
скрипт который создает дополнительную страницу с чебоксами и радиобутанами . »
Цитата Dodakaedr:
Кастомная страница с кнопками »
Добавлю еще такой вариант:
читать дальше »
Код: Выделить весь код
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=...


[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Check: IsChecked( 0 );
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Check: IsChecked( 1 );
Source: compiler:Examples\Readme.txt; DestDir: {app}; Flags: isreadme; Check: IsChecked( 2 );


[Code]
var
    TasksPage: TInputOptionWizardPage;


function IsChecked( const nIndex: Integer ): Boolean;
begin
    Result := TasksPage.CheckListBox.Checked[nIndex];
end;


function CreateTasksPage( const nPageId: Integer ): TInputOptionWizardPage;
begin
    TasksPage := CreateInputOptionPage( nPageId, 'Заголовок', 'Подзаголовок', 'Текст', False, False );

    with TasksPage do
    begin
        Add( 'Задача 1' );
        Add( 'Задача 2' );
        Add( 'Задача 3' );

        AddEx( 'Задача 4', 0, False );
          AddEx( 'Радио 1', 1, True );
          AddEx( 'Радио 2', 1, True );
    end;

    Result := TasksPage.ID;
end;

  
procedure InitializeWizard;
begin
    CreateTasksPage( wpWelcome );
end;

Последний раз редактировалось saurn, 23-11-2014 в 23:08.

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

Отправлено: 23:00, 23-11-2014 | #1982


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


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

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


Dodakaedr, а нельзя сделать чтобы путь сам прописывался без окон всплывающих Укажите путь сам
saurn, может быть, но в данном коде писало бы так Танки не найдены

Отправлено: 23:10, 23-11-2014 | #1983


Аватара для Painkiller

Ветеран


Автор проектов


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

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


saurn , твой вариант я и искал . Вот только бы пример не помешал как привязать чебокс и радиобокс к действиям ???

-------
http://wiki.oszone.net/images/0/03/UserbarAAA4.gif


UpdatePack 7 для интеграции обновлений в образ Windows 7 SP1 [X86\64]

UpdatePack 8.1 для интеграции обновлений в образ Windows 8.1 [X86\64]

UpdatePack 10 для интеграции обновлений в образ Windows 10 [X86\64]


Отправлено: 23:16, 23-11-2014 | #1984


Аватара для Dodakaedr

Ветеран


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

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


saurn, А как изначально отмеченным сделать? Разобрался.
Larkod, удалите
Код: Выделить весь код
if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
MsgBox('Игра World_of_Tanks не найдена! Укажите путь к папке с игрой вручную!', mbinformation, mb_ok);
Цитата Painkiller:
как привязать чебокс и радиобокс к действиям ??? »
Посмотрите на
Код: Выделить весь код
function IsChecked( const nIndex: Integer ): Boolean;
begin
    Result := TasksPage.CheckListBox.Checked[nIndex];
end;

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 23-11-2014 в 23:24.

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

Отправлено: 23:17, 23-11-2014 | #1985


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


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

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


Есть еще предложения?

Отправлено: 23:28, 23-11-2014 | #1987


Ветеран


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

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


Цитата Larkod:
но в данном коде писало бы так Танки не найдены »
Если указан оригинальный AppId, то нет.
Цитата Larkod:
а нельзя сделать чтобы путь сам прописывался без окон всплывающих Укажите путь сам »
Скрытый текст
[code]
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={code:DefaultInstallDir}
OutputDir=...


[Code]
function DefaultInstallDir( const szResult: String ): String;
begin
    RegQueryStringValue( HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', szResult );
    if ( szResult <> '' ) then
      Result := RemoveBackslash( szResult ) else Result := ExpandConstant( '{pf}\My Program' );
end;


-------------------------------------------------------------------------------
Цитата Painkiller:
Вот только бы пример не помешал как привязать чебокс и радиобокс к действиям ??? »
Булевая функция IsChecked возвращает True, если отмечен чекбокс, номер которого указан во входной константе nIndex, нумерация идет с нуля:
Для секций вне кода:
Код: Выделить весь код
Check: IsChecked( 0 );
Для секции [code]:
Код: Выделить весь код
if IsChecked( 0 ) then 
...
---------------------------------------------------------------------
Цитата Dodakaedr:
А как изначально отмеченным сделать? »
Скрытый текст
Код: Выделить весь код
with TasksPage do
    begin
        Add( 'Задача 1' );
        Add( 'Задача 2' );
        Add( 'Задача 3' );

        AddEx( 'Задача 4', 0, False );
          AddEx( 'Радио 1', 1, True );
          AddEx( 'Радио 2', 1, True );

        Values[2] := True;  //отмечен контрол номер два
    end;

Последний раз редактировалось saurn, 24-11-2014 в 00:13.

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

Отправлено: 23:28, 23-11-2014 | #1988


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


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

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


saurn, без изменений
вот мой скрипт https://docs.google.com/file/d/0B7Ym...R0T2cyWHM/edit

Отправлено: 23:35, 23-11-2014 | #1989


Ветеран


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

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


Цитата Larkod:
без изменений »
Напортачил с функцией. Обновил пример постом выше, теперь будет работать, только ключ реестра укажите правильный.

Отправлено: 23:40, 23-11-2014 | #1990



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты 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




 
Переход