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

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

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

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


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

Отправлено: 19:06, 28-03-2013

 

Ветеран


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

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


Crazy Noise, вот самодостаточный пример. Единственный его минус, точнее два минуса: будет работать только, если всегда вводится один и тот же серийник, и второй минус - чувствительность к регистру букв в серийнике. Ну а принцип прост: если определенный серийный номер(серийник задается в константе) не найден, страница создается. В противном случае пропускается. Короче, если даже *.ini файл присутствует, но он пустой, или в нем указан другой серийник страница будет создана. Чтение строки из файла воспроизвел по мотивам примера от Johny777)
Пример
Код: Выделить весь код
[Code]
const
SERIAL_NUMBER = '1234-5678-ABCD-EFGH';

var
  SerialPage: TWizardPage;
  Block_1, Block_2, Block_3, Block_4: TNewEdit;
  sNumber, OldNumber: String;

function PreviousData(const SearchNumber: String): Boolean;
begin
  if OldNumber = '' then LoadStringFromFile(ExpandConstant('{userdocs}\GameEX\keysgame.ini'), OldNumber);
  Result := Pos(SearchNumber, OldNumber) > 0;
end;

procedure InitializeWizard();
begin
 SerialPage := CreateCustomPage(wpSelectTasks, 'Serial number', 'Please insert serial number');

  Block_1 := TNewEdit.Create(nil);
  with Block_1 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(96), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_2 := TNewEdit.Create(nil);
  with Block_2 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(152), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_3 := TNewEdit.Create(nil);
  with Block_3 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(208), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_4 := TNewEdit.Create(nil);
  with Block_4 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(265), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;
end;

function NextButtonClick(CurPageID:integer): Boolean;
begin
  case CurPageID of
    SerialPage.ID:
    begin
      CreateDir(ExpandConstant('{userdocs}\GameEX'));
      sNumber := ExpandConstant(Block_1.Text + '-' + Block_2.Text + '-' + Block_3.Text + '-' + Block_4.Text);
      SaveStringToFile(ExpandConstant('{userdocs}\GameEX\keysgame.ini'), sNumber, False);
    end;
  end;
  Result := True;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    SerialPage.ID: Result := PreviousData(SERIAL_NUMBER);
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 21-05-2013 | #511



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

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


Пользователь


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

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


Цитата saurn:
Единственный его минус, точнее два минуса: будет работать только, если всегда вводится один и тот же серийник, и второй минус - чувствительность к регистру букв в серийнике. »
Ну с этим проблем нет, точнее проверка присутствия ключа в файле *.ini не обязательна, т.к сам файл не может быть пустым в любом случае. Потому что файла либо нет совсем, либо есть но с серийным номером, по другому никак. Тут либо инсталлятор создаст серийный номер, либо при запуске игры/прогаммы запросит ввод ключа.
Тут может быть только одно, это проверка присутствия самого файла ini.

-------
Login: Crazy Noise; Copyright ©2013, Crazy Noise.


Отправлено: 17:48, 21-05-2013 | #512


Пользователь


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

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


Gnom_aka_Lexander, Пришёл домой и скачал с nanozip.net, но там нету скриптов... Где их взять ?

Отправлено: 18:43, 21-05-2013 | #513


Ветеран


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

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


Crazy Noise, ну если так, то можно ограничится только поиском файла. Изменил условие, плюс немного переделал скрипт. Получился короче. Но, опять таки же, не проверял)
Пример
Код: Выделить весь код
[CustomMessages]
MESSAGES_1=Ввод серийного номера
MESSAGES_2=Серийный номер нужен для активации программного обеспечения.
MESSAGES_3=Для активации необходимо ввести серийный номер поставляемый в комплекте с программным обеспечением.

[code]
var
  SerialPage: TWizardPage;
  Edits: array [1..4] of TEdit;
  I, E: Integer;
  SerialPage_Label: TNewStaticText;
  sNumber: String;

function EditsNumber(): string;
begin
  for I := 1 to 4 do
  begin
    sNumber :=  sNumber + Edits[i].Text + '-';
  end;
  sNumber := Copy(sNumber, 1, Length(sNumber) - 1);
  Result := sNumber;
end;

procedure InitializeWizard();
begin
  SerialPage := CreateCustomPage(wpSelectTasks, CustomMessage('MESSAGES_1'), CustomMessage('MESSAGES_2'));
  SerialPage_Label := TNewStaticText.Create(nil);
  with SerialPage_Label do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(28));
    WordWrap := True;
    Caption := CustomMessage('MESSAGES_3');
  end;
  
  E := ScaleX(73);

  for I := 1 to 4 do
  begin
    Edits[i]:= TEdit.Create(nil);
    with Edits[i] do
    begin
      Parent:= SerialPage.Surface;
      SetBounds(0 + (E*I), ScaleY(47), ScaleX(47), ScaleY(21));
      MaxLength:= 4;
    end;
  end;
end;

function NextButtonClick(CurPageID:integer): Boolean;
begin
  case CurPageID of
    SerialPage.ID:
    begin
      CreateDir(ExpandConstant('{userdocs}\GameEX'));
      SaveStringToFile(ExpandConstant('{userdocs}\GameEX\keysgame.ini'), EditsNumber, False);
    end;
  end;
  Result := True;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    SerialPage.ID: Result := FileExists(ExpandConstant('{userdocs}\GameEX\keysgame.ini'));
  end;
end;

Последний раз редактировалось saurn, 21-05-2013 в 19:29.

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

Отправлено: 18:53, 21-05-2013 | #514


Аватара для Gnom_aka_Lexander

Ветеран


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

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


by_gangster, а кто сказал, что там обязаны быть скрипты под инно? я-ж писал - с функциями exec думаю, разберешься без посторонней помощи? в справке к нанозипу однозначно есть пример распаковки командами.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 18:57, 21-05-2013 | #515


Пользователь


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

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


Gnom_aka_Lexander, Короче просто напросто подскажи как сжать игру размером 8.52 ГБ ? У меня сжимет только до 7.20 Гб

Отправлено: 19:57, 21-05-2013 | #516


Аватара для Mailchik

Пользователь


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

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


Цитата by_gangster:
Короче просто напросто подскажи как сжать игру размером 8.52 ГБ ? У меня сжимет только до 7.20 Гб »
Короче никак.
----------------------------------------------------------------------------------------------------
Цитата Aquila:
Здравствуйте. Моя трабла такова, хочу сделать установочник в котором хотел бы использовать несколько ключей установки, в частности для добавления в различные директории ярлыки программы, подскажите пожалуйста кто чем может. »
Накидал пример..
Если среди ключей запуска есть 'iGroup' - создаётся ярлык в меню пуск, 'iDesktop' - создаётся ярлык на рабочем столе, если оба ключа - создаются оба ярлыка.. Принцип думаю ясен.
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Icons]
Name: {group}\test; Filename: {srcexe}; WorkingDir: {src}; IconFilename: {srcexe}; Check: CheckParam('iGroup');
Name: {commondesktop}\test; Filename: {srcexe}; WorkingDir: {src}; IconFilename: {srcexe}; Check: CheckParam('iDesktop');

[Code]
function CheckParam(s: string): boolean;
var
 i: integer;
 begin
  for i := 0 to ParamCount do begin
   Result := ParamStr(i) = s;
   if Result then Break;
  end;
end;

Последний раз редактировалось Mailchik, 21-05-2013 в 21:19.

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

Отправлено: 20:01, 21-05-2013 | #517


Аватара для Aquila

Ветеран


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

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


Mailchik, А можно по подробнее? Например в командной строке какой ключ надо ввести чтобы создался ярлык на рабочем столе? Или это опять же через /LOADINF?

-------
На всех не угодишь!


Отправлено: 20:07, 21-05-2013 | #518


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Aquila:
какой ключ надо ввести чтобы создался ярлык на рабочем столе? »
Цитата Mailchik:
'iDesktop' - создаётся ярлык на рабочем столе »

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 20:14, 21-05-2013 | #519


Аватара для Mailchik

Пользователь


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

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


Aquila, setup.exe iDesktop - создастся ярлык на рабочем столе..
изучите код, который я выше написал.. в секции Icons идёт проверка на каждый ярлык. Для рабочего стола идёт Check: DesktopIcon;, для меню "Пуск" - Check: GroupIcon;
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:15, 21-05-2013 | #520



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход