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

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

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

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

Ветеран


Contributor


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


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

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


Snoopak96, извини, протупил

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

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

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



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

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


Аватара для Ivan_009

Ветеран


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

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


Вложения
Тип файла: 7z Скрипт.7z
(9.4 Kb, 7 просмотров)

Snoopak96, Вот глянь пожалуйста....

Отправлено: 19:43, 06-09-2012 | #842


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


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

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


Ivan_009, что этот, что тот что прислал в лс у меня всё нормально появляется пб в postinstall, версия инно у меня 5.5.1ee1 (a)

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


Аватара для SatHan

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


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

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


R.i.m.s.k.y., опять проблема теперь если один ключ в реестре есть а остальных нет то инсталл выдаёт "На компьютере не найдено установленых игр" а нужно чтоб выдавал это сообщение тогда когда вообще нет ключей в реестре.

Задача такая
Код: Выделить весь код
Присутствует в реестре Game_1 инсталл работает но скрыты Game_2 и Game_3

Присутствует в реестре Game_1 инсталл работает
Присутствует в реестре Game_2 инсталл работает но скрыт Game_3

Присутствует в реестре Game_1 инсталл работает
Присутствует в реестре Game_2 инсталл работает
Присутствует в реестре Game_3 инсталл работает
не важно в каком порядке.

Код: Выделить весь код
Отсутствует в реестре Game_1,  Game_2 и  Game_3 инсталл не запускается и выдаёт сообщение

Цитата Snoopak96:
Ну скрыть компоненты не получится »
не понял. а тада это что

читать дальше »
Код: Выделить весь код
[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; Check: CheckRegGame1
Name: game_2; Description: Game_2; Flags: dontinheritcheck; Types: full; Check: CheckRegGame2
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full; Check: CheckRegGame3

[Files]
Source: Game_1\*; DestDir: {app}\Game_1; Flags: ignoreversion recursesubdirs createallsubdirs; Components: game_1
Source: Game_2\*; DestDir: {app}\Game_2; Flags: ignoreversion recursesubdirs createallsubdirs; Components: game_2
Source: Game_3\*; DestDir: {app}\Game_3; Flags: ignoreversion recursesubdirs createallsubdirs; Components: game_3

[Icons]
Name: {group}\{cm:UninstallProgram,Extende}; Filename: {uninstallexe}

[#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;
ведь работает же, только осталось пара нюансов.

Цитата Snoopak96:
можно сделать так как вариант: »
интересный вариант, но не то.
Johny777, тоже не то.

Отправлено: 21:00, 06-09-2012 | #844


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


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

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


SatHan,
т.е. тоже не то?:
читать дальше »
Код: Выделить весь код
[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(2);
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(3);


[  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;
А по моему это тоже самое, что предлагает R.i.m.s.k.y., только упрощенно + автор Johny777 сделал не большую описку, что простительно.

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

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

Отправлено: 21:21, 06-09-2012 | #845


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


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

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


SatHan, вот в общем допилил код:
читать дальше »
Код: Выделить весь код
[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(2);
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(3);


[_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 CheckRegGame(1) or CheckRegGame(2) or CheckRegGame(3) then Result:=True else
  if MsgBox('На вашем компьютера не найдено ни одной игры.', mbConfirmation, MB_OK) = IDOK then Result:=False;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:56, 06-09-2012 | #846


Аватара для SatHan

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


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

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


Цитата Snoopak96:
т.е. тоже не то?: »
в том смысле
1. брался за один код а у Johny777 совсем другой (не понятный мне)
2. была та же проблема то есть " если один ключ в реестре есть а остальных нет то инсталл выдаёт "На компьютере не найдено установленых игр" а нужно чтоб выдавал это сообщение тогда когда вообще нет ключей в реестре."
теперь все как нада.

R.i.m.s.k.y., Johny777, Snoopak96, Спасибо вам что выручили.

Отправлено: 22:37, 06-09-2012 | #847


Аватара для SatHan

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


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

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


Ещё кое что. Как заставить NewStaticText1 который в TBevel-е вместо {pf}\Application отображать C:\Program Files\Application?

читать дальше »
Код: Выделить весь код
[Setup]
AppName=Application
AppVersion=1.0
DefaultDirName={pf}\Application
DefaultGroupName=Application
AllowNoIcons=yes
OutputDir=.

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

[#Code]
var
  ISCustomPage1: TWizardPage;
  Bevel2: TBevel;
  NewStaticText1: TNewStaticText;
  NewStaticText2: TNewStaticText;

procedure RedesignWizardForm;
begin
  ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');

  with ISCustomPage1.Surface do
  begin
    Name := 'ISCustomPage1';
  end;

  Bevel2 := TBevel.Create(WizardForm);
  with Bevel2 do
  begin
    Name := 'Bevel2';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(32);
    Top := ScaleY(32);
    Width := ScaleX(346);
    Height := ScaleY(186);
  end;

  NewStaticText1 := TNewStaticText.Create(WizardForm);
  with NewStaticText1 do
  begin
    Name := 'NewStaticText1';
    Parent := ISCustomPage1.Surface;
    Caption := 'Папака установки:';
    Left := ScaleX(56);
    Top := ScaleY(56);
    Width := ScaleX(98);
    Height := ScaleY(14);
  end;

  NewStaticText2 := TNewStaticText.Create(WizardForm);
  with NewStaticText2 do
  begin
    Name := 'NewStaticText2';
    Parent := ISCustomPage1.Surface;
    Caption := '{pf}\Application';
    Left := ScaleX(160);
    Top := ScaleY(56);
    Width := ScaleX(77);
    Height := ScaleY(14);
  end;

  NewStaticText1.TabOrder := 0;
  NewStaticText2.TabOrder := 1;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

Отправлено: 23:09, 06-09-2012 | #848


Аватара для Mailchik

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


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

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


SatHan,
Caption := ExpandConstant('{pf}\Application');
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:23, 06-09-2012 | #849


Аватара для Johny777

Ветеран


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

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


Snoopak96,
позволю себе заметить, что функция CheckRegGame рассчитана на отправку из себя булев значений компонентам и функции InitializeSetup
те если мы отправляем ей целое число 1 или 2 или 3 то она возвращает значение соответствующее существованию определённого ключа
если (else) значение не равно 1, 2, 3 то встроенная переменная Result возвращает значение соответствующее существованию всех 3-х ключей
те CheckRegGame(1) or CheckRegGame(2) or CheckRegGame(3) это всё нормуль, но нет смысла гонять функцию 3 раза
достаточно отправить ей например CheckRegGame(777)
SatHan,
замени у себя в коде
Код: Выделить весь код
function InitializeSetup:boolean;
begin
  if CheckRegGame(любое целое число кроме чисел 1, 2, 3) then Result:=True else
  if MsgBox('На вашем компьютера не найдено ни одной игры.', mbConfirmation, MB_OK) = IDOK then Result:=False;
end;
или, если хочешь оставь как было но удали лишний код:
Код: Выделить весь код
  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')
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:31, 07-09-2012 | #850



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




 
Переход