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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

Аватара для Habetdin


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


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

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


TEKTON, по аналогии с примером из поста #501 - #include не обязан быть в секциях, будь то [code] или [files] ;[

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 23:24, 27-07-2012 | #481



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

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


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


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

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


Ок.
Сейчас прописал в самом верху скрипта до секции [Setup]
Код: Выделить весь код
 #include "SYSTEST\SystemTest.iss"

[Setup]
...
Вылетает ошибка
Файл: C:\Documents and Settings\Desktop\INSTAL\SYSTEST\SystemTest.iss
Строка 76:
Column 37:
[ISPP] Undeclared identifier: "Processor".

Не хватает ему чего то.
Где его это взять и как подключить ?

Последний раз редактировалось TEKTON, 27-07-2012 в 23:44.


Отправлено: 23:37, 27-07-2012 | #482


Аватара для Habetdin


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


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

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


Цитата TEKTON:
[ISPP] Undeclared identifier: "Processor". »
Ему не хватает строк типа этого:
Код: Выделить весь код
#define System "Система"
#define Processor "Процессор"
#define VideoCard "Видеоадаптер"
#define Audio "Звуковая карта"
#define RamMemory "Объём памяти"
#define PageFile "Файл подкачки"
P.S.: 4 поста, начиная с #152

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 23:49, 27-07-2012 | #483


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


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

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


Смотрел я уже ту шляпу.
Парень бился бился с ошибками, потом ему втюхали какую то get_hw_caps.dll.
На этом всё и кончилось...

Можете нормальный пример сделать из двух скриптов?
Чтоб один подключался ко второму.

p.s. Я тоже рою нет, но пока чёткого и конкретного ответа не нашёл.

Отправлено: 00:26, 28-07-2012 | #484


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


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

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


Цитата TEKTON:
Парень бился бился с ошибками, потом ему втюхали какую то get_hw_caps.dll. »
это не какая-то get_hw_caps.dll! Авторы этой dll GSC Game World. Она используется в инсталлах сталкера, для проверки требований....
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 28-07-2012 | #485


Аватара для YURSHAT

Старожил


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

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


Цитата TEKTON:
Вылетает ошибка »
Потому как сначала нужно указать мин. требования, а потом уже скрипт подключать.

Код: Выделить весь код
#define System "Система"
#define Processor "Процессор"
#define VideoCard "Видеоадаптер"
#define Audio "Звуковая карта"
#define RamMemory "Объём памяти"
#define PageFile "Файл подкачки"

#include "SYSTEST\SystemTest.iss"

[Setup]
....

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов

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

Отправлено: 16:16, 28-07-2012 | #486


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


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

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


Цитата Yury_Prizrak:
первый вообще не понял (код-кусок для наглядности предоставь(если смогу понять - помогу), а то какие-то конфиги, формы...) »
Попробую более подробно. В устанавливаемой программе есть xml файл, который пользователь может менять в момент установки:
Код: Выделить весь код
var
  IsInit: Boolean;
  ZXBPage: TWizardPage;
  DBPage:  TWizardPage;


procedure InitializeWizard;
begin
  //  страничка подключения к базе данных
  DBPage := Db_CreatePage(wpSelectDir);
  //  страничка подключения
  ZXBPage := ZXB_CreatePage(DBPage.ID);

  IsInit := False;
end;


//  Инициализация страничек с настройками из конфигурационного файла.
procedure CurPageChanged(CurPageID: Integer);
var
  ConfigPath: String;
  XMLDoc, XMLNodeList, XMLNode, XMLAttributes, XMLAttrib: Variant;
  i: Integer;
begin
  //  проверка инициализированности параметров, для последующих заходов на страницы
  if IsInit then
    Exit;
  //  проверка ID страничек с параметрами
  if (not (CurPageID = DBPage.ID)) and (not (CurPageID = ZXBPage.ID)) then
    Exit;

  ConfigPath := ExpandConstant('{app}\111.exe.config');
  //  проверка наличия конфигурационного файла
  if not FileExists( ConfigPath ) then
  begin
    IsInit := True;
    Exit;
  end;

  //  загрузка конфигурационного файла
  XMLDoc := CreateOleObject('MSXML2.DOMDocument');
  XMLDoc.async := False;
  XMLDoc.resolveExternals := False;
  XMLDoc.load( ConfigPath );
  if XMLDoc.parseError.errorCode <> 0 then
    RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason);

  //  страничка подключения к базе данных
  //  поле 'Строка подключения к базе данных:'
  XMLNode := XMLDoc.selectSingleNode('//connectionStrings/add[@name="BankDb"]');
  if not VarIsEmpty(XMLNode) then
  begin
    XMLAttributes := XMLNode.attributes;
    XMLAttrib := XMLAttributes.getNamedItem('connectionString');
    ConnectionStringEdit.Text := XMLAttrib.text;
  end;

  IsInit := True;
end;


//  ConfigChange.
//  Изменение настроек в конфигурационном файле.
procedure ConfigChange();
var
  ConfigPath: String;
  XMLDoc, XMLNodeList, XMLNode, XMLAttributes, XMLAttrib: Variant;
  i: Integer;
begin
  ConfigPath := ExpandConstant('{app}\CreditLaw.exe.config');
  //  проверка наличия конфигурационного файла
  if not FileExists( ConfigPath ) then
    Exit;

  XMLDoc := CreateOleObject('MSXML2.DOMDocument');
  XMLDoc.async := False;
  XMLDoc.resolveExternals := False;
  XMLDoc.load( ConfigPath );
  if XMLDoc.parseError.errorCode <> 0 then
    RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason);

  //  поле 'Строка подключения к базе данных:' в секции connectionStrings
  XMLNode := XMLDoc.selectSingleNode('//connectionStrings/add[@name="BankDb"]');
  if not VarIsEmpty(XMLNode) then
  begin
    XMLAttributes := XMLNode.attributes;
    XMLAttrib := XMLAttributes.getNamedItem('connectionString');
    XMLAttrib.text := ConnectionStringEdit.Text;
  end;

  XMLDoc.Save( ConfigPath );
end;
И вроде как все хорошо и здорово. Но возникла необходимость не давать пользователю менять эти данные(т.е. прятать страницы DBPage и ZXBPage) если программа уже была установлена. При этом первый вариант тоже должен оставатся(это я уже сообразил как реализовать)ю Но если я прячу страницы тогда я не могу пользоватся переменными этих страниц (ConnectionStringEdit.Text например) т.е. если страница спрятана, в эту переменную не подтягивается значение из файла а ставится по умолчанию. Есть вариант ввести дополнительные внутренние переменные в код InnoSetup и записывать значения в них а после перезаписи конфиг. файла считывать из них:
Код: Выделить весь код
var
  IsInit: Boolean;
  ServiceString: String;
  //переменные для конфигурационного файла:
  ConnectBD: String;

procedure LoadConfigFileData();
var
  ConfigPath: String;
  XMLDoc, XMLNodeList, XMLNode, XMLAttributes, XMLAttrib: Variant;
  i: Integer;
begin
   //  загрузка конфигурационного файла
  XMLDoc := CreateOleObject('MSXML2.DOMDocument');
  XMLDoc.async := False;
  XMLDoc.resolveExternals := False;
  XMLDoc.load( ExpandConstant('{app}\Configuration\CvlServiceConfig.xml') );
  if XMLDoc.parseError.errorCode <> 0 then
    RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason);

  //  поле 'Строка подключения к базе данных:'
  XMLNode := XMLDoc.selectSingleNode('//DataBase');
  if not VarIsEmpty(XMLNode) then
  begin
    XMLAttributes := XMLNode.attributes;
    XMLAttrib := XMLAttributes.getNamedItem('ConnectionStringNoPass');
    ConnectBD := XMLAttrib.text;
  end;

   IsInit := False;

end;

procedure RecoveryConfigFile();
var
  ConfigPath: String;
  XMLDoc, XMLNodeList, XMLNode, XMLAttributes, XMLAttrib: Variant;
  i: Integer;
begin
  ConfigPath := ExpandConstant('{app}\Configuration\CvlServiceConfig.xml');
  //  проверка наличия конфигурационного файла
  if not FileExists( ConfigPath ) then
     Exit;

   //  загрузка конфигурационного файла
  XMLDoc := CreateOleObject('MSXML2.DOMDocument');
  XMLDoc.async := False;
  XMLDoc.resolveExternals := False;
  XMLDoc.load( ExpandConstant('{app}\Configuration\CvlServiceConfig.xml') );
  if XMLDoc.parseError.errorCode <> 0 then
    RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason);

   //  страничка подключения к базе данных
  //  поле 'Строка подключения к базе данных:'
  XMLNode := XMLDoc.selectSingleNode('//DataBase');
  if not VarIsEmpty(XMLNode) then
  begin
    XMLAttributes := XMLNode.attributes;
    XMLAttrib := XMLAttributes.getNamedItem('ConnectionStringNoPass');
    XMLAttrib.text := ConnectBD;
  end;
  XMLDoc.Save( ConfigPath );
end;
но есть одно но - у меня этих переменных штук этак дофига, и код становится очень нечитабельным и большим. Вот в этом и сложность

Отправлено: 13:09, 30-07-2012 | #487


Аватара для Mafioza

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


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

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


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

Отправлено: 14:43, 30-07-2012 | #488


Аватара для Johny777

Ветеран


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

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


Yury_Prizrak,
мне кажется тебе не хватает одной единственной логической переменной
сделай так
[code]
var
Installed: boolean;

function InitializeSetup(): Boolean;
begin
Installed := False;
проверяем есть ли ключ (код 2 страницы назад)
если есть Installed := True; и пошло по всему коду
end;

procedure InitializeWizard;
begin
if not Installed then создаём страницы. Короче всё, что должно делаться если не установлена
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if not Installed then тоже самое но для того что ты делаешь в переключении страниц
end;

итд

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

Отправлено: 18:27, 30-07-2012 | #489


Аватара для alert30

Ветеран


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

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


Mafioza, вроде в оригинальном компиляторе Inno Setup есть чекбокс "Создать ярлык на Рабочем столе"?

Отправлено: 18:56, 30-07-2012 | #490



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




 
Переход