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

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

 

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

Ветеран


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

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


SatHan,
Код: Выделить весь код
Function CheckRegGame1: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') then
Result:= True else Result := False;
end;

Function CheckRegGame2: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') then
Result:= True else Result := False;
end;

Function CheckRegGame3: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1') then
Result:= True else Result := False;
end;

Function InitializeSetup: Boolean;
Begin
if ( (not CheckRegGame1) and (not CheckRegGame2) and (not CheckRegGame3) ) then begin
MsgBox('на компьютере не найдено установлено игр', mbInformation, MB_OK);
Result := False;
end;
end;

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

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

Отправлено: 16:53, 06-09-2012 | #831



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

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


Аватара для SatHan

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


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

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


R.i.m.s.k.y., опять проблема. когда в системе ключи присутствуют то инсталятор не запускается. Как решить проблему?

Последний раз редактировалось SatHan, 06-09-2012 в 17:17.


Отправлено: 17:03, 06-09-2012 | #832


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

Ветеран


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

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


SatHan,
Код: Выделить весь код
Function InitializeSetup: Boolean;
Begin
Result := True;
if ( (not CheckRegGame1) and (not CheckRegGame2) and (not CheckRegGame3) ) then begin
MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK);
Result := False else Result := True;
end;

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

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

Отправлено: 17:13, 06-09-2012 | #833


Аватара для SatHan

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


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

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


R.i.m.s.k.y., на Result-е тот что идёт после MsgBox останавливается и выдаёт ошибку с сообщением identifier expected.

Отправлено: 17:25, 06-09-2012 | #834


Аватара для Johny777

Ветеран


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

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


Цитата R.i.m.s.k.y.:
я в таких случая тупо инициализирую в память на начальном шаге все нужные переменные, благо их немного »
Не совсем понял
они и так инициализируются при запуске или при работе процедуры
вот смотри
ты 10 раз открываешь файл с жёсткого диска чтоб взять из него значение (10 значений)
или открываешь 1 раз, пишешь все 10 значений в переменную массива и потом работаешь уже с переменной тк она в оперативке (в стеке кажись.)
а из оперативы брать быстрее в разы чем раскручивать жд

понимаешь зачем мне массив
до последнего времени я обходился простой GetIniString но это малость неразумно когда нужно считывать не 1 и не 2 знчения, а больше в разы

SatHan,
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[  Code]
Function CheckRegGame(nParam: Integer): Boolean;
begin
 case nParam of
    1: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1');
    2: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1');
    3: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1');
  else
    Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1')
  end;
end;


Function InitializeSetup: Boolean;
Begin
  if not CheckRegGame(0) then
  begin
    MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK);
    Result := False;
  end else
  Result := True;
end;

Последний раз редактировалось Johny777, 06-09-2012 в 17:55.

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

Отправлено: 17:42, 06-09-2012 | #835


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

Ветеран


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

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


Johny777, через getIniString я ручками получаю с десяток нужных мне переменных из инишника, заношу только не в аррэй а в десять переменных и с ними дальше работаю. Я вообще не понимаю целесообразности вопроса.

SatHan,
Код: Выделить весь код
[ Code]
Function CheckRegGame1: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') then
Result:= True else Result := False;
end;

Function CheckRegGame2: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') then
Result:= True else Result := False;
end;

Function CheckRegGame3: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1') then
Result:= True else Result := False;
end;

Function InitializeSetup: Boolean;
Begin
Result := True;
if ( (CheckRegGame1) and (CheckRegGame2) and (CheckRegGame3) ) then Result := True
else begin
MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK);
Result := false;
end;
end;
end.

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

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

Отправлено: 17:47, 06-09-2012 | #836


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


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

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


SatHan,
Ну скрыть компоненты не получится, тк в инно нет свойства ItemVisible, можно сделать так как вариант:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=Extende
AppVersion=1.0
AppVerName=Extende 1.0
DefaultDirName={pf}\Games
DefaultGroupName=Extende
AllowNoIcons=yes
OutputDir=.
OutputBaseFilename=ExtSetup
Compression=lzma
SolidCompression=yes

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

[Components]
Name: game_1; Description: Game_1; Flags: dontinheritcheck; Types: full
Name: game_2; Description: Game_2; Flags: dontinheritcheck; Types: full
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full

[_Code]
Function CheckRegGame1: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') then Result:= True;
end;

Function CheckRegGame2: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') then Result:= True;
end;

Function CheckRegGame3: Boolean;
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1') then Result:= True;
end;

procedure InitializeWizard;
begin
WizardForm.ComponentsList.Checked[0]:= CheckRegGame1;
WizardForm.ComponentsList.Checked[1]:= CheckRegGame2;
WizardForm.ComponentsList.Checked[2]:= CheckRegGame3;
WizardForm.ComponentsList.ItemEnabled[0]:= CheckRegGame1;
WizardForm.ComponentsList.ItemEnabled[1]:= CheckRegGame2;
WizardForm.ComponentsList.ItemEnabled[2]:= CheckRegGame3;
end;

Отправлено: 17:58, 06-09-2012 | #837


Аватара для Johny777

Ветеран


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

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


Цитата R.i.m.s.k.y.:
заношу только не в аррэй а в десять переменных и с ними дальше работаю »
не использую переменные
вот пример кода Run_Game_CheckBox.Checked := (GetIniString('MySettings', 'Run_Games', '', ExpandConstant('{src}\Selfish.ini')) = '1'); (скоро сам всё увидишь когда докачаешь )

Цитата R.i.m.s.k.y.:
Я вообще не понимаю целесообразности вопроса. »
повышение скорости работы путём сокращения ненужных действий
ненужное действие у меня выполняется двумя ини - 10 считываний вместо одного

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


[Components]
Name: game_1; Description: Game_1; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(1);
Name: game_2; Description: Game_2; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(3);
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full


[  Code]
Function CheckRegGame(nParam: Integer): Boolean;
begin
 case nParam of
    1: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1');
    2: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1');
    3: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1');
  else
    Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1')
  end;
end;

Последний раз редактировалось Johny777, 06-09-2012 в 18:08.

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

Отправлено: 17:59, 06-09-2012 | #838


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

Ветеран


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

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


Snoopak96, ты в этом ошибаешься, если в моем примере выше подчековая функция вернет фолсе то в списке компонентов соответствующей строчки не будет, проверь сам

Johny777, чуток осталось

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


Отправлено: 18:02, 06-09-2012 | #839


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


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

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


R.i.m.s.k.y., я про свойство ItemVisible, а у тебя строит компонент лист на ходу при старте, путаешь ты хотя и так тоже можно сделать.

Отправлено: 18:08, 06-09-2012 | #840



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




 
Переход