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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 908 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 806 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


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

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


Отправлено: 00:28, 04-11-2010

 

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

Ветеран


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

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


Neutron,
по второму вопросу ответ есть в сборнике скриптов в шапке
Код: Выделить весь код
[Setup] 
DefaultDirName={reg:HKLM\Software\My Program, Path} 

где будет браться путь из HKLM\Software\My Program , где ключ обозван Path , где в ключе Path хранится путь до того, что тебе надо. 
Вот как отключить окно выбора пути установки: 

[Setup] 
DefaultDirName={pf}\My Program 
DisableDirPage=yes 

Если же тебе надо, чтобы при отсутствии пути в реестре установка отменялась, то тебе надо задать проверку в реестре наличия ключа Path. Хотя я допускаю, что возможно, если установка не найдет этот ключ в реестре, то она в любом случае отменит сама себя.
С первым можно попробовать так:
Код: Выделить весь код
Function InitializeSetup: Boolean;
var res : integer;
begin
...
Exec('ping.exe ', ' 2ip.ru ', ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, res);
if res > 0 then begin
MsgBox('Надено подключение к интернету. Установка будет прекращена'+Filepath, mbInformation, MB_OK);
Result := False;
end;
end; //InitializeSetup

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

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

Отправлено: 09:52, 22-04-2011 | #1411



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

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


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


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

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


Здравствуйте! Очень нужна помощь в реализации казалось бы простой фишки, от которой зависит выход релиза.

Принцип: пользователь качает базовый пакет программы, во время установки на определенной странице (допустим, на стандартной странице выбора компонентов установки) он выбирает дополнительные пакеты для этой программы, который инсталлятор сам вытянет из нужного сервера и распакует во время установки.

На первый взгляд, всё просто - скачал плагин ISDownloader для IS, нашел уже чеё-то готовый скрипт который проверяет, выбран ли компонент и качает. Вот этот скрипт:

Код: Выделить весь код
 [Components]
Name: Component1; Description: Антивирус касперского; Flags: checkablealone; Types: full
Name: Component2; Description: Commfort Chat; Flags: checkablealone; Types: full
Name: Component3; Description: IpTv Player; Flags: checkablealone; Types: full
Name: Component4; Description: VideoLan (VLC); Flags: checkablealone; Types: full
Name: Component5; Description: Opera Browser; Flags: checkablealone; Types: full 

[Для Code (бб-код форума не парсится)]

procedure InitializeWizard();
begin
 itd_init; 

if ISComponentSelected('Component1') then itd_addfile('http://192.168.1.153/mhhl/install/KAV6WKS_2011-09-18_x600_05E5A9CD.key',expandconstant('{tmp}\KAV6WKS_2011-09-18_x600_05E5A9CD.key'));
if ISComponentSelected('Component1') then itd_addfile('http://192.168.1.153/mhhl/install/kav.msi',expandconstant('{tmp}\kav.msi'));
if ISComponentSelected('Component2') then itd_addfile('http://192.168.1.153/mhhl/install/Chat.exe',expandconstant('{tmp}\Chat.exe'));
if ISComponentSelected('Component3') then itd_addfile('http://192.168.1.153/mhhl/install/iptvLan.exe',expandconstant('{tmp}\iptvLan.exe'));
if ISComponentSelected('Component4') then itd_addfile('http://192.168.1.153/mhhl/install/vlc.exe',expandconstant('{tmp}\vlc.exe'));
if ISComponentSelected('Component5') then itd_addfile('http://192.168.1.153/mhhl/install/Opera11.exe',expandconstant('{tmp}\Opera11.exe'));


 itd_downloadafter(wpReady);
end;
Но вот беда - файлы качаются ВСЕ, независимо от того что выбрано на странице компонентов

Затем наткнулся на скрипт, в котором реализовано то что я хочу, но через костыли (вот он - http://freetexthost.com/osq0sfyeav) - тут перед появлением приветствия вылетают поочередно окошки для каждого компонента (типа: Ставить Это... Да/Нет), потом появляются нормальные окна установщика, окно с выбором компонентов (которое, естественно ни на что не влияет), но качает то что надо.

Прошу у вас помощи, т.к. срывается важный релиз. Гляньте кто-нибудь 1й код, мб там ошибка? Если там всё норм и это баг плагина, возможно ли действовать по принципу 2го кода, но создать новую страницу, которая будет иммитировать обычную страницу с компонентами(с чекбоксами)?

Заранее огромное спасибо за помощь.

Отправлено: 21:12, 22-04-2011 | #1412


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

Ветеран


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

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


MrAWP, ты компоненты обрабатываешь когда до самого окна компонентов еще очередь не дошла но оно уже создано - в InitializeWizard.
Почитай в справке Installation order, а пока попробуй так:
Код: Выделить весь код
procedure InitializeWizard();
begin
end;

procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpReady then begin
 itd_init; 

if ISComponentSelected('Component1') then itd_addfile('http://192.168.1.153/mhhl/install/KAV6WKS_2011-09-18_x600_05E5A9CD.key',expandconstant('{tmp}\KAV6WKS_2011-09-18_x600_05E5A9CD.key'));
if ISComponentSelected('Component1') then itd_addfile('http://192.168.1.153/mhhl/install/kav.msi',expandconstant('{tmp}\kav.msi'));
if ISComponentSelected('Component2') then itd_addfile('http://192.168.1.153/mhhl/install/Chat.exe',expandconstant('{tmp}\Chat.exe'));
if ISComponentSelected('Component3') then itd_addfile('http://192.168.1.153/mhhl/install/iptvLan.exe',expandconstant('{tmp}\iptvLan.exe'));
if ISComponentSelected('Component4') then itd_addfile('http://192.168.1.153/mhhl/install/vlc.exe',expandconstant('{tmp}\vlc.exe'));
if ISComponentSelected('Component5') then itd_addfile('http://192.168.1.153/mhhl/install/Opera11.exe',expandconstant('{tmp}\Opera11.exe'));
 itd_downloadafter(wpInstalling);
end;//wpReady 
end;//CurPageChanged
Только смотри чтобы промежуточные окна инно не были отключены а то условие не сработает, тогда wpReady смени на то, что наступает перед wpInstalling, на wpSelectProgramGroup к примеру

страницы идут в следующем порядке
wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished

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


Последний раз редактировалось R.i.m.s.k.y., 22-04-2011 в 22:10.


Отправлено: 21:53, 22-04-2011 | #1413


Ветеран


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

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


Цитата MrAWP:
Но вот беда - файлы качаются ВСЕ, независимо от того что выбрано на странице компонентов »
Ответ есть в ваших словах, немного вдумайтесь...
Когда срабатывает procedure InitializeWizard(); и когда нужно проверять ISComponentSelected?

P.S.
R.i.m.s.k.y., извиняюсь когда писал поста не было...

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


Отправлено: 21:53, 22-04-2011 | #1414


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

Ветеран


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

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


Цитата Serega:
R.i.m.s.k.y., извиняюсь когда писал поста не было... »
ничего, лучше глянь, я не попутал If CurPageID=wpReady then begin и itd_downloadafter(wpInstalling);

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


Отправлено: 22:06, 22-04-2011 | #1415


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


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

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


R.i.m.s.k.y., Serega спасибо вам большое, а то б сам наверное никогда не допер что дело в этом) Кажется работает.

Отправлено: 22:19, 22-04-2011 | #1416


Ветеран


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

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


Цитата R.i.m.s.k.y.:
я не попутал If CurPageID=wpReady then begin и itd_downloadafter(wpInstalling); »
Да в принципе всё нормально, единственное я бы посадил эту проверку в function NextButtonClick, ну и в itd_downloadafter указал wpReady, чтоб загрузка доп. программ шла до установки основной программы.

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


Отправлено: 22:26, 22-04-2011 | #1417


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

Ветеран


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

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


Цитата MrAWP:
R.i.m.s.k.y., Serega спасибо вам большое, а то б сам наверное никогда не допер что дело в этом) Кажется работает. »
читай справку и будешь таким же крутым

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


Отправлено: 22:36, 22-04-2011 | #1418


Аватара для vovka1021

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


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

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


у ково есть свободное время помогите пожалуйста обьединить это

скрипт

[Files]
Source: "gifctrl.dll"; Flags: dontcopy solidbreak
Source: 0023.gif; Flags: dontcopy solidbreak

[code]
const
HALIGN_CENTER = 0;
HALIGN_LEFT = 1;
HALIGN_RIGHT = 2;
VALIGN_CENTER = 0;
VALIGN_TOP = 1;
VALIGN_BOTTOM = 2;
FIT_NONE = 0;
FIT_WIDTH = 1;
FIT_HEIGHT = 2;
FIT_BOTH = 3;
CLR_INVALID = $FFFFFFFF;

function NewGifbWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND; external 'newgifwnd@files:gifctrl.dll stdcall';
function FreeGifWnd(hWndGif: HWND): Boolean; external 'freegifwnd@files:gifctrl.dll stdcall';
function FreeAllGifWnd(): Boolean; external 'freeallgifwnd@files:gifctrl.dll stdcall';
function GifWndSetParent(hWndGif: HWND; hWndParent: HWND): Boolean; external 'gifwndsetparent@files:gifctrl.dll stdcall';
function GifWndSetBounds(hWndGif: HWND; X, Y, nWidth, nHeight: Integer): Boolean; external 'gifwndsetbounds@files:gifctrl.dll stdcall';
function GifWndLoadFromFile(hWndGif: HWND; HAlign, VAlign: Integer; BGColor: DWord; Fit: integer; GifFileName: PChar): Boolean; external 'gifwndloadfromfile@files:gifctrl.dll stdcall';

var
GifPanel: TPanel;
GIFHWND: HWND;

function InitializeSetup(): Boolean;
begin
GIFHWND := 0;
Result := True;
end;

procedure DeinitializeSetup();
begin
FreeAllGifWnd();
end;

procedure InitializeWizard();
var
GifFileName: String;
Lbl: TNewStaticText;
begin
ExtractTemporaryFile('0023.gif');

GIFHWND := NewGifbWnd(WizardForm.Handle, ScaleX(30), WizardForm.Bevel.Top + ScaleY(8), 88, 31);
GifWndLoadFromFile(GIFHWND, HALIGN_CENTER, VALIGN_CENTER, CLR_INVALID, FIT_NONE, ExpandConstant('{tmp}\0023.gif'));
Lbl := TNewStaticText.Create(WizardForm);
Lbl.Parent := WizardForm;
Lbl.AutoSize := False;
Lbl.SetBounds(ScaleX(30), WizardForm.Bevel.Top + ScaleY(8), 88, 31);
end;


с этим:

У меня не доходит как сделать првильно.

Большое спасибо!

Последний раз редактировалось vovka1021, 12-12-2011 в 13:17.


Отправлено: 23:52, 23-04-2011 | #1419


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


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

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


Serega, Сергей а покажи пример:
Цитата Serega:
Да в принципе всё нормально, единственное я бы посадил эту проверку в function NextButtonClick, ну и в itd_downloadafter указал wpReady, чтоб загрузка доп. программ шла до установки основной программы. »

Отправлено: 07:22, 24-04-2011 | #1420



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход